]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Layer handling code mostly done; still need to handle layer locking.
[architektonas] / src / applicationwindow.cpp
index f5013ad8ae940bf714003b4d4e8e1d7f699bde5b..ac4122da777394a32d15ff908afd487ac88bb682 100644 (file)
 
 #include "about.h"
 #include "blockwidget.h"
-//#include "dimension.h"
 #include "drawingview.h"
-//#include "drawarcaction.h"
-//#include "drawcircleaction.h"
-//#include "drawdimensionaction.h"
-//#include "drawlineaction.h"
-//#include "drawsplineaction.h"
 #include "fileio.h"
 #include "generaltab.h"
-//#include "geometry.h"
 #include "global.h"
 #include "layerwidget.h"
-//#include "line.h"
-//#include "mirroraction.h"
 #include "painter.h"
-//#include "rotateaction.h"
 #include "settingsdialog.h"
 #include "structs.h"
-//#include "triangulateaction.h"
-//#include "trimaction.h"
+#include "utils.h"
 
 
 // Class variables
@@ -100,6 +89,9 @@ ApplicationWindow::ApplicationWindow():
        Global::font =  new QFont("Verdana", 15, QFont::Bold);
 
        connect(lw, SIGNAL(LayerSelected(int)), drawing, SLOT(SetCurrentLayer(int)));
+       connect(lw, SIGNAL(LayerDeleted(int)), drawing, SLOT(DeleteCurrentLayer(int)));
+       connect(lw, SIGNAL(LayerToggled()), drawing, SLOT(HandleLayerToggle()));
+       connect(lw, SIGNAL(LayersSwapped(int, int)), drawing, SLOT(HandleLayerSwap(int, int)));
 }
 
 
@@ -238,7 +230,8 @@ void ApplicationWindow::DeleteTool(void)
        // delete those and *don't* select the delete tool.
        if (drawing->numSelected > 0)
        {
-               drawing->DeleteSelectedItems();
+//             drawing->DeleteSelectedItems();
+               DeleteSelectedObjects(drawing->document.objects);
                drawing->update();
                deleteAct->setChecked(false);
                return;
@@ -260,6 +253,11 @@ void ApplicationWindow::DimensionTool(void)
 void ApplicationWindow::RotateTool(void)
 {
        ClearUIToolStatesExcept(rotateAct);
+
+       // Do tear-down if Rotate tool has been turned off
+       if (!rotateAct->isChecked())
+               drawing->RotateHandler(ToolCleanup, Point(0, 0));
+
        SetInternalToolStates();
 }
 
@@ -267,6 +265,11 @@ void ApplicationWindow::RotateTool(void)
 void ApplicationWindow::MirrorTool(void)
 {
        ClearUIToolStatesExcept(mirrorAct);
+
+       // Do tear-down if Rotate tool has been turned off
+       if (!mirrorAct->isChecked())
+               drawing->MirrorHandler(ToolCleanup, Point(0, 0));
+
        SetInternalToolStates();
 }
 
@@ -414,33 +417,11 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception)
 
 void ApplicationWindow::SetInternalToolStates(void)
 {
-//     Global::deleteActive = deleteAct->isChecked();
-//     Global::dimensionActive = addDimensionAct->isChecked();
-
        // We can be sure that if we've come here, then either an active tool is
        // being deactivated, or a new tool is being created. In either case, the
        // old tool needs to be deleted.
-#if 0
-       if (drawing->toolAction)
-       {
-               delete drawing->toolAction;
-               drawing->toolAction = NULL;
-               Global::ignoreClicks = false;
-       }
+       Global::toolState = TSNone;
 
-       drawing->SetToolActive(addLineAct->isChecked() ? new DrawLineAction() : NULL);
-       drawing->SetToolActive(addCircleAct->isChecked() ? new DrawCircleAction() : NULL);
-       drawing->SetToolActive(addArcAct->isChecked() ? new DrawArcAction() : NULL);
-       drawing->SetToolActive(addDimensionAct->isChecked() ? new DrawDimensionAction() : NULL);
-       drawing->SetToolActive(addSplineAct->isChecked() ? new DrawSplineAction() : NULL);
-       drawing->SetToolActive(mirrorAct->isChecked() ? new MirrorAction() : NULL);
-       drawing->SetToolActive(rotateAct->isChecked() ? new RotateAction() : NULL);
-       drawing->SetToolActive(trimAct->isChecked() ? new TrimAction() : NULL);
-       drawing->SetToolActive(triangulateAct->isChecked() ? new TriangulateAction() : NULL);
-
-       if (drawing->toolAction)
-               Global::ignoreClicks = true;
-#else
        if (addLineAct->isChecked())
                Global::tool = TTLine;
        else if (addCircleAct->isChecked())
@@ -465,7 +446,6 @@ void ApplicationWindow::SetInternalToolStates(void)
                Global::tool = TTTriangulate;
        else
                Global::tool = TTNone;
-#endif
 
        drawing->update();
 }