]> Shamusworld >> Repos - architektonas/blobdiff - src/actions/actiondrawcirclecr.cpp
Fixed hatch dialog, added snap/preview to circle tools.
[architektonas] / src / actions / actiondrawcirclecr.cpp
index a84a93d62110d27378e3d46ea0fdfe8b3beb4ebc..daebf4cc9cd3afc40220a934e22741e143690d91 100644 (file)
 // Who  When        What
 // ---  ----------  -----------------------------------------------------------
 // JLH  06/03/2010  Added this text. :-)
+// JLH  09/11/2010  Fixed preview/snapper rendering.
 //
 
 #include "actiondrawcirclecr.h"
 
-#include "rs_commandevent.h"
-#include "rs_debug.h"
-#include "rs_dialogfactory.h"
+#include "commandevent.h"
+#include "debug.h"
+#include "dialogfactory.h"
 #include "graphicview.h"
-#include "rs_preview.h"
+#include "preview.h"
 
 /**
  * Constructor.
  */
-ActionDrawCircleCR::ActionDrawCircleCR(RS_EntityContainer & container, GraphicView & graphicView): ActionInterface("Draw circles CR",
-               container, graphicView)
+ActionDrawCircleCR::ActionDrawCircleCR(EntityContainer & container,
+       GraphicView & graphicView):
+       ActionInterface("Draw circles CR", container, graphicView)
 {
        reset();
 }
@@ -42,7 +44,7 @@ ActionDrawCircleCR::~ActionDrawCircleCR()
 
 void ActionDrawCircleCR::reset()
 {
-       data = RS_CircleData(Vector(false), 0.0);
+       data = CircleData(Vector(false), 0.0);
 }
 
 void ActionDrawCircleCR::init(int status)
@@ -54,48 +56,53 @@ void ActionDrawCircleCR::trigger()
 {
        ActionInterface::trigger();
 
-       RS_Circle * circle = new RS_Circle(container, data);
+       Circle * circle = new Circle(container, data);
        circle->setLayerToActive();
        circle->setPenToActive();
        container->addEntity(circle);
 
        // upd. undo list:
-       if (document != NULL)
+       if (document)
        {
                document->startUndoCycle();
                document->addUndoable(circle);
                document->endUndoCycle();
        }
 
-       deleteSnapper();
-       Vector rz = graphicView->getRelativeZero();
-       graphicView->moveRelativeZero(Vector(0.0, 0.0));
-       graphicView->drawEntity(circle);
-       graphicView->moveRelativeZero(circle->getCenter());
-       drawSnapper();
+//     deleteSnapper();
+//     Vector rz = graphicView->getRelativeZero();
+//     graphicView->moveRelativeZero(Vector(0.0, 0.0));
+//     graphicView->drawEntity(circle);
+//     graphicView->moveRelativeZero(circle->getCenter());
+//     drawSnapper();
+       graphicView->preview.clear();   // hm.
+       graphicView->redraw();
 
        setStatus(SetCenter);
 
-       RS_DEBUG->print("ActionDrawCircleCR::trigger(): circle added: %d", circle->getId());
+       DEBUG->print("ActionDrawCircleCR::trigger(): circle added: %d", circle->getId());
 }
 
 void ActionDrawCircleCR::mouseMoveEvent(QMouseEvent * e)
 {
-       RS_DEBUG->print("ActionDrawCircleCR::mouseMoveEvent begin");
+       DEBUG->print("ActionDrawCircleCR::mouseMoveEvent begin");
        Vector mouse = snapPoint(e);
 
        switch (getStatus())
        {
        case SetCenter:
                data.center = mouse;
-               deletePreview();
-               clearPreview();
-//             preview->addEntity(new RS_Circle(preview, data));
-               drawPreview();
+//             deletePreview();
+//             clearPreview();
+//             preview->addEntity(new Circle(preview, data));
+//             drawPreview();
+               graphicView->preview.clear();
+               graphicView->preview.addEntity(new Circle(&(graphicView->preview), data));
                break;
        }
 
-       RS_DEBUG->print("ActionDrawCircleCR::mouseMoveEvent end");
+       graphicView->redraw();
+       DEBUG->print("ActionDrawCircleCR::mouseMoveEvent end");
 }
 
 void ActionDrawCircleCR::mouseReleaseEvent(QMouseEvent * e)
@@ -107,9 +114,10 @@ void ActionDrawCircleCR::mouseReleaseEvent(QMouseEvent * e)
        }
        else if (e->button() == Qt::RightButton)
        {
-               deletePreview();
-               deleteSnapper();
+//             deletePreview();
+//             deleteSnapper();
                init(getStatus() - 1);
+               graphicView->redraw();  // hm.
        }
 }
 
@@ -132,13 +140,13 @@ void ActionDrawCircleCR::coordinateEvent(Vector * e)
        }
 }
 
-void ActionDrawCircleCR::commandEvent(RS_CommandEvent * e)
+void ActionDrawCircleCR::commandEvent(CommandEvent * e)
 {
        QString c = e->getCommand().toLower();
 
        if (checkCommand("help", c))
        {
-               RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
+               DIALOGFACTORY->commandMessage(msgAvailableCommands()
                        + getAvailableCommands().join(", "));
                return;
        }
@@ -159,14 +167,14 @@ void ActionDrawCircleCR::commandEvent(RS_CommandEvent * e)
        case SetRadius:
        {
                bool ok;
-               double r = RS_Math::eval(c, &ok);
+               double r = Math::eval(c, &ok);
 
                if (ok == true)
                        data.radius = r;
                else
-                       RS_DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
+                       DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
 
-               RS_DIALOGFACTORY->requestOptions(this, true, true);
+               DIALOGFACTORY->requestOptions(this, true, true);
                setStatus(SetCenter);
        }
        break;
@@ -198,15 +206,15 @@ void ActionDrawCircleCR::updateMouseButtonHints()
        switch (getStatus())
        {
        case SetCenter:
-               RS_DIALOGFACTORY->updateMouseWidget(tr("Specify circle center"), tr("Cancel"));
+               DIALOGFACTORY->updateMouseWidget(tr("Specify circle center"), tr("Cancel"));
                break;
 
        case SetRadius:
-               RS_DIALOGFACTORY->updateMouseWidget(tr("Specify circle radius"), tr("Back"));
+               DIALOGFACTORY->updateMouseWidget(tr("Specify circle radius"), tr("Back"));
                break;
 
        default:
-               RS_DIALOGFACTORY->updateMouseWidget("", "");
+               DIALOGFACTORY->updateMouseWidget("", "");
                break;
        }
 }
@@ -215,14 +223,14 @@ void ActionDrawCircleCR::showOptions()
 {
        ActionInterface::showOptions();
 
-       RS_DIALOGFACTORY->requestOptions(this, true);
+       DIALOGFACTORY->requestOptions(this, true);
 }
 
 void ActionDrawCircleCR::hideOptions()
 {
        ActionInterface::hideOptions();
 
-       RS_DIALOGFACTORY->requestOptions(this, false);
+       DIALOGFACTORY->requestOptions(this, false);
 }
 
 void ActionDrawCircleCR::updateMouseCursor()
@@ -233,9 +241,9 @@ void ActionDrawCircleCR::updateMouseCursor()
 void ActionDrawCircleCR::updateToolBar()
 {
        if (!isFinished())
-               RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
+               DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
        else
-               RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarCircles);
+               DIALOGFACTORY->requestToolBar(RS2::ToolBarCircles);
 }
 
 double ActionDrawCircleCR::getRadius()