]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Added Settings dialog.
[architektonas] / src / applicationwindow.cpp
index 99092d1abd8664db7f374b44de961eca72741f99..fe0c29db9fd1e2696e91266b40411f0071c3cbad 100644 (file)
 
 #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"));
@@ -127,6 +85,39 @@ void ApplicationWindow::FixLength(void)
        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."),
@@ -140,6 +131,45 @@ void ApplicationWindow::CreateActions(void)
        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);//*/
 }
 
 //
@@ -179,16 +209,28 @@ QAction * ApplicationWindow::CreateAction2(QString name, QString tooltip, QStrin
 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);
@@ -196,8 +238,8 @@ void ApplicationWindow::CreateMenus(void)
 
 //     menuBar()->addSeparator();
 
-//     helpMenu = menuBar()->addMenu(tr("&Help"));
-//     helpMenu->addAction(aboutAct);
+       menu = menuBar()->addMenu(tr("&Help"));
+       menu->addAction(aboutAct);
 //     helpMenu->addAction(aboutQtAct);
 }
 
@@ -209,12 +251,19 @@ void ApplicationWindow::CreateToolbars(void)
        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();
@@ -227,6 +276,7 @@ void ApplicationWindow::WriteSettings(void)
 {
        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());
 }