#include "about.h"
#include "blockwidget.h"
#include "drawingview.h"
+#include "drawarcaction.h"
+#include "drawcircleaction.h"
+#include "drawdimensionaction.h"
+#include "drawlineaction.h"
#include "fileio.h"
#include "generaltab.h"
#include "layerwidget.h"
#include "settingsdialog.h"
-ApplicationWindow::ApplicationWindow(): settings("Underground Software", "Architektonas")
+ApplicationWindow::ApplicationWindow():
+ baseUnitInput(new QLineEdit),
+ dimensionSizeInput(new QLineEdit),
+ settings("Underground Software", "Architektonas")
{
drawing = new DrawingView(this);
drawing->setMouseTracking(true); // We want *all* mouse events...!
// This just zooms leaving origin intact... should zoom in at the current center! [DONE]
// This should actually be calculated by drawing->gridPixels / grid size.
Painter::zoom *= zoomFactor;
- drawing->gridSpacing = 12.0 / Painter::zoom;
+ drawing->gridSpacing = drawing->gridPixels / Painter::zoom;
// zoomIndicator->setText(QString("Grid: %2\" Zoom: %1%").arg(Painter::zoom * 100.0 * SCREEN_ZOOM).arg(drawing->gridSpacing));
zoomIndicator->setText(QString("Grid: %1\", BU: Inch").arg(drawing->gridSpacing));
drawing->UpdateGridBackground();
drawing->update();
+
+ baseUnitInput->setText(QString("%1").arg(drawing->gridSpacing));
}
//printf("Zoom out...\n");
// This just zooms leaving origin intact... should zoom out at the current center! [DONE]
Painter::zoom /= zoomFactor;
- drawing->gridSpacing = 12.0 / Painter::zoom;
+ drawing->gridSpacing = drawing->gridPixels / Painter::zoom;
// zoomIndicator->setText(QString("Grid: %2\" Zoom: %1%").arg(Painter::zoom * 100.0 * SCREEN_ZOOM).arg(drawing->gridSpacing));
zoomIndicator->setText(QString("Grid: %1\", BU: Inch").arg(drawing->gridSpacing));
drawing->UpdateGridBackground();
drawing->update();
+
+ baseUnitInput->setText(QString("%1").arg(drawing->gridSpacing));
}
drawing->toolAction = NULL;
}
+#if 0
drawing->SetAddLineToolActive(addLineAct->isChecked());
drawing->SetAddCircleToolActive(addCircleAct->isChecked());
+ drawing->SetAddArcToolActive(addArcAct->isChecked());
drawing->SetAddDimensionToolActive(addDimensionAct->isChecked());
+#else
+ drawing->SetToolActive(addLineAct->isChecked() ? new DrawLineAction() : NULL);
+ drawing->SetToolActive(addCircleAct->isChecked() ? new DrawCircleAction() : NULL);
+ drawing->SetToolActive(addArcAct->isChecked() ? new DrawArcAction() : NULL);
+ drawing->SetToolActive(addDimensionAct->isChecked() ? new DrawDimensionAction() : NULL);
+#endif
+
+ update();
}
}
+void ApplicationWindow::HandleGridSizeInBaseUnits(QString text)
+{
+ // Parse the text...
+ bool ok;
+ double value = text.toDouble(&ok);
+
+ // Nothing parsable to a double, so quit...
+ if (!ok || value == 0)
+ return;
+
+ drawing->gridSpacing = value;
+ Painter::zoom = drawing->gridPixels / drawing->gridSpacing;
+ drawing->UpdateGridBackground();
+ drawing->update();
+}
+
+
+void ApplicationWindow::HandleDimensionSize(QString text)
+{
+ // Parse the text...
+ bool ok;
+ double value = text.toDouble(&ok);
+
+ // Nothing parsable to a double, so quit...
+ if (!ok || value == 0)
+ return;
+
+ drawing->document.ResizeAllDimensions(value);
+// drawing->gridSpacing = value;
+// Painter::zoom = drawing->gridPixels / drawing->gridSpacing;
+// drawing->UpdateGridBackground();
+ drawing->update();
+}
+
+
void ApplicationWindow::CreateActions(void)
{
exitAct = CreateAction(tr("&Quit"), tr("Quit"), tr("Exits the application."),
groupAct = CreateAction(tr("&Group"), tr("Group"), tr("Group/ungroup selected objects."), QIcon(":/res/group-tool.png"), QKeySequence("g"));
connect(groupAct, SIGNAL(triggered()), this, SLOT(HandleGrouping()));
+ connectAct = CreateAction(tr("&Connect"), tr("Connect"), tr("Connect objects at point."), QIcon(":/res/connect-tool.png"), QKeySequence("c,c"));
+
+ disconnectAct = CreateAction(tr("&Disconnect"), tr("Disconnect"), tr("Disconnect objects joined at point."), QIcon(":/res/disconnect-tool.png"), QKeySequence("d,d"));
+
//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);
menu->addAction(fixAngleAct);
menu->addAction(fixLengthAct);
menu->addAction(rotateAct);
+ menu->addAction(connectAct);
+ menu->addAction(disconnectAct);
menu->addSeparator();
menu->addAction(deleteAct);
menu->addSeparator();
toolbar->setObjectName("View");
toolbar->addAction(zoomInAct);
toolbar->addAction(zoomOutAct);
+
QSpinBox * spinbox = new QSpinBox;
toolbar->addWidget(spinbox);
+// QLineEdit * lineedit = new QLineEdit;
+ toolbar->addWidget(baseUnitInput);
+ toolbar->addWidget(dimensionSizeInput);
toolbar = addToolBar(tr("Edit"));
toolbar->setObjectName("Edit");
toolbar->addAction(fixLengthAct);
toolbar->addAction(rotateAct);
toolbar->addAction(deleteAct);
+ toolbar->addAction(connectAct);
+ toolbar->addAction(disconnectAct);
toolbar->addSeparator();
toolbar->addAction(addLineAct);
toolbar->addAction(addCircleAct);
spinbox->setRange(4, 256);
spinbox->setValue(12);
+ baseUnitInput->setText("12");
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(HandleGridSizeInPixels(int)));
+ connect(baseUnitInput, SIGNAL(textChanged(QString)), this, SLOT(HandleGridSizeInBaseUnits(QString)));
+ connect(dimensionSizeInput, SIGNAL(textChanged(QString)), this, SLOT(HandleDimensionSize(QString)));
}