]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Fix incorrect object naming, keep hidden layers hidden when printing.
[architektonas] / src / applicationwindow.cpp
index 47f8149634a40942d86940167bb6afbd7b1eed86..56b9735a70139d879ff9568cbe00a1bf27a7401e 100644 (file)
@@ -31,7 +31,9 @@
 #include <QPrintPreviewDialog>
 #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."));
 }
 
@@ -313,7 +318,10 @@ void ApplicationWindow::HandlePrintRequest(QPrinter * printer)
 
        // Do object rendering...
        for(int i=0; i<Global::numLayers; i++)
-               drawing->RenderObjects(&painter, drawing->document.objects, i);
+       {
+               if (Global::layerHidden[i] == false)
+                       drawing->RenderObjects(&painter, drawing->document.objects, i);
+       }
 
        // Restore vars
        Global::origin = originSave;
@@ -361,6 +369,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 +447,7 @@ void ApplicationWindow::ParallelTool(void)
 {
        ClearUIToolStatesExcept(parallelAct);
        SetInternalToolStates();
+       Global::toolSuppressCrosshair = true;
 }
 
 void ApplicationWindow::TriangulateTool(void)
@@ -539,7 +554,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 +600,7 @@ void ApplicationWindow::SetInternalToolStates(void)
        else
                Global::tool = TTNone;
 
+       cw->SetToolPrompt();
        drawing->update();
 }
 
@@ -606,6 +622,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 +927,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 +945,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 +1070,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 +1134,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 *)));
 }
@@ -1107,7 +1143,8 @@ 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();
-       snapToGridAct->setChecked(settings.value("snapToGrid", true).toBool());
+       Global::snapToGrid = settings.value("snapToGrid", true).toBool();
+       snapToGridAct->setChecked(Global::snapToGrid);
        resize(size);
        move(pos);
        restoreState(settings.value("windowState").toByteArray());