]> Shamusworld >> Repos - architektonas/blobdiff - src/actions/actiondimleader.cpp
Phase two of adding polyline functionality...
[architektonas] / src / actions / actiondimleader.cpp
index 31cd29e5790f817e24f7d3da0db3290443105217..52165067c872072bc6e80fdf6729c1aaeaf0bf84 100644 (file)
 // Who  When        What
 // ---  ----------  -----------------------------------------------------------
 // JLH  06/03/2010  Added this text. :-)
+// JLH  09/11/2010  Fixed preview/snapper rendering.
 //
 
 #include "actiondimleader.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"
 
-ActionDimLeader::ActionDimLeader(RS_EntityContainer & container, GraphicView & graphicView):
+ActionDimLeader::ActionDimLeader(EntityContainer & container, GraphicView & graphicView):
        ActionInterface("Draw leaders", container, graphicView)
 {
        reset();
@@ -39,9 +40,6 @@ ActionDimLeader::~ActionDimLeader()
 
 void ActionDimLeader::reset()
 {
-       //data = RS_LineData(Vector(false), Vector(false));
-       //start = Vector(false);
-       //history.clear();
        points.clear();
 }
 
@@ -58,48 +56,48 @@ void ActionDimLeader::trigger()
 
        if (points.count() > 0)
        {
-               RS_Leader * leader = new RS_Leader(container, RS_LeaderData(true));
+               Leader * leader = new Leader(container, LeaderData(true));
                leader->setLayerToActive();
                leader->setPenToActive();
 
-//             for(Vector * v=points.first(); v!=NULL; v=points.next())
-//                     leader->addVertex(*v);
-               for (int i = 0; i < points.size(); i++)
+               for(int i=0; i<points.size(); i++)
                        leader->addVertex(*(points[i]));
 
                container->addEntity(leader);
 
                // upd. undo list:
-               if (document != NULL)
+               if (document)
                {
                        document->startUndoCycle();
                        document->addUndoable(leader);
                        document->endUndoCycle();
                }
 
-               deletePreview();
-               clearPreview();
-               deleteSnapper();
-               Vector rz = graphicView->getRelativeZero();
-               graphicView->moveRelativeZero(Vector(0.0, 0.0));
-               graphicView->drawEntity(leader);
-               graphicView->moveRelativeZero(rz);
-               //drawSnapper();
-
-               RS_DEBUG->print("ActionDimLeader::trigger(): leader added: %d", leader->getId());
+//             deletePreview();
+//             clearPreview();
+//             deleteSnapper();
+//             Vector rz = graphicView->getRelativeZero();
+//             graphicView->moveRelativeZero(Vector(0.0, 0.0));
+//             graphicView->drawEntity(leader);
+//             graphicView->moveRelativeZero(rz);
+               graphicView->preview.clear();   //hm.
+               graphicView->redraw();
+
+               DEBUG->print("ActionDimLeader::trigger(): leader added: %d", leader->getId());
        }
 }
 
 void ActionDimLeader::mouseMoveEvent(QMouseEvent * e)
 {
-       RS_DEBUG->print("ActionDimLeader::mouseMoveEvent begin");
+       DEBUG->print("ActionDimLeader::mouseMoveEvent begin");
 
        Vector mouse = snapPoint(e);
 
        if (getStatus() == SetEndpoint && points.last() != NULL)
        {
-               deletePreview();
-               clearPreview();
+//             deletePreview();
+//             clearPreview();
+               graphicView->preview.clear();
 
                // fill in lines that were already set:
                Vector last(false);
@@ -109,17 +107,22 @@ void ActionDimLeader::mouseMoveEvent(QMouseEvent * e)
                        Vector * v = points[i];
 
 //                     if (last.valid)
-//                             preview->addEntity(new RS_Line(preview, RS_LineData(last, *v)));
+//                             preview->addEntity(new Line(preview, LineData(last, *v)));
+                       if (last.valid)
+                               graphicView->preview.addEntity(new Line(&(graphicView->preview), LineData(last, *v)));
 
                        last = *v;
                }
 
                Vector p = *points.last();
-//             preview->addEntity(new RS_Line(preview, RS_LineData(p, mouse)));
-               drawPreview();
+//             preview->addEntity(new Line(preview, LineData(p, mouse)));
+//             drawPreview();
+               graphicView->preview.addEntity(new Line(&(graphicView->preview), LineData(p, mouse)));
        }
 
-       RS_DEBUG->print("ActionDimLeader::mouseMoveEvent end");
+       graphicView->redraw();
+
+       DEBUG->print("ActionDimLeader::mouseMoveEvent end");
 }
 
 void ActionDimLeader::mouseReleaseEvent(QMouseEvent * e)
@@ -139,9 +142,10 @@ void ActionDimLeader::mouseReleaseEvent(QMouseEvent * e)
                }
                else
                {
-                       deletePreview();
-                       deleteSnapper();
+//                     deletePreview();
+//                     deleteSnapper();
                        init(getStatus() - 1);
+                       graphicView->redraw();  //hm.
                }
        }
 }
@@ -187,14 +191,14 @@ void ActionDimLeader::coordinateEvent(Vector * e)
        }
 }
 
-void ActionDimLeader::commandEvent(RS_CommandEvent * e)
+void ActionDimLeader::commandEvent(CommandEvent * e)
 {
        QString c = e->getCommand().toLower();
 
        if (checkCommand("help", c))
        {
-               if (RS_DIALOGFACTORY != NULL)
-                       RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
+               if (DIALOGFACTORY)
+                       DIALOGFACTORY->commandMessage(msgAvailableCommands()
                                + getAvailableCommands().join(", "));
 
                return;
@@ -219,20 +223,20 @@ QStringList ActionDimLeader::getAvailableCommands()
 
 void ActionDimLeader::updateMouseButtonHints()
 {
-       if (RS_DIALOGFACTORY != NULL)
+       if (DIALOGFACTORY != NULL)
        {
                switch (getStatus())
                {
                case SetStartpoint:
-                       RS_DIALOGFACTORY->updateMouseWidget(tr("Specify target point"), tr("Cancel"));
+                       DIALOGFACTORY->updateMouseWidget(tr("Specify target point"), tr("Cancel"));
                        break;
 
                case SetEndpoint:
-                       RS_DIALOGFACTORY->updateMouseWidget(tr("Specify next point"), tr("Finish"));
+                       DIALOGFACTORY->updateMouseWidget(tr("Specify next point"), tr("Finish"));
                        break;
 
                default:
-                       RS_DIALOGFACTORY->updateMouseWidget("", "");
+                       DIALOGFACTORY->updateMouseWidget("", "");
                        break;
                }
        }
@@ -255,11 +259,11 @@ void ActionDimLeader::updateMouseCursor()
 
 void ActionDimLeader::updateToolBar()
 {
-       if (RS_DIALOGFACTORY)
+       if (DIALOGFACTORY)
        {
                if (!isFinished())
-                       RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
+                       DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
                else
-                       RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarDim);
+                       DIALOGFACTORY->requestToolBar(RS2::ToolBarDim);
        }
 }