#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 "triangulateaction.h"
-//#include "trimaction.h"
+#include "structs.h"
+#include "utils.h"
// Class variables
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???
}
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();
}
-// 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();
+ DeleteSelectedObjects(drawing->document.objects);
drawing->update();
deleteAct->setChecked(false);
return;
}
-#endif
// Otherwise, toggle the state of the tool
ClearUIToolStatesExcept(deleteAct);
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();
}
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);
-
- if (exception != deleteAct)
- deleteAct->setChecked(false);
+ QAction * actionList[] = {
+ addArcAct, addLineAct, addCircleAct, addDimensionAct, addPolygonAct,
+ addSplineAct, deleteAct, rotateAct, mirrorAct, trimAct, triangulateAct, 0
+ };
- 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();
-
// 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;
- }
-
- 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;
-#endif
+ Global::toolState = TSNone;
+
+ 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;
drawing->update();
}
container->state = OSSelected;
statusBar()->showMessage(QString(tr("Grouped %1 objects.")).arg(itemsSelected));
}
+#else
#endif
drawing->update();
}
}
}
+#else
#endif
}