]> Shamusworld >> Repos - architektonas/blobdiff - src/drawingview.cpp
Added mouse wheel zoom.
[architektonas] / src / drawingview.cpp
index 656545b945c3738442e47513b96878f2843fe2f1..9341a76279044ef78c64e3d21a39f95d85cda41c 100644 (file)
@@ -467,26 +467,44 @@ void DrawingView::mouseReleaseEvent(QMouseEvent * event)
 }
 
 
-void DrawingView::keyPressEvent(QKeyEvent * event)
+void DrawingView::wheelEvent(QWheelEvent * event)
 {
-       if (toolAction)
-       {
-               /*bool needUpdate =*/ toolAction->KeyDown(event->key());
+       double zoomFactor = 1.25;
+       QSize sizeWin = /*drawing->*/size();
+       Vector center(sizeWin.width() / 2.0, sizeWin.height() / 2.0);
+       center = Painter::QtToCartesianCoords(center);
 
-//             if (needUpdate)
-//                     update();
+       if (event->delta() > 0)
+       {
+               Vector newOrigin = center - ((center - Painter::origin) / zoomFactor);
+               Painter::origin = newOrigin;
+               Painter::zoom *= zoomFactor;
        }
+       else
+       {
+               Vector newOrigin = center + ((-center + Painter::origin) * zoomFactor);
+               Painter::origin = newOrigin;
+               Painter::zoom /= zoomFactor;
+       }
+
+//     Object::gridSpacing = /*drawing->*/gridPixels / Painter::zoom;
+       SetGridSize(Object::gridSpacing * Painter::zoom);
+//     /*drawing->*/UpdateGridBackground();
+       /*drawing->*/update();
+//     zoomIndicator->setText(QString("Grid: %1\", BU: Inch").arg(Object::gridSpacing));
 }
 
 
-void DrawingView::keyReleaseEvent(QKeyEvent * event)
+void DrawingView::keyPressEvent(QKeyEvent * event)
 {
        if (toolAction)
-       {
-               /*bool needUpdate =*/ toolAction->KeyReleased(event->key());
+               toolAction->KeyDown(event->key());
+}
 
-//             if (needUpdate)
-//                     update();
-       }
+
+void DrawingView::keyReleaseEvent(QKeyEvent * event)
+{
+       if (toolAction)
+               toolAction->KeyReleased(event->key());
 }