]> Shamusworld >> Repos - architektonas/blobdiff - src/actions/actiondrawarc.cpp
Bugfixes related to removing Snapper class.
[architektonas] / src / actions / actiondrawarc.cpp
index a833e58caa481b42c94fa5de44c60a253e194b5a..3a92e6f90f5b35345cb33c33ebef19b537d3cc45 100644 (file)
@@ -12,6 +12,7 @@
 // Who  When        What
 // ---  ----------  -----------------------------------------------------------
 // JLH  06/03/2010  Added this text. :-)
+// JLH  09/17/2010  Fixed preview/snapper rendering.
 //
 
 #include "actiondrawarc.h"
@@ -62,19 +63,15 @@ void ActionDrawArc::trigger()
        container->addEntity(arc);
 
        // upd. undo list:
-       if (document != NULL)
+       if (document)
        {
                document->startUndoCycle();
                document->addUndoable(arc);
                document->endUndoCycle();
        }
 
-       deleteSnapper();
-       graphicView->moveRelativeZero(Vector(0.0, 0.0));
-       graphicView->drawEntity(arc);
        graphicView->moveRelativeZero(arc->getCenter());
-       drawSnapper();
-
+       graphicView->redraw();  //hm.
        setStatus(SetCenter);
        reset();
 
@@ -97,10 +94,8 @@ void ActionDrawArc::mouseMoveEvent(QMouseEvent * e)
                if (data.center.valid)
                {
                        data.radius = data.center.distanceTo(mouse);
-                       deletePreview();
-                       clearPreview();
-//                     preview->addEntity(new Circle(preview, CircleData(data.center, data.radius)));
-                       drawPreview();
+                       graphicView->preview.clear();
+                       graphicView->preview.addEntity(new Circle(&(graphicView->preview), CircleData(data.center, data.radius)));
                }
                break;
 
@@ -112,26 +107,20 @@ void ActionDrawArc::mouseMoveEvent(QMouseEvent * e)
                else
                        data.angle2 = Math::correctAngle(data.angle1 + M_PI / 3);
 
-               deletePreview();
-               clearPreview();
-//             preview->addEntity(new Arc(preview, data));
-               drawPreview();
+               graphicView->preview.clear();
+               graphicView->preview.addEntity(new Arc(&(graphicView->preview), data));
                break;
 
        case SetAngle2:
                data.angle2 = data.center.angleTo(mouse);
-               deletePreview();
-               clearPreview();
-//             preview->addEntity(new Arc(preview, data));
-               drawPreview();
+               graphicView->preview.clear();
+               graphicView->preview.addEntity(new Arc(&(graphicView->preview), data));
                break;
 
        case SetIncAngle:
                data.angle2 = data.angle1 + data.center.angleTo(mouse);
-               deletePreview();
-               clearPreview();
-//             preview->addEntity(new Arc(preview, data));
-               drawPreview();
+               graphicView->preview.clear();
+               graphicView->preview.addEntity(new Arc(&(graphicView->preview), data));
                break;
 
        case SetChordLength:
@@ -141,18 +130,17 @@ void ActionDrawArc::mouseMoveEvent(QMouseEvent * e)
                if (fabs(x / (2 * data.radius)) <= 1.0)
                {
                        data.angle2 = data.angle1 + asin(x / (2 * data.radius)) * 2;
-                       deletePreview();
-                       clearPreview();
-//                     preview->addEntity(new Arc(preview, data));
-                       drawPreview();
+                       graphicView->preview.clear();
+                       graphicView->preview.addEntity(new Arc(&(graphicView->preview), data));
                }
        }
-       break;
+               break;
 
        default:
                break;
        }
 
+       graphicView->redraw();
        DEBUG->print("ActionDrawArc::mouseMoveEvent end");
 }
 
@@ -165,9 +153,10 @@ void ActionDrawArc::mouseReleaseEvent(QMouseEvent * e)
        }
        else if (e->button() == Qt::RightButton)
        {
-               deletePreview();
-               deleteSnapper();
+//             deletePreview();
+//             deleteSnapper();
                init(getStatus() - 1);
+               graphicView->redraw();  //hm.
        }
 }
 
@@ -251,35 +240,35 @@ void ActionDrawArc::commandEvent(CommandEvent * e)
 
        switch (getStatus())
        {
-       case SetRadius: {
+       case SetRadius:
+       {
                bool ok;
                double r = Math::eval(c, &ok);
 
-               if (ok == true)
+               if (ok)
                {
                        data.radius = r;
                        setStatus(SetAngle1);
                }
-               else if (DIALOGFACTORY != NULL)
+               else if (DIALOGFACTORY)
                        DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
-
        }
-       break;
+               break;
 
-       case SetAngle1: {
+       case SetAngle1:
+       {
                bool ok;
                double a = Math::eval(c, &ok);
 
-               if (ok == true)
+               if (ok)
                {
                        data.angle1 = Math::deg2rad(a);
                        setStatus(SetAngle2);
                }
-               else if (DIALOGFACTORY != NULL)
+               else if (DIALOGFACTORY)
                        DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
-
        }
-       break;
+               break;
 
        case SetAngle2:
 
@@ -292,53 +281,51 @@ void ActionDrawArc::commandEvent(CommandEvent * e)
                        bool ok;
                        double a = Math::eval(c, &ok);
 
-                       if (ok == true)
+                       if (ok)
                        {
                                data.angle2 = Math::deg2rad(a);
                                trigger();
                        }
-                       else if (DIALOGFACTORY != NULL)
+                       else if (DIALOGFACTORY)
                                DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
-
                }
                break;
 
-       case SetIncAngle: {
+       case SetIncAngle:
+       {
                bool ok;
                double a = Math::eval(c, &ok);
 
-               if (ok == true)
+               if (ok)
                {
                        data.angle2 = data.angle1 + Math::deg2rad(a);
                        trigger();
                }
-               else if (DIALOGFACTORY != NULL)
+               else if (DIALOGFACTORY)
                        DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
-
        }
-       break;
+               break;
 
-       case SetChordLength: {
+       case SetChordLength:
+       {
                bool ok;
                double l = Math::eval(c, &ok);
 
-               if (ok == true)
+               if (ok)
                {
                        if (fabs(l / (2 * data.radius)) <= 1.0)
                        {
                                data.angle2 = data.angle1 + asin(l / (2 * data.radius)) * 2;
                                trigger();
                        }
-                       else if (DIALOGFACTORY != NULL)
-                               DIALOGFACTORY->commandMessage(
-                                       tr("Not a valid chord length"));
+                       else if (DIALOGFACTORY)
+                               DIALOGFACTORY->commandMessage(tr("Not a valid chord length"));
 
                }
-               else if (DIALOGFACTORY != NULL)
+               else if (DIALOGFACTORY)
                        DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
-
        }
-       break;
+               break;
 
        default:
                break;
@@ -354,7 +341,7 @@ QStringList ActionDrawArc::getAvailableCommands()
 
 void ActionDrawArc::updateMouseButtonHints()
 {
-       if (DIALOGFACTORY != NULL)
+       if (DIALOGFACTORY)
        {
                switch (getStatus())
                {