]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Tool for adding Lines works now.
[architektonas] / src / applicationwindow.cpp
index 06ec68ce89a6ad4857843b53f53fc13e53320a8b..866750d82fc8dce1326ff8b007be6bf8045a80fd 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);
@@ -344,15 +341,15 @@ when zooming in, new origin will be (xCenter - origin.x) / 2, (yCenter - origin.
 //printf("Zoom in... Center=%.2f,%.2f; ", center.x, center.y);
        center = Painter::QtToCartesianCoords(center);
 //printf("(%.2f,%.2f); origin=%.2f,%.2f; ", center.x, center.y, Painter::origin.x, Painter::origin.y);
-       Vector newOrigin = center - ((center - Painter::origin) / zoomFactor);
+       Vector newOrigin = center - ((center - Global::origin) / zoomFactor);
 //printf("newOrigin=%.2f,%.2f;\n", newOrigin.x, newOrigin.y);
-       Painter::origin = newOrigin;
+       Global::origin = newOrigin;
 
 //printf("Zoom in... level going from %02f to ", Painter::zoom);
        // This just zooms leaving origin intact... should zoom in at the current
        // center! [DONE]
-       Painter::zoom *= zoomFactor;
-       Global::gridSpacing = drawing->gridPixels / Painter::zoom;
+       Global::zoom *= zoomFactor;
+       Global::gridSpacing = drawing->gridPixels / Global::zoom;
        drawing->UpdateGridBackground();
        drawing->update();
 
@@ -384,14 +381,14 @@ x 2 = (-426, -301)
 //printf("(%.2f,%.2f); origin=%.2f,%.2f; ", center.x, center.y, Painter::origin.x, Painter::origin.y);
 //     Vector newOrigin = (center - Painter::origin) * zoomFactor;
 //     Vector newOrigin = center - (Painter::origin * zoomFactor);
-       Vector newOrigin = center + ((Painter::origin - center) * zoomFactor);
+       Vector newOrigin = center + ((Global::origin - center) * zoomFactor);
 //printf("newOrigin=%.2f,%.2f;\n", newOrigin.x, newOrigin.y);
-       Painter::origin = newOrigin;
+       Global::origin = newOrigin;
 //printf("Zoom out...\n");
        // This just zooms leaving origin intact... should zoom out at the current
        // center! [DONE]
-       Painter::zoom /= zoomFactor;
-       Global::gridSpacing = drawing->gridPixels / Painter::zoom;
+       Global::zoom /= zoomFactor;
+       Global::gridSpacing = drawing->gridPixels / Global::zoom;
        drawing->UpdateGridBackground();
        drawing->update();
 
@@ -402,49 +399,28 @@ 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
        // old tool needs to be deleted.
+       Global::toolState = TSNone;
 #if 0
        if (drawing->toolAction)
        {
@@ -465,6 +441,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();
@@ -546,6 +547,7 @@ else
                container->state = OSSelected;
                statusBar()->showMessage(QString(tr("Grouped %1 objects.")).arg(itemsSelected));
        }
+#else
 #endif
 
        drawing->update();
@@ -617,6 +619,7 @@ printf("   -> intersects = %i, t=%lf, u=%lf\n", intersects, t, u);
                        }
                }
        }
+#else
 #endif
 }
 
@@ -646,7 +649,7 @@ void ApplicationWindow::HandleGridSizeInBaseUnits(QString text)
 //     drawing->gridSpacing = value;
 //     Painter::zoom = drawing->gridPixels / drawing->gridSpacing;
        Global::gridSpacing = value;
-       Painter::zoom = drawing->gridPixels / Global::gridSpacing;
+       Global::zoom = drawing->gridPixels / Global::gridSpacing;
        drawing->UpdateGridBackground();
        drawing->update();
 }