X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fapplicationwindow.cpp;h=fe0c29db9fd1e2696e91266b40411f0071c3cbad;hb=344e2456de66d38ce7afb86604e0fa714fa95006;hp=b156d15fa90ab926f2ea92098b380b9beef57fa1;hpb=fa8da664bfb749497b1b2d2991077af0554cc369;p=architektonas diff --git a/src/applicationwindow.cpp b/src/applicationwindow.cpp index b156d15..fe0c29d 100644 --- a/src/applicationwindow.cpp +++ b/src/applicationwindow.cpp @@ -26,14 +26,20 @@ #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); setWindowIcon(QIcon(":/res/atns-icon.png")); @@ -84,6 +90,34 @@ 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."), @@ -101,13 +135,41 @@ void ApplicationWindow::CreateActions(void) 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/generic-tool.png"), QKeySequence()); + 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())); - addLineAct = CreateAction(tr("Add &Line"), tr("Add Line"), tr("Adds a line to the drawing."), QIcon(":/res/generic-tool.png"), QKeySequence()); + fileNewAct = CreateAction(tr("&New Drawing"), tr("New Drawing"), tr("Creates a new drawing."), QIcon(":/res/generic-tool.png"), QKeySequence(tr("Ctrl+n"))); - addCircleAct = CreateAction(tr("Add &Circle"), tr("Add Circle"), tr("Adds a circle to the drawing."), QIcon(":/res/generic-tool.png"), QKeySequence()); + 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"))); - addArcAct = CreateAction(tr("Add &Arc"), tr("Add Arc"), tr("Adds an arc to the drawing."), QIcon(":/res/generic-tool.png"), QKeySequence()); + 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);//*/ } // @@ -147,16 +209,18 @@ 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(); @@ -164,6 +228,8 @@ void ApplicationWindow::CreateMenus(void) menu->addAction(addCircleAct); menu->addAction(addArcAct); menu->addAction(addDimensionAct); + menu->addSeparator(); + menu->addAction(settingsAct); // editMenu = menuBar()->addMenu(tr("&Edit")); // editMenu->addAction(cutAct); @@ -172,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); } @@ -185,6 +251,7 @@ 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); @@ -196,6 +263,7 @@ 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(); @@ -208,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()); }