X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fapplicationwindow.cpp;h=fe0c29db9fd1e2696e91266b40411f0071c3cbad;hb=344e2456de66d38ce7afb86604e0fa714fa95006;hp=99092d1abd8664db7f374b44de961eca72741f99;hpb=9f6ad3fe0b9cb30115a5d38e8af3aebed0d70c08;p=architektonas diff --git a/src/applicationwindow.cpp b/src/applicationwindow.cpp index 99092d1..fe0c29d 100644 --- a/src/applicationwindow.cpp +++ b/src/applicationwindow.cpp @@ -26,70 +26,28 @@ #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()); }