]> Shamusworld >> Repos - architektonas/blobdiff - src/applicationwindow.cpp
Added ability to edit grid unit in base units, work on Dimension.
[architektonas] / src / applicationwindow.cpp
index efd661c82d2f066a00d9ff12b1561a9d93b02e42..96b13ca8b6a66964d8094784d17f062d96342ab2 100644 (file)
@@ -290,9 +290,11 @@ when zooming in, new origin will be (xCenter - origin.x) / 2, (yCenter - origin.
 
 //printf("Zoom in... level going from %02f to ", Painter::zoom);
        // 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;
-       zoomIndicator->setText(QString("Grid: %2\" Zoom: %1%").arg(Painter::zoom * 100.0 * SCREEN_ZOOM).arg(drawing->gridSpacing));
+//     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();
 }
@@ -328,7 +330,8 @@ x 2 = (-426, -301)
        // This just zooms leaving origin intact... should zoom out at the current center! [DONE]
        Painter::zoom /= zoomFactor;
        drawing->gridSpacing = 12.0 / Painter::zoom;
-       zoomIndicator->setText(QString("Grid: %2\" Zoom: %1%").arg(Painter::zoom * 100.0 * SCREEN_ZOOM).arg(drawing->gridSpacing));
+//     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();
 }
@@ -459,6 +462,29 @@ else
 }
 
 
+void ApplicationWindow::HandleGridSizeInPixels(int size)
+{
+       drawing->SetGridSize(size);
+       drawing->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)
+               return;
+
+       drawing->gridSpacing = value;
+       Painter::zoom = drawing->gridPixels / drawing->gridSpacing;
+       drawing->update();
+}
+
+
 void ApplicationWindow::CreateActions(void)
 {
        exitAct = CreateAction(tr("&Quit"), tr("Quit"), tr("Exits the application."),
@@ -621,6 +647,11 @@ void ApplicationWindow::CreateToolbars(void)
        toolbar->addAction(zoomInAct);
        toolbar->addAction(zoomOutAct);
 
+       QSpinBox * spinbox = new QSpinBox;
+       toolbar->addWidget(spinbox);
+       QLineEdit * lineedit = new QLineEdit;
+       toolbar->addWidget(lineedit);
+
        toolbar = addToolBar(tr("Edit"));
        toolbar->setObjectName("Edit");
        toolbar->addAction(snapToGridAct);
@@ -635,6 +666,12 @@ void ApplicationWindow::CreateToolbars(void)
        toolbar->addAction(addArcAct);
        toolbar->addAction(addPolygonAct);
        toolbar->addAction(addDimensionAct);
+
+       spinbox->setRange(4, 256);
+       spinbox->setValue(12);
+       lineedit->setText("12");
+       connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(HandleGridSizeInPixels(int)));
+       connect(lineedit, SIGNAL(textChanged(QString)), this, SLOT(HandleGridSizeInBaseUnits(QString)));
 }
 
 
@@ -647,10 +684,6 @@ void ApplicationWindow::ReadSettings(void)
        resize(size);
        move(pos);
        restoreState(settings.value("windowState").toByteArray());
-//     pos = settings.value("charWndPos", QPoint(0, 0)).toPoint();
-//     size = settings.value("charWndSize", QSize(200, 200)).toSize();
-//     ((TTEdit *)qApp)->charWnd->resize(size);
-//     ((TTEdit *)qApp)->charWnd->move(pos);
 }
 
 
@@ -661,7 +694,5 @@ void ApplicationWindow::WriteSettings(void)
        settings.setValue("windowState", saveState());
        settings.setValue("useAntialiasing", drawing->useAntialiasing);
        settings.setValue("snapToGrid", snapToGridAct->isChecked());
-//     settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
-//     settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
 }