]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Beginnings of mirror tool.
[architektonas] / src / applicationwindow.cpp
index 72948f8a3907e6643201ecee05c6bb089f0c99b4..8220a0eeca1138d6523c884ae70b26c828f92980 100644 (file)
@@ -38,6 +38,7 @@
 #include "fileio.h"
 #include "generaltab.h"
 #include "layerwidget.h"
+#include "mirroraction.h"
 #include "painter.h"
 #include "settingsdialog.h"
 
@@ -243,6 +244,13 @@ void ApplicationWindow::RotateTool(void)
 }
 
 
+void ApplicationWindow::MirrorTool(void)
+{
+       ClearUIToolStatesExcept(mirrorAct);
+       SetInternalToolStates();
+}
+
+
 void ApplicationWindow::AddLineTool(void)
 {
        ClearUIToolStatesExcept(addLineAct);
@@ -377,6 +385,9 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception)
 
        if (exception != rotateAct)
                rotateAct->setChecked(false);
+
+       if (exception != mirrorAct)
+               mirrorAct->setChecked(false);
 }
 
 
@@ -405,6 +416,7 @@ void ApplicationWindow::SetInternalToolStates(void)
        drawing->SetToolActive(addCircleAct->isChecked() ? new DrawCircleAction() : NULL);
        drawing->SetToolActive(addArcAct->isChecked() ? new DrawArcAction() : NULL);
        drawing->SetToolActive(addDimensionAct->isChecked() ? new DrawDimensionAction() : NULL);
+       drawing->SetToolActive(mirrorAct->isChecked() ? new MirrorAction() : NULL);
 #endif
 
        update();
@@ -605,6 +617,10 @@ void ApplicationWindow::CreateActions(void)
 
        disconnectAct = CreateAction(tr("&Disconnect"), tr("Disconnect"), tr("Disconnect objects joined at point."), QIcon(":/res/disconnect-tool.png"), QKeySequence("d,d"));
 
+       mirrorAct = CreateAction(tr("&Mirror"), tr("Mirror"), tr("Mirror selected objects around a line."), QIcon(":/res/mirror-tool.png"), QKeySequence("m,i"), true);
+       connect(mirrorAct, SIGNAL(triggered()), this, SLOT(MirrorTool()));
+
+
 //Hm. I think we'll have to have separate logic to do the "Radio Group Toolbar" thing...
 // Yup, in order to turn them off, we'd have to have an "OFF" toolbar button. Ick.
 /*     QActionGroup * group = new QActionGroup(this);
@@ -673,6 +689,7 @@ void ApplicationWindow::CreateMenus(void)
        menu->addAction(fixAngleAct);
        menu->addAction(fixLengthAct);
        menu->addAction(rotateAct);
+       menu->addAction(mirrorAct);
        menu->addAction(connectAct);
        menu->addAction(disconnectAct);
        menu->addSeparator();
@@ -720,6 +737,7 @@ void ApplicationWindow::CreateToolbars(void)
        toolbar->addAction(fixAngleAct);
        toolbar->addAction(fixLengthAct);
        toolbar->addAction(rotateAct);
+       toolbar->addAction(mirrorAct);
        toolbar->addAction(deleteAct);
        toolbar->addAction(connectAct);
        toolbar->addAction(disconnectAct);