X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fapplicationwindow.cpp;h=8bbdbc1c5646c8c996fdf33244b0f0995f711fa7;hb=41644f6a841b45cb6f1f7a96c93fd550f67a7974;hp=47f8149634a40942d86940167bb6afbd7b1eed86;hpb=fce575a51ba1f26418869c20e63b9f388e118ab6;p=architektonas diff --git a/src/applicationwindow.cpp b/src/applicationwindow.cpp index 47f8149..8bbdbc1 100644 --- a/src/applicationwindow.cpp +++ b/src/applicationwindow.cpp @@ -31,7 +31,9 @@ #include #include "about.h" #include "blockwidget.h" +#include "commandprocessor.h" #include "consolewidget.h" +#include "drawingsettingsdlg.h" #include "drawingview.h" #include "fileio.h" #include "generaltab.h" @@ -80,7 +82,7 @@ ApplicationWindow::ApplicationWindow(): dock3->setWidget(ow); addDockWidget(Qt::RightDockWidgetArea, dock3); QDockWidget * dock4 = new QDockWidget(tr("Command"), this); - ConsoleWidget * cw = new ConsoleWidget; + cw = new ConsoleWidget; dock4->setWidget(cw); addDockWidget(Qt::BottomDockWidgetArea, dock4); @@ -108,6 +110,8 @@ ApplicationWindow::ApplicationWindow(): connect(drawing, SIGNAL(ObjectHovered(Object *)), ow, SLOT(ShowInfo(Object *))); connect(drawing, SIGNAL(NeedZoomUpdate()), this, SLOT(UpdateZoom())); + + connect(cw->cmdProc, SIGNAL(UpdateNeeded()), this, SLOT(UpdateFromCommand())); } void ApplicationWindow::closeEvent(QCloseEvent * event) @@ -153,7 +157,8 @@ void ApplicationWindow::FileNew(void) drawing->dirty = false; drawing->update(); documentName.clear(); - setWindowTitle("Architektonas - Untitled"); +// setWindowTitle("Architektonas - Untitled"); + setWindowFilePath(documentName); statusBar()->showMessage(tr("New drawing is ready.")); } @@ -361,6 +366,12 @@ void ApplicationWindow::MoveToLayer(void) drawing->update(); } +void ApplicationWindow::UpdateFromCommand(void) +{ + cw->SetToolPrompt(); + drawing->update(); +} + void ApplicationWindow::SnapToGridTool(void) { Global::snapToGrid = snapToGridAct->isChecked(); @@ -433,6 +444,7 @@ void ApplicationWindow::ParallelTool(void) { ClearUIToolStatesExcept(parallelAct); SetInternalToolStates(); + Global::toolSuppressCrosshair = true; } void ApplicationWindow::TriangulateTool(void) @@ -539,7 +551,7 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception) QAction * actionList[] = { addArcAct, addLineAct, addCircleAct, addDimensionAct, addPolygonAct, addSplineAct, deleteAct, rotateAct, mirrorAct, trimAct, - triangulateAct, 0 + triangulateAct, parallelAct, 0 }; for(int i=0; actionList[i]!=0; i++) @@ -585,6 +597,7 @@ void ApplicationWindow::SetInternalToolStates(void) else Global::tool = TTNone; + cw->SetToolPrompt(); drawing->update(); } @@ -606,6 +619,25 @@ void ApplicationWindow::Settings(void) WriteSettings(); } +void ApplicationWindow::DrawingSettings(void) +{ + DrawingSettingsDlg dlg(this); + dlg.baseUnit->setCurrentIndex(drawing->document.baseUnit); + dlg.unitStyle->setCurrentIndex(drawing->document.unitStyle); + dlg.decimalPrecision->setCurrentIndex(drawing->document.decimalPrecision); + dlg.fractionalPrecision->setCurrentIndex(drawing->document.fractionalPrecision); + + if (dlg.exec() == false) + return; + + // Deal with stuff here (since user hit "OK" button...) + drawing->document.baseUnit = dlg.baseUnit->currentIndex(); + drawing->document.unitStyle = dlg.unitStyle->currentIndex(); + drawing->document.decimalPrecision= dlg.decimalPrecision->currentIndex(); + drawing->document.fractionalPrecision = dlg.fractionalPrecision->currentIndex(); + drawing->update(); +} + // // Group a bunch of selected objects (which can include other groups) together // or ungroup a selected group. @@ -892,6 +924,9 @@ void ApplicationWindow::CreateActions(void) settingsAct = CreateAction(tr("&Settings"), tr("Settings"), tr("Change certain defaults for Architektonas."), QIcon(":/res/settings.png"), QKeySequence()); connect(settingsAct, SIGNAL(triggered()), this, SLOT(Settings())); + drawingSettingsAct = CreateAction(tr("&Drawing Settings"), tr("Drawing settings"), tr("Change certain defaults for the current drawing."), QIcon(":/res/settings.png"), QKeySequence()); + connect(drawingSettingsAct, SIGNAL(triggered()), this, SLOT(DrawingSettings())); + groupAct = CreateAction(tr("&Group"), tr("Group"), tr("Group/ungroup selected objects."), QIcon(":/res/group-tool.png"), QKeySequence("g")); connect(groupAct, SIGNAL(triggered()), this, SLOT(HandleGrouping())); @@ -907,7 +942,7 @@ void ApplicationWindow::CreateActions(void) trimAct = CreateAction(tr("&Trim"), tr("Trim"), tr("Trim extraneous lines from selected objects."), QIcon(":/res/trim-tool.png"), QKeySequence("t,r"), true); connect(trimAct, SIGNAL(triggered()), this, SLOT(TrimTool())); - parallelAct = CreateAction(tr("&Parallel"), tr("Parallel"), tr("Create copies of objects parallel to the original."), QIcon(":/res/parallel-tool.png"), QKeySequence("p,a"), true); + parallelAct = CreateAction(tr("&Parallel"), tr("Parallel"), tr("Create copies of objects parallel to the original."), QIcon(":/res/parallel-tool.png"), QKeySequence("p,l"), true); connect(parallelAct, SIGNAL(triggered()), this, SLOT(ParallelTool())); triangulateAct = CreateAction(tr("&Triangulate"), tr("Triangulate"), tr("Make triangles from selected lines, preserving their lengths."), QIcon(":/res/triangulate-tool.png"), QKeySequence("t,g"), true); @@ -1032,6 +1067,7 @@ void ApplicationWindow::CreateMenus(void) menu->addAction(addSplineAct); menu->addAction(addDimensionAct); menu->addSeparator(); + menu->addAction(drawingSettingsAct); menu->addAction(settingsAct); menu = menuBar()->addMenu(tr("&Help")); @@ -1095,9 +1131,6 @@ void ApplicationWindow::CreateToolbars(void) toolbar->setObjectName(tr("Pen")); toolbar->addWidget(pw); connect(drawing, SIGNAL(ObjectSelected(Object *)), pw, SLOT(SetFields(Object *))); - connect(pw, SIGNAL(WidthSelected(float)), drawing, SLOT(HandlePenWidth(float))); - connect(pw, SIGNAL(StyleSelected(int)), drawing, SLOT(HandlePenStyle(int))); - connect(pw, SIGNAL(ColorSelected(uint32_t)), drawing, SLOT(HandlePenColor(uint32_t))); connect(pw->tbStamp, SIGNAL(triggered(QAction *)), drawing, SLOT(HandlePenStamp(QAction *))); connect(pw->tbDropper, SIGNAL(triggered(QAction *)), drawing, SLOT(HandlePenDropper(QAction *))); }