#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));
}
}
+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."),
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");
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)));
}