X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fapplicationwindow.cpp;h=23c865427f64ecc2971695db553567908cb870ff;hb=c85958d34fac175452fe420ff24ea82f26d6f1f3;hp=effcc1eb59904eefedb95ec5a66f019ea0e8a9e8;hpb=9590e4ed45fd4e05eccc16bd8e9d51596aea5a6d;p=architektonas diff --git a/src/applicationwindow.cpp b/src/applicationwindow.cpp index effcc1e..23c8654 100644 --- a/src/applicationwindow.cpp +++ b/src/applicationwindow.cpp @@ -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 "trimaction.h" // Class variables @@ -86,7 +88,7 @@ ApplicationWindow::ApplicationWindow(): dock2->setObjectName("Blocks"); // Create status bar - zoomIndicator = new QLabel("Grid: 12.0\" Zoom: 12.5%"); + zoomIndicator = new QLabel("Grid: 12.0\" BU: Inch"); statusBar()->addPermanentWidget(zoomIndicator); statusBar()->showMessage(tr("Ready")); @@ -121,6 +123,11 @@ void ApplicationWindow::FileOpen(void) { QString filename = QFileDialog::getOpenFileName(this, tr("Open Drawing"), "", tr("Architektonas files (*.drawing)")); + + // User cancelled open + if (filename.isEmpty()) + return; + FILE * file = fopen(filename.toAscii().data(), "r"); if (file == 0) @@ -262,6 +269,13 @@ void ApplicationWindow::MirrorTool(void) } +void ApplicationWindow::TrimTool(void) +{ + ClearUIToolStatesExcept(trimAct); + SetInternalToolStates(); +} + + void ApplicationWindow::AddLineTool(void) { ClearUIToolStatesExcept(addLineAct); @@ -290,6 +304,13 @@ void ApplicationWindow::AddPolygonTool(void) } +void ApplicationWindow::AddSplineTool(void) +{ + ClearUIToolStatesExcept(addSplineAct); + SetInternalToolStates(); +} + + void ApplicationWindow::ZoomInTool(void) { double zoomFactor = 2.0; @@ -384,6 +405,9 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception) if (exception != addPolygonAct) addPolygonAct->setChecked(false); + if (exception != addSplineAct) + addSplineAct->setChecked(false); + if (exception != deleteAct) deleteAct->setChecked(false); @@ -392,6 +416,9 @@ void ApplicationWindow::ClearUIToolStatesExcept(QAction * exception) if (exception != mirrorAct) mirrorAct->setChecked(false); + + if (exception != trimAct) + trimAct->setChecked(false); } @@ -414,8 +441,10 @@ 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); if (drawing->toolAction) Object::ignoreClicks = true; @@ -654,6 +683,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())); @@ -695,6 +727,9 @@ void ApplicationWindow::CreateActions(void) 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())); + 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())); + //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. @@ -765,6 +800,7 @@ void ApplicationWindow::CreateMenus(void) menu->addAction(fixLengthAct); menu->addAction(rotateAct); menu->addAction(mirrorAct); + menu->addAction(trimAct); menu->addAction(connectAct); menu->addAction(disconnectAct); menu->addSeparator(); @@ -774,6 +810,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); @@ -813,6 +850,7 @@ void ApplicationWindow::CreateToolbars(void) toolbar->addAction(fixLengthAct); toolbar->addAction(rotateAct); toolbar->addAction(mirrorAct); + toolbar->addAction(trimAct); toolbar->addAction(deleteAct); toolbar->addAction(connectAct); toolbar->addAction(disconnectAct); @@ -821,6 +859,7 @@ void ApplicationWindow::CreateToolbars(void) toolbar->addAction(addCircleAct); toolbar->addAction(addArcAct); toolbar->addAction(addPolygonAct); + toolbar->addAction(addSplineAct); toolbar->addAction(addDimensionAct); spinbox->setRange(4, 256);