]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Add Dimension sizing.
[architektonas] / src / applicationwindow.cpp
index 96b13ca8b6a66964d8094784d17f062d96342ab2..bf181a882d50629fb27c30e079a34c4ba29af86f 100644 (file)
 #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...!
@@ -292,11 +295,13 @@ when zooming in, new origin will be (xCenter - origin.x) / 2, (yCenter - origin.
        // 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));
 }
 
 
@@ -329,11 +334,13 @@ x 2 = (-426, -301)
 //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));
 }
 
 
@@ -476,11 +483,30 @@ void ApplicationWindow::HandleGridSizeInBaseUnits(QString text)
        double value = text.toDouble(&ok);
 
        // Nothing parsable to a double, so quit...
-       if (!ok)
+       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();
 }
 
@@ -649,8 +675,9 @@ void ApplicationWindow::CreateToolbars(void)
 
        QSpinBox * spinbox = new QSpinBox;
        toolbar->addWidget(spinbox);
-       QLineEdit * lineedit = new QLineEdit;
-       toolbar->addWidget(lineedit);
+//     QLineEdit * lineedit = new QLineEdit;
+       toolbar->addWidget(baseUnitInput);
+       toolbar->addWidget(dimensionSizeInput);
 
        toolbar = addToolBar(tr("Edit"));
        toolbar->setObjectName("Edit");
@@ -669,9 +696,10 @@ void ApplicationWindow::CreateToolbars(void)
 
        spinbox->setRange(4, 256);
        spinbox->setValue(12);
-       lineedit->setText("12");
+       baseUnitInput->setText("12");
        connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(HandleGridSizeInPixels(int)));
-       connect(lineedit, SIGNAL(textChanged(QString)), this, SLOT(HandleGridSizeInBaseUnits(QString)));
+       connect(baseUnitInput, SIGNAL(textChanged(QString)), this, SLOT(HandleGridSizeInBaseUnits(QString)));
+       connect(dimensionSizeInput, SIGNAL(textChanged(QString)), this, SLOT(HandleDimensionSize(QString)));
 }