]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Added 'delete selected objects' functionality back.
[architektonas] / src / applicationwindow.cpp
index 2049a097ca354b54e69297fcbc48d91753b7d528..5a435a21ae3e6bfe8d82cffdf3408afaa9181f82 100644 (file)
@@ -47,6 +47,7 @@
 #include "painter.h"
 //#include "rotateaction.h"
 #include "settingsdialog.h"
+#include "structs.h"
 //#include "triangulateaction.h"
 //#include "trimaction.h"
 
@@ -105,7 +106,7 @@ ApplicationWindow::ApplicationWindow():
 void ApplicationWindow::closeEvent(QCloseEvent * event)
 {
        WriteSettings();
-       event->accept();                                                        // Use ignore() if can't close for some reason
+       event->accept();                // Use ignore() if can't close for some reason
        //Do we have a memory leak here if we don't delete the font in the Object???
 }
 
@@ -113,7 +114,6 @@ void ApplicationWindow::closeEvent(QCloseEvent * event)
 void ApplicationWindow::FileNew(void)
 {
        // Should warn the user if drawing hasn't been saved...
-//     drawing->document.Clear();
        drawing->document.objects.empty();
        drawing->update();
        documentName.clear();
@@ -232,20 +232,17 @@ void ApplicationWindow::FixLength(void)
 }
 
 
-// We want certain tools to be exclusive, and this approach isn't working correctly...
 void ApplicationWindow::DeleteTool(void)
 {
        // For this tool, we check first to see if anything is selected. If so, we
        // delete those and *don't* select the delete tool.
-#if 0
-       if (drawing->document.ItemsSelected() > 0)
+       if (drawing->numSelected > 0)
        {
-               drawing->document.DeleteSelectedItems();
+               drawing->DeleteSelectedItems();
                drawing->update();
                deleteAct->setChecked(false);
                return;
        }
-#endif
 
        // Otherwise, toggle the state of the tool
        ClearUIToolStatesExcept(deleteAct);
@@ -402,45 +399,23 @@ x 2 = (-426, -301)
 
 void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception)
 {
-       if (exception != addArcAct)
-               addArcAct->setChecked(false);
-
-       if (exception != addCircleAct)
-               addCircleAct->setChecked(false);
-
-       if (exception != addDimensionAct)
-               addDimensionAct->setChecked(false);
-
-       if (exception != addLineAct)
-               addLineAct->setChecked(false);
-
-       if (exception != addPolygonAct)
-               addPolygonAct->setChecked(false);
-
-       if (exception != addSplineAct)
-               addSplineAct->setChecked(false);
+       QAction * actionList[] = {
+               addArcAct, addLineAct, addCircleAct, addDimensionAct, addPolygonAct,
+               addSplineAct, deleteAct, rotateAct, mirrorAct, trimAct, triangulateAct, 0
+       };
 
-       if (exception != deleteAct)
-               deleteAct->setChecked(false);
-
-       if (exception != rotateAct)
-               rotateAct->setChecked(false);
-
-       if (exception != mirrorAct)
-               mirrorAct->setChecked(false);
-
-       if (exception != trimAct)
-               trimAct->setChecked(false);
-
-       if (exception != triangulateAct)
-               triangulateAct->setChecked(false);
+       for(int i=0; actionList[i]!=0; i++)
+       {
+               if (actionList[i] != exception)
+                       actionList[i]->setChecked(false);
+       }
 }
 
 
 void ApplicationWindow::SetInternalToolStates(void)
 {
-       Global::deleteActive = deleteAct->isChecked();
-       Global::dimensionActive = addDimensionAct->isChecked();
+//     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
@@ -465,6 +440,31 @@ void ApplicationWindow::SetInternalToolStates(void)
 
        if (drawing->toolAction)
                Global::ignoreClicks = true;
+#else
+       if (addLineAct->isChecked())
+               Global::tool = TTLine;
+       else if (addCircleAct->isChecked())
+               Global::tool = TTCircle;
+       else if (addArcAct->isChecked())
+               Global::tool = TTArc;
+       else if (addDimensionAct->isChecked())
+               Global::tool = TTDimension;
+       else if (addSplineAct->isChecked())
+               Global::tool = TTSpline;
+       else if (addPolygonAct->isChecked())
+               Global::tool = TTPolygon;
+       else if (deleteAct->isChecked())
+               Global::tool = TTDelete;
+       else if (mirrorAct->isChecked())
+               Global::tool = TTMirror;
+       else if (rotateAct->isChecked())
+               Global::tool = TTRotate;
+       else if (trimAct->isChecked())
+               Global::tool = TTTrim;
+       else if (triangulateAct->isChecked())
+               Global::tool = TTTriangulate;
+       else
+               Global::tool = TTNone;
 #endif
 
        drawing->update();