]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Converted codebase from Qt4 to Qt5.
[architektonas] / src / applicationwindow.cpp
index 4f1be35d14a453acfdf3d6b082cf6b0360873d65..f2dc923b5c2313b852ee56109efe0cc9434d8e33 100644 (file)
@@ -36,6 +36,7 @@
 #include "drawcircleaction.h"
 #include "drawdimensionaction.h"
 #include "drawlineaction.h"
+#include "drawsplineaction.h"
 #include "fileio.h"
 #include "generaltab.h"
 #include "geometry.h"
@@ -45,6 +46,7 @@
 #include "painter.h"
 #include "rotateaction.h"
 #include "settingsdialog.h"
+#include "triangulateaction.h"
 #include "trimaction.h"
 
 
@@ -127,7 +129,7 @@ void ApplicationWindow::FileOpen(void)
        if (filename.isEmpty())
                return;
 
-       FILE * file = fopen(filename.toAscii().data(), "r");
+       FILE * file = fopen(filename.toUtf8().data(), "r");
 
        if (file == 0)
        {
@@ -166,7 +168,7 @@ void ApplicationWindow::FileSave(void)
                documentName = QFileDialog::getSaveFileName(this, tr("Save Drawing"),
                        "", tr("Architektonas drawings (*.drawing)"));
 
-       FILE * file = fopen(documentName.toAscii().data(), "w");
+       FILE * file = fopen(documentName.toUtf8().data(), "w");
 
        if (file == 0)
        {
@@ -187,7 +189,7 @@ void ApplicationWindow::FileSave(void)
                msg.setIcon(QMessageBox::Critical);
                msg.exec();
                // In this case, we should unlink the created file, since it's not right...
-//             unlink(documentName.toAscii().data());
+//             unlink(documentName.toUtf8().data());
                QFile::remove(documentName);
                return;
        }
@@ -275,6 +277,13 @@ void ApplicationWindow::TrimTool(void)
 }
 
 
+void ApplicationWindow::TriangulateTool(void)
+{
+       ClearUIToolStatesExcept(triangulateAct);
+       SetInternalToolStates();
+}
+
+
 void ApplicationWindow::AddLineTool(void)
 {
        ClearUIToolStatesExcept(addLineAct);
@@ -303,6 +312,13 @@ void ApplicationWindow::AddPolygonTool(void)
 }
 
 
+void ApplicationWindow::AddSplineTool(void)
+{
+       ClearUIToolStatesExcept(addSplineAct);
+       SetInternalToolStates();
+}
+
+
 void ApplicationWindow::ZoomInTool(void)
 {
        double zoomFactor = 2.0;
@@ -397,6 +413,9 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception)
        if (exception != addPolygonAct)
                addPolygonAct->setChecked(false);
 
+       if (exception != addSplineAct)
+               addSplineAct->setChecked(false);
+
        if (exception != deleteAct)
                deleteAct->setChecked(false);
 
@@ -408,6 +427,9 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception)
 
        if (exception != trimAct)
                trimAct->setChecked(false);
+
+       if (exception != triangulateAct)
+               triangulateAct->setChecked(false);
 }
 
 
@@ -430,9 +452,11 @@ 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(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)
                Object::ignoreClicks = true;
@@ -671,6 +695,9 @@ void ApplicationWindow::CreateActions(void)
        addPolygonAct = CreateAction(tr("Add &Polygon"), tr("Add Polygon"), tr("Add polygons to the drawing."), QIcon(":/res/add-polygon-tool.png"), QKeySequence("A,P"), true);
        connect(addPolygonAct, SIGNAL(triggered()), this, SLOT(AddPolygonTool()));
 
+       addSplineAct = CreateAction(tr("Add &Spline"), tr("Add Spline"), tr("Add a NURB spline to the drawing."), QIcon(":/res/add-spline-tool.png"), QKeySequence("A,S"), true);
+       connect(addSplineAct, SIGNAL(triggered()), this, SLOT(AddSplineTool()));
+
        aboutAct = CreateAction(tr("About &Architektonas"), tr("About Architektonas"), tr("Gives information about this program."), QIcon(":/res/generic-tool.png"), QKeySequence());
        connect(aboutAct, SIGNAL(triggered()), this, SLOT(HelpAbout()));
 
@@ -715,6 +742,9 @@ void ApplicationWindow::CreateActions(void)
        trimAct = CreateAction(tr("&Trim"), tr("Trim"), tr("Trim extraneous lines from selected objects."), QIcon(":/res/trim-tool.png"), QKeySequence("t,r"), true);
        connect(trimAct, SIGNAL(triggered()), this, SLOT(TrimTool()));
 
+       triangulateAct = CreateAction(tr("&Triangulate"), tr("Triangulate"), tr("Make triangles from selected lines, preserving their lengths."), QIcon(":/res/triangulate-tool.png"), QKeySequence("t,g"), true);
+       connect(triangulateAct, SIGNAL(triggered()), this, SLOT(TriangulateTool()));
+
 
 //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.
@@ -786,6 +816,7 @@ void ApplicationWindow::CreateMenus(void)
        menu->addAction(rotateAct);
        menu->addAction(mirrorAct);
        menu->addAction(trimAct);
+       menu->addAction(triangulateAct);
        menu->addAction(connectAct);
        menu->addAction(disconnectAct);
        menu->addSeparator();
@@ -795,6 +826,7 @@ void ApplicationWindow::CreateMenus(void)
        menu->addAction(addCircleAct);
        menu->addAction(addArcAct);
        menu->addAction(addPolygonAct);
+       menu->addAction(addSplineAct);
        menu->addAction(addDimensionAct);
        menu->addSeparator();
        menu->addAction(settingsAct);
@@ -835,6 +867,7 @@ void ApplicationWindow::CreateToolbars(void)
        toolbar->addAction(rotateAct);
        toolbar->addAction(mirrorAct);
        toolbar->addAction(trimAct);
+       toolbar->addAction(triangulateAct);
        toolbar->addAction(deleteAct);
        toolbar->addAction(connectAct);
        toolbar->addAction(disconnectAct);
@@ -843,6 +876,7 @@ void ApplicationWindow::CreateToolbars(void)
        toolbar->addAction(addCircleAct);
        toolbar->addAction(addArcAct);
        toolbar->addAction(addPolygonAct);
+       toolbar->addAction(addSplineAct);
        toolbar->addAction(addDimensionAct);
 
        spinbox->setRange(4, 256);