#include "painter.h"
//#include "rotateaction.h"
#include "settingsdialog.h"
+#include "structs.h"
//#include "triangulateaction.h"
//#include "trimaction.h"
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();
drawing->update();
deleteAct->setChecked(false);
return;
}
-#endif
// Otherwise, toggle the state of the tool
ClearUIToolStatesExcept(deleteAct);
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
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();
DrawingView::DrawingView(QWidget * parent/*= NULL*/): QWidget(parent),
// The value in the settings file will override this.
- useAntialiasing(true),
+ useAntialiasing(true), numSelected(0),
gridBackground(BACKGROUND_MAX_SIZE, BACKGROUND_MAX_SIZE),
scale(1.0), offsetX(-10), offsetY(-10),// document(Vector(0, 0)),
gridPixels(0), collided(false)//, toolAction(NULL)
document.objects.push_back(new Arc(Vector(300, 300), 32, PI / 4.0, PI * 1.3)),
document.objects.push_back(new Arc(Vector(200, 200), 60, PI / 2.0, PI * 1.5));
document.objects.push_back(new Dimension(Vector(50, 40), Vector(5, 5)));
- document.objects.push_back(new Text(Vector(10, 83), "Tyegxt!"));
+ document.objects.push_back(new Text(Vector(10, 83), "Here is some awesome text!"));
#endif
/*
case OTText:
{
Text * t = (Text *)obj;
-
- for(float angle=0; angle<(PI*3.0/2.0); angle+=PI/8.0)
- painter->DrawTextObject(t->p1, t->s.c_str(), scaledThickness, angle);
-
+ painter->DrawTextObject(t->p1, t->s.c_str(), scaledThickness);
break;
}
default:
}
+void DrawingView::DeleteSelectedItems(void)
+{
+ std::vector<void *>::iterator i = document.objects.begin();
+
+ while (i != document.objects.end())
+ {
+ Object * obj = (Object *)(*i);
+
+ if (obj->selected)
+ {
+ delete obj;
+ document.objects.erase(i);
+ }
+ else
+ i++;
+ }
+}
+
+
void DrawingView::resizeEvent(QResizeEvent * /*event*/)
{
Global::screenSize = Vector(size().width(), size().height());
{
std::vector<void *>::iterator i;
// QRectF bounds;
+ numSelected = 0;
for(i=document.objects.begin(); i!=document.objects.end(); i++)
{
default:
break;
}
+
+ if (obj->selected)
+ numSelected++;
}
}