#include "applicationwindow.h"
+#include "about.h"
#include "drawingview.h"
+#include "settingsdialog.h"
+#include "generaltab.h"
ApplicationWindow::ApplicationWindow(): settings("Underground Software", "Architektonas")
{
drawing = new DrawingView(this);
+ drawing->setMouseTracking(true); // We want *all* mouse events...!
setCentralWidget(drawing);
+ aboutWin = new AboutWindow(this);
+
// ((TTEdit *)qApp)->charWnd = new CharWindow(this);
-// editWnd = new EditWindow(this);
-// setCentralWidget(editWnd);
+
setWindowIcon(QIcon(":/res/atns-icon.png"));
setWindowTitle("Architektonas");
CreateActions();
CreateMenus();
CreateToolbars();
-#if 0
-// createActions();
- newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
- newAct->setShortcuts(QKeySequence::New);
- newAct->setStatusTip(tr("Create a new file"));
- connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
-
- openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
- openAct->setShortcuts(QKeySequence::Open);
- openAct->setStatusTip(tr("Open an existing file"));
- connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
-
- aboutQtAct = new QAction(tr("About &Qt"), this);
- aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
- connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
-
-// createMenus();
- fileMenu = menuBar()->addMenu(tr("&File"));
- fileMenu->addAction(newAct);
- fileMenu->addAction(openAct);
- fileMenu->addAction(saveAct);
- fileMenu->addAction(saveAsAct);
- fileMenu->addSeparator();
- fileMenu->addAction(exitAct);
-
- editMenu = menuBar()->addMenu(tr("&Edit"));
- editMenu->addAction(cutAct);
- editMenu->addAction(copyAct);
- editMenu->addAction(pasteAct);
-
- menuBar()->addSeparator();
-
- helpMenu = menuBar()->addMenu(tr("&Help"));
- helpMenu->addAction(aboutAct);
- helpMenu->addAction(aboutQtAct);
-
-// createToolBars();
- fileToolBar = addToolBar(tr("File"));
- fileToolBar->addAction(newAct);
- fileToolBar->addAction(openAct);
- fileToolBar->addAction(saveAct);
-
- editToolBar = addToolBar(tr("Edit"));
- editToolBar->addAction(cutAct);
- editToolBar->addAction(copyAct);
- editToolBar->addAction(pasteAct);
-#endif
// Create status bar
statusBar()->showMessage(tr("Ready"));
Object::SetFixedLength(fixLengthAct->isChecked());
}
+void ApplicationWindow::DeleteTool(void)
+{
+ Object::SetDeleteActive(deleteAct->isChecked());
+}
+
+void ApplicationWindow::DimensionTool(void)
+{
+ Object::SetDimensionActive(addDimensionAct->isChecked());
+}
+
+void ApplicationWindow::RotateTool(void)
+{
+ drawing->SetRotateToolActive(rotateAct->isChecked());
+}
+
+void ApplicationWindow::HelpAbout(void)
+{
+ aboutWin->show();
+}
+
+void ApplicationWindow::Settings(void)
+{
+ SettingsDialog dlg(this);
+ dlg.generalTab->antialiasChk->setChecked(drawing->useAntialiasing);
+
+ if (dlg.exec() == false)
+ return;
+
+ // Deal with stuff here (since user hit "OK" button...)
+ drawing->useAntialiasing = dlg.generalTab->antialiasChk->isChecked();
+ WriteSettings();
+}
+
void ApplicationWindow::CreateActions(void)
{
exitAct = CreateAction(tr("&Quit"), tr("Quit"), tr("Exits the application."),
fixLengthAct = CreateAction(tr("Fix &Length"), tr("Fix Length"), tr("Fixes the length of an object."),
QIcon(":/res/fix-length.png"), QKeySequence(tr("F,L")), true);
connect(fixLengthAct, SIGNAL(triggered()), this, SLOT(FixLength()));
+
+ deleteAct = CreateAction(tr("&Delete"), tr("Delete Object"), tr("Deletes selected objects."), QIcon(":/res/generic-tool.png"), QKeySequence(), true);
+ connect(deleteAct, SIGNAL(triggered()), this, SLOT(DeleteTool()));
+
+ addDimensionAct = CreateAction(tr("Add &Dimension"), tr("Add Dimension"), tr("Adds a dimension to the drawing."), QIcon(":/res/dimension-tool.png"), QKeySequence("D,I"), true);
+ connect(addDimensionAct, SIGNAL(triggered()), this, SLOT(DimensionTool()));
+
+ addLineAct = CreateAction(tr("Add &Line"), tr("Add Line"), tr("Adds a line to the drawing."), QIcon(":/res/generic-tool.png"), QKeySequence(), true);
+
+ addCircleAct = CreateAction(tr("Add &Circle"), tr("Add Circle"), tr("Adds a circle to the drawing."), QIcon(":/res/generic-tool.png"), QKeySequence(), true);
+
+ addArcAct = CreateAction(tr("Add &Arc"), tr("Add Arc"), tr("Adds an arc to the drawing."), QIcon(":/res/generic-tool.png"), QKeySequence(), true);
+
+ aboutAct = CreateAction(tr("About &Architektonas"), tr("About Architektonas"), tr("Gives information about this program."), QIcon(":/res/generic-tool.png"), QKeySequence());
+ connect(aboutAct, SIGNAL(triggered()), this, SLOT(HelpAbout()));
+
+ rotateAct = CreateAction(tr("&Rotate Objects"), tr("Rotate"), tr("Rotate object(s) around an arbitrary center."), QIcon(":/res/generic-tool.png"), QKeySequence(tr("R,O")), true);
+ connect(rotateAct, SIGNAL(triggered()), this, SLOT(RotateTool()));
+
+ fileNewAct = CreateAction(tr("&New Drawing"), tr("New Drawing"), tr("Creates a new drawing."), QIcon(":/res/generic-tool.png"), QKeySequence(tr("Ctrl+n")));
+
+ fileOpenAct = CreateAction(tr("&Open Drawing"), tr("Open Drawing"), tr("Opens an existing drawing from a file."), QIcon(":/res/generic-tool.png"), QKeySequence(tr("Ctrl+o")));
+
+ fileSaveAct = CreateAction(tr("&Save Drawing"), tr("Save Drawing"), tr("Saves the current drawing to a file."), QIcon(":/res/generic-tool.png"), QKeySequence(tr("Ctrl+s")));
+
+ fileSaveAsAct = CreateAction(tr("Save Drawing &As"), tr("Save As"), tr("Saves the current drawing to a file with a different name."), QIcon(":/res/generic-tool.png"), QKeySequence(tr("Ctrl+Shift+s")));
+
+ fileCloseAct = CreateAction(tr("&Close Drawing"), tr("Close Drawing"), tr("Closes the current drawing."), QIcon(":/res/generic-tool.png"), QKeySequence(tr("Ctrl+w")));
+
+ settingsAct = CreateAction(tr("&Settings"), tr("Settings"), tr("Change certain defaults for Architektonas."), QIcon(":/res/generic-tool.png"), QKeySequence());
+ connect(settingsAct, SIGNAL(triggered()), this, SLOT(Settings()));
+
+//Hm. I think we'll have to have separate logic to do the "Radio Group Toolbar" thing...
+/* QActionGroup * group = new QActionGroup(this);
+ group->addAction(deleteAct);
+ group->addAction(addDimensionAct);
+ group->addAction(addLineAct);
+ group->addAction(addCircleAct);
+ group->addAction(addArcAct);//*/
}
//
void ApplicationWindow::CreateMenus(void)
{
QMenu * menu = menuBar()->addMenu(tr("&File"));
-// fileMenu->addAction(newAct);
-// fileMenu->addAction(openAct);
-// fileMenu->addAction(saveAct);
-// fileMenu->addAction(saveAsAct);
-// fileMenu->addSeparator();
+ menu->addAction(fileNewAct);
+ menu->addAction(fileOpenAct);
+ menu->addAction(fileSaveAct);
+ menu->addAction(fileSaveAsAct);
+ menu->addAction(fileCloseAct);
+ menu->addSeparator();
menu->addAction(exitAct);
menu = menuBar()->addMenu(tr("&Edit"));
menu->addAction(fixAngleAct);
menu->addAction(fixLengthAct);
+ menu->addAction(rotateAct);
+ menu->addSeparator();
+ menu->addAction(deleteAct);
+ menu->addSeparator();
+ menu->addAction(addLineAct);
+ menu->addAction(addCircleAct);
+ menu->addAction(addArcAct);
+ menu->addAction(addDimensionAct);
+ menu->addSeparator();
+ menu->addAction(settingsAct);
+
// editMenu = menuBar()->addMenu(tr("&Edit"));
// editMenu->addAction(cutAct);
// editMenu->addAction(copyAct);
// menuBar()->addSeparator();
-// helpMenu = menuBar()->addMenu(tr("&Help"));
-// helpMenu->addAction(aboutAct);
+ menu = menuBar()->addMenu(tr("&Help"));
+ menu->addAction(aboutAct);
// helpMenu->addAction(aboutQtAct);
}
toolbar = addToolBar(tr("Edit"));
toolbar->addAction(fixAngleAct);
toolbar->addAction(fixLengthAct);
+ toolbar->addAction(rotateAct);
+ toolbar->addAction(deleteAct);
+ toolbar->addAction(addLineAct);
+ toolbar->addAction(addCircleAct);
+ toolbar->addAction(addArcAct);
+ toolbar->addAction(addDimensionAct);
}
void ApplicationWindow::ReadSettings(void)
{
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
QSize size = settings.value("size", QSize(400, 400)).toSize();
+ drawing->useAntialiasing = settings.value("useAntialiasing", true).toBool();
resize(size);
move(pos);
// pos = settings.value("charWndPos", QPoint(0, 0)).toPoint();
{
settings.setValue("pos", pos());
settings.setValue("size", size());
+ settings.setValue("useAntialiasing", drawing->useAntialiasing);
// settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
// settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
}