Object::SetFixedLength(fixLengthAct->isChecked());
}
+// We want certain tools to be exclusive, and this approach isn't working correctly...
void ApplicationWindow::DeleteTool(void)
{
- Object::SetDeleteActive(deleteAct->isChecked());
+
+ ClearUIToolStatesExcept(deleteAct);
+ SetInternalToolStates();
}
void ApplicationWindow::DimensionTool(void)
{
- Object::SetDimensionActive(addDimensionAct->isChecked());
+ ClearUIToolStatesExcept(addDimensionAct);
+ SetInternalToolStates();
}
void ApplicationWindow::RotateTool(void)
{
- drawing->SetRotateToolActive(rotateAct->isChecked());
+ ClearUIToolStatesExcept(rotateAct);
+ SetInternalToolStates();
}
void ApplicationWindow::AddLineTool(void)
{
- addCircleAct->setChecked(false);
- addArcAct->setChecked(false);
- rotateAct->setChecked(false);
- RotateTool();
- drawing->SetAddLineToolActive(addLineAct->isChecked());
+ ClearUIToolStatesExcept(addLineAct);
+ SetInternalToolStates();
}
void ApplicationWindow::AddCircleTool(void)
{
- addLineAct->setChecked(false);
- addArcAct->setChecked(false);
- rotateAct->setChecked(false);
- RotateTool();
- drawing->SetAddCircleToolActive(addCircleAct->isChecked());
+ ClearUIToolStatesExcept(addCircleAct);
+ SetInternalToolStates();
}
void ApplicationWindow::ZoomInTool(void)
drawing->update();
}
+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 != deleteAct)
+ deleteAct->setChecked(false);
+
+ if (exception != rotateAct)
+ rotateAct->setChecked(false);
+}
+
+void ApplicationWindow::SetInternalToolStates(void)
+{
+ Object::SetDeleteActive(deleteAct->isChecked());
+ Object::SetDimensionActive(addDimensionAct->isChecked());
+ drawing->SetRotateToolActive(rotateAct->isChecked());
+ drawing->SetAddLineToolActive(addLineAct->isChecked());
+ drawing->SetAddCircleToolActive(addCircleAct->isChecked());
+}
+
void ApplicationWindow::HelpAbout(void)
{
aboutWin->show();
toolbar->addAction(addLineAct);
toolbar->addAction(addCircleAct);
toolbar->addAction(addArcAct);
+ toolbar->addAction(addPolygonAct);
toolbar->addAction(addDimensionAct);
}