]> Shamusworld >> Repos - architektonas/commitdiff
Initial phase of adding polyline functionality. DOES NOT COMPILE.
authorShamus Hammons <jlhamm@acm.org>
Tue, 14 Sep 2010 02:49:49 +0000 (02:49 +0000)
committerShamus Hammons <jlhamm@acm.org>
Tue, 14 Sep 2010 02:49:49 +0000 (02:49 +0000)
18 files changed:
architektonas.pro
src/actions/actiondrawpolyline.cpp [new file with mode: 0644]
src/actions/actiondrawpolyline.h [new file with mode: 0644]
src/actions/actionpolylineadd.cpp [new file with mode: 0644]
src/actions/actionpolylineadd.h [new file with mode: 0644]
src/actions/actionpolylineappend.cpp [new file with mode: 0644]
src/actions/actionpolylineappend.h [new file with mode: 0644]
src/actions/actionpolylinedel.cpp [new file with mode: 0644]
src/actions/actionpolylinedel.h [new file with mode: 0644]
src/actions/actionpolylinedelbetween.cpp [new file with mode: 0644]
src/actions/actionpolylinedelbetween.h [new file with mode: 0644]
src/actions/actionpolylinetrim.cpp [new file with mode: 0644]
src/actions/actionpolylinetrim.h [new file with mode: 0644]
src/forms/cadtoolbarpolylines.cpp
src/mainapp/applicationwindow.cpp
src/mainapp/createqtactions.cpp
src/mainapp/createqtactions.h
src/widgets/actionhandler.cpp

index a28d4a581d0175204b7136ecffbd312b922bb15e..1c0c8a50270f3f4196cded9a60fa154e913a1a5f 100644 (file)
@@ -270,6 +270,12 @@ HEADERS += \
        src/actions/actionmodifytrim.h \
        src/actions/actionmodifytrimamount.h \
        src/actions/actionoptionsdrawing.h \
+       src/actions/actiondrawpolyline.h \
+       src/actions/actionpolylineadd.h \
+       src/actions/actionpolylineappend.h \
+       src/actions/actionpolylinedel.h \
+       src/actions/actionpolylinedelbetween.h \
+       src/actions/actionpolylinetrim.h \
        src/actions/actionprintpreview.h \
        src/actions/actionselect.h \
        src/actions/actionselectall.h \
@@ -377,6 +383,12 @@ SOURCES += \
        src/actions/actionmodifytrim.cpp \
        src/actions/actionmodifytrimamount.cpp \
        src/actions/actionoptionsdrawing.cpp \
+       src/actions/actiondrawpolyline.cpp \
+       src/actions/actionpolylineadd.cpp \
+       src/actions/actionpolylineappend.cpp \
+       src/actions/actionpolylinedel.cpp \
+       src/actions/actionpolylinedelbetween.cpp \
+       src/actions/actionpolylinetrim.cpp \
        src/actions/actionprintpreview.cpp \
        src/actions/actionselect.cpp \
        src/actions/actionselectall.cpp \
diff --git a/src/actions/actiondrawpolyline.cpp b/src/actions/actiondrawpolyline.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/actions/actiondrawpolyline.h b/src/actions/actiondrawpolyline.h
new file mode 100644 (file)
index 0000000..5ed5a1a
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef __ACTIONDRAWPOLYLINE_H__
+#define __ACTIONDRAWPOLYLINE_H__
+
+#include "actioninterface.h"
+#include "vector.h"
+
+class Polyline;
+
+/**
+ * This action class can handle user events to draw freehand lines.
+ *
+ * @author James Hammons
+ */
+class ActionDrawPolyline: public ActionInterface
+{
+       public:
+               ActionDrawPolyline(EntityContainer & container, GraphicView & graphicView);
+               ~ActionDrawPolyline();
+
+               virtual void trigger();
+               virtual void mouseMoveEvent(QMouseEvent * e);
+               virtual void mousePressEvent(QMouseEvent * e);
+               virtual void mouseReleaseEvent(QMouseEvent * e);
+               virtual void updateMouseButtonHints();
+               virtual void updateMouseCursor();
+               virtual void updateToolBar();
+
+       protected:
+               Vector vertex;
+               Polyline * polyline;
+};
+
+#endif // __ACTIONDRAWPOLYLINE_H__
diff --git a/src/actions/actionpolylineadd.cpp b/src/actions/actionpolylineadd.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/actions/actionpolylineadd.h b/src/actions/actionpolylineadd.h
new file mode 100644 (file)
index 0000000..f07be91
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __ACTIONPOLYLINEADD_H__
+#define __ACTIONPOLYLINEADD_H__
+
+#include "actioninterface.h"
+
+class Polyline;
+
+/**
+ * This action class adds a node to an existing polyline.
+ *
+ * @author James Hammons
+ */
+class ActionPolylineAdd: public ActionInterface
+{
+       public:
+               ActionPolylineAdd(EntityContainer & container, GraphicView & graphicView);
+               ~ActionPolylineAdd();
+
+               virtual void init(int status = 0);
+               virtual void trigger();
+               virtual void mouseMoveEvent(QMouseEvent * e);
+               virtual void mousePressEvent(QMouseEvent * e);
+               virtual void mouseReleaseEvent(QMouseEvent * e);
+               virtual void updateMouseCursor();
+
+       protected:
+               Polyline * polyline;
+};
+
+#endif // __ACTIONPOLYLINEADD_H__
diff --git a/src/actions/actionpolylineappend.cpp b/src/actions/actionpolylineappend.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/actions/actionpolylineappend.h b/src/actions/actionpolylineappend.h
new file mode 100644 (file)
index 0000000..01e5d28
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __ACTIONPOLYLINEAPPEND_H__
+#define __ACTIONPOLYLINEAPPEND_H__
+
+#include "actioninterface.h"
+
+class Polyline;
+
+/**
+ * This action class adds a node to an existing polyline.
+ *
+ * @author James Hammons
+ */
+class ActionPolylineAppend: public ActionInterface
+{
+       public:
+               ActionPolylineAppend(EntityContainer & container, GraphicView & graphicView);
+               ~ActionPolylineAppend();
+
+               virtual void init(int status = 0);
+               virtual void trigger();
+               virtual void mouseMoveEvent(QMouseEvent * e);
+               virtual void mousePressEvent(QMouseEvent * e);
+               virtual void mouseReleaseEvent(QMouseEvent * e);
+               virtual void updateMouseCursor();
+
+       protected:
+               Polyline * polyline;
+};
+
+#endif // __ACTIONPOLYLINEAPPEND_H__
diff --git a/src/actions/actionpolylinedel.cpp b/src/actions/actionpolylinedel.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/actions/actionpolylinedel.h b/src/actions/actionpolylinedel.h
new file mode 100644 (file)
index 0000000..46f021b
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __ACTIONPOLYLINEDEL_H__
+#define __ACTIONPOLYLINEDEL_H__
+
+#include "actioninterface.h"
+
+class Polyline;
+
+/**
+ * This action class adds a node to an existing polyline.
+ *
+ * @author James Hammons
+ */
+class ActionPolylineDel: public ActionInterface
+{
+       public:
+               ActionPolylineDel(EntityContainer & container, GraphicView & graphicView);
+               ~ActionPolylineDel();
+
+               virtual void init(int status = 0);
+               virtual void trigger();
+               virtual void mouseMoveEvent(QMouseEvent * e);
+               virtual void mousePressEvent(QMouseEvent * e);
+               virtual void mouseReleaseEvent(QMouseEvent * e);
+               virtual void updateMouseCursor();
+
+       protected:
+               Polyline * polyline;
+};
+
+#endif // __ACTIONPOLYLINEDEL_H__
diff --git a/src/actions/actionpolylinedelbetween.cpp b/src/actions/actionpolylinedelbetween.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/actions/actionpolylinedelbetween.h b/src/actions/actionpolylinedelbetween.h
new file mode 100644 (file)
index 0000000..63d240e
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __ACTIONPOLYLINEDELBETWEEN_H__
+#define __ACTIONPOLYLINEDELBETWEEN_H__
+
+#include "actioninterface.h"
+
+class Polyline;
+
+/**
+ * This action class adds a node to an existing polyline.
+ *
+ * @author James Hammons
+ */
+class ActionPolylineDelBetween: public ActionInterface
+{
+       public:
+               ActionPolylineDelBetween(EntityContainer & container, GraphicView & graphicView);
+               ~ActionPolylineDelBetween();
+
+               virtual void init(int status = 0);
+               virtual void trigger();
+               virtual void mouseMoveEvent(QMouseEvent * e);
+               virtual void mousePressEvent(QMouseEvent * e);
+               virtual void mouseReleaseEvent(QMouseEvent * e);
+               virtual void updateMouseCursor();
+
+       protected:
+               Polyline * polyline;
+};
+
+#endif // __ACTIONPOLYLINEDELBETWEEN_H__
diff --git a/src/actions/actionpolylinetrim.cpp b/src/actions/actionpolylinetrim.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/actions/actionpolylinetrim.h b/src/actions/actionpolylinetrim.h
new file mode 100644 (file)
index 0000000..a07acbc
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __ACTIONPOLYLINETRIM_H__
+#define __ACTIONPOLYLINETRIM_H__
+
+#include "actioninterface.h"
+
+class Polyline;
+
+/**
+ * This action class adds a node to an existing polyline.
+ *
+ * @author James Hammons
+ */
+class ActionPolylineTrim: public ActionInterface
+{
+       public:
+               ActionPolylineTrim(EntityContainer & container, GraphicView & graphicView);
+               ~ActionPolylineTrim();
+
+               virtual void init(int status = 0);
+               virtual void trigger();
+               virtual void mouseMoveEvent(QMouseEvent * e);
+               virtual void mousePressEvent(QMouseEvent * e);
+               virtual void mouseReleaseEvent(QMouseEvent * e);
+               virtual void updateMouseCursor();
+
+       protected:
+               Polyline * polyline;
+};
+
+#endif // __ACTIONPOLYLINETRIM_H__
index 07c6331e1bf7dd8bd67d2b02fd7fb32d638e291d..5593b46e32b594a2b63c8bf26a06dcd4afbd4c91 100644 (file)
@@ -30,8 +30,7 @@ CadToolBarPolylines::CadToolBarPolylines(CadToolBar * parent, Qt::WindowFlags fl
 
        gridLayout->addWidget(parent->CreateToolButton(actionDrawPolyline), 1, 0, 1, 1);
        gridLayout->addWidget(parent->CreateToolButton(actionPolylineAdd), 1, 1, 1, 1);
-#warning "!!! Missing actionPolylineAppend !!!"
-//     gridLayout->addWidget(parent->CreateToolButton(actionPolylineAppend), 2, 0, 1, 1);
+       gridLayout->addWidget(parent->CreateToolButton(actionPolylineAppend), 2, 0, 1, 1);
        gridLayout->addWidget(parent->CreateToolButton(actionPolylineDel), 2, 1, 1, 1);
        gridLayout->addWidget(parent->CreateToolButton(actionPolylineDelBetween), 3, 0, 1, 1);
        gridLayout->addWidget(parent->CreateToolButton(actionPolylineTrim), 3, 1, 1, 1);
index ad10a5c8cbf8c4be7eab06f76ac38fdd538278c3..61da6669ace723653860ff09da7b1fcbdeb6a28d 100644 (file)
@@ -765,6 +765,9 @@ void ApplicationWindow::initActions()
        subMenu->addAction(actionPolylineAdd);
        connect(actionPolylineAdd, SIGNAL(activated()), actionHandler, SLOT(slotPolylineAdd()));
        connect(this, SIGNAL(windowsChanged(bool)), actionPolylineAdd, SLOT(setEnabled(bool)));
+       subMenu->addAction(actionPolylineAppend);
+       connect(actionPolylineAppend, SIGNAL(activated()), actionHandler, SLOT(slotPolylineAppend()));
+       connect(this, SIGNAL(windowsChanged(bool)), actionPolylineAppend, SLOT(setEnabled(bool)));
 //     action = actionFactory.createAction(RS2::ActionPolylineDel, actionHandler);
        subMenu->addAction(actionPolylineDel);
        connect(actionPolylineDel, SIGNAL(activated()), actionHandler, SLOT(slotPolylineDel()));
index 8785fcfc7d2841c62912b580d35371305a412418..74c7948d23308ca35a141eaaa99547f0d1dab9d4 100644 (file)
@@ -95,6 +95,7 @@ QAction * actionDrawSpline;
 
 QAction * actionDrawPolyline;
 QAction * actionPolylineAdd;
+QAction * actionPolylineAppend;
 QAction * actionPolylineDel;
 QAction * actionPolylineDelBetween;
 QAction * actionPolylineTrim;
@@ -285,6 +286,7 @@ void CreateQtActions(QWidget * parent)
 
        actionDrawPolyline = CreateAction(tr("&Draw"), tr(""), tr(""), QIcon(":/res/qg_polyline.xpm"), QKeySequence("p, l"), NULL);
        actionPolylineAdd = CreateAction(tr("&Add Node"), tr(""), tr(""), QIcon(":/res/qg_polylineadd.xpm"), QKeySequence("o, a"), NULL);
+       actionPolylineAppend = CreateAction(tr("A&ppend Node"), tr(""), tr(""), QIcon(":/res/qg_polylineappend.xpm"), QKeySequence("o, p"), NULL);
        actionPolylineDel = CreateAction(tr("&Delete Node"), tr(""), tr(""), QIcon(":/res/qg_polylinedel.xpm"), QKeySequence("o, d"), NULL);
        actionPolylineDelBetween = CreateAction(tr("Delete Segments &Between Two Nodes"), tr(""), tr(""), QIcon(":/res/qg_polylinedelbetween.xpm"), QKeySequence("o, b"), NULL);
        actionPolylineTrim = CreateAction(tr("&Trim Segments"), tr(""), tr(""), QIcon(":/res/qg_polylinetrim.xpm"), QKeySequence("o, t"), NULL);
index e90dd0277706abed5944fc5f45b8bafe635cbe0b..7865cc99b6dbd21498f78f5324506087b32853a6 100644 (file)
@@ -84,6 +84,7 @@ extern QAction * actionDrawSpline;
 
 extern QAction * actionDrawPolyline;
 extern QAction * actionPolylineAdd;
+extern QAction * actionPolylineAppend;
 extern QAction * actionPolylineDel;
 extern QAction * actionPolylineDelBetween;
 extern QAction * actionPolylineTrim;
index 5765d9750dfdea22b0eed14bd78643e019ed6cdf..f44ca7a5c4b59be626f97228fae448aaf05605ac 100644 (file)
@@ -57,6 +57,7 @@
 #include "actiondrawlinetangent1.h"
 #include "actiondrawlinetangent2.h"
 #include "actiondrawpoint.h"
+#include "actiondrawpolyline.h"
 #include "actiondrawspline.h"
 #include "actiondrawtext.h"
 #include "actioneditcopy.h"
 #include "actionmodifytrim.h"
 #include "actionmodifytrimamount.h"
 #include "actionoptionsdrawing.h"
+#include "actionpolylineadd.h"
+#include "actionpolylineappend.h"
+#include "actionpolylinedel.h"
+#include "actionpolylinedelbetween.h"
+#include "actionpolylinetrim.h"
 #include "actionselect.h"
 #include "actionselectall.h"
 #include "actionselectcontour.h"
 #include "actionzoomredraw.h"
 #include "actionzoomwindow.h"
 
-#warning "!!! Need to add polyline functionality !!!"
-#if 0
-#include "actiondrawpolyline.h"
-#include "actionpolylineadd.h"
-#include "actionpolylineappend.h"
-#include "actionpolylinedel.h"
-#include "actionpolylinedelbetween.h"
-#include "actionpolylinetrim.h"
-#endif
-
 #ifdef RS_CAM
 #include "actioncamexportauto.h"
 #include "actioncamreorder.h"
@@ -331,13 +327,6 @@ ActionInterface * ActionHandler::setCurrentAction(RS2::ActionType id)
                a = new ActionSelectLayer(*doc, *gv);
                break;
 
-               // Tool actions:
-               //
-//no
-//     case RS2::ActionToolRegenerateDimensions:
-//             a = new ActionToolRegenerateDimensions(*doc, *gv);
-//             break;
-
                // Zooming actions:
                //
        case RS2::ActionZoomIn:
@@ -409,8 +398,6 @@ ActionInterface * ActionHandler::setCurrentAction(RS2::ActionType id)
        case RS2::ActionDrawLineRelAngle:
                a = new ActionDrawLineRelAngle(*doc, *gv, M_PI / 2.0, false);
                break;
-#warning "!!! Need to add polyline functionality !!!"
-#ifdef RS_PROF
        case RS2::ActionDrawPolyline:
                a = new ActionDrawPolyline(*doc, *gv);
                break;
@@ -429,7 +416,6 @@ ActionInterface * ActionHandler::setCurrentAction(RS2::ActionType id)
        case RS2::ActionPolylineTrim:
                a = new ActionPolylineTrim(*doc, *gv);
                break;
-#endif
        case RS2::ActionDrawLinePolygon:
                a = new ActionDrawLinePolygon(*doc, *gv);
                break;