From f62cebc26c7c3af447f0e4e4c43331f8589dce22 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Tue, 14 Sep 2010 02:49:49 +0000 Subject: [PATCH] Initial phase of adding polyline functionality. DOES NOT COMPILE. --- architektonas.pro | 12 +++++++++ src/actions/actiondrawpolyline.cpp | 0 src/actions/actiondrawpolyline.h | 33 ++++++++++++++++++++++++ src/actions/actionpolylineadd.cpp | 0 src/actions/actionpolylineadd.h | 30 +++++++++++++++++++++ src/actions/actionpolylineappend.cpp | 0 src/actions/actionpolylineappend.h | 30 +++++++++++++++++++++ src/actions/actionpolylinedel.cpp | 0 src/actions/actionpolylinedel.h | 30 +++++++++++++++++++++ src/actions/actionpolylinedelbetween.cpp | 0 src/actions/actionpolylinedelbetween.h | 30 +++++++++++++++++++++ src/actions/actionpolylinetrim.cpp | 0 src/actions/actionpolylinetrim.h | 30 +++++++++++++++++++++ src/forms/cadtoolbarpolylines.cpp | 3 +-- src/mainapp/applicationwindow.cpp | 3 +++ src/mainapp/createqtactions.cpp | 2 ++ src/mainapp/createqtactions.h | 1 + src/widgets/actionhandler.cpp | 26 +++++-------------- 18 files changed, 208 insertions(+), 22 deletions(-) create mode 100644 src/actions/actiondrawpolyline.cpp create mode 100644 src/actions/actiondrawpolyline.h create mode 100644 src/actions/actionpolylineadd.cpp create mode 100644 src/actions/actionpolylineadd.h create mode 100644 src/actions/actionpolylineappend.cpp create mode 100644 src/actions/actionpolylineappend.h create mode 100644 src/actions/actionpolylinedel.cpp create mode 100644 src/actions/actionpolylinedel.h create mode 100644 src/actions/actionpolylinedelbetween.cpp create mode 100644 src/actions/actionpolylinedelbetween.h create mode 100644 src/actions/actionpolylinetrim.cpp create mode 100644 src/actions/actionpolylinetrim.h diff --git a/architektonas.pro b/architektonas.pro index a28d4a5..1c0c8a5 100644 --- a/architektonas.pro +++ b/architektonas.pro @@ -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 index 0000000..e69de29 diff --git a/src/actions/actiondrawpolyline.h b/src/actions/actiondrawpolyline.h new file mode 100644 index 0000000..5ed5a1a --- /dev/null +++ b/src/actions/actiondrawpolyline.h @@ -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 index 0000000..e69de29 diff --git a/src/actions/actionpolylineadd.h b/src/actions/actionpolylineadd.h new file mode 100644 index 0000000..f07be91 --- /dev/null +++ b/src/actions/actionpolylineadd.h @@ -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 index 0000000..e69de29 diff --git a/src/actions/actionpolylineappend.h b/src/actions/actionpolylineappend.h new file mode 100644 index 0000000..01e5d28 --- /dev/null +++ b/src/actions/actionpolylineappend.h @@ -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 index 0000000..e69de29 diff --git a/src/actions/actionpolylinedel.h b/src/actions/actionpolylinedel.h new file mode 100644 index 0000000..46f021b --- /dev/null +++ b/src/actions/actionpolylinedel.h @@ -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 index 0000000..e69de29 diff --git a/src/actions/actionpolylinedelbetween.h b/src/actions/actionpolylinedelbetween.h new file mode 100644 index 0000000..63d240e --- /dev/null +++ b/src/actions/actionpolylinedelbetween.h @@ -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 index 0000000..e69de29 diff --git a/src/actions/actionpolylinetrim.h b/src/actions/actionpolylinetrim.h new file mode 100644 index 0000000..a07acbc --- /dev/null +++ b/src/actions/actionpolylinetrim.h @@ -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__ diff --git a/src/forms/cadtoolbarpolylines.cpp b/src/forms/cadtoolbarpolylines.cpp index 07c6331..5593b46 100644 --- a/src/forms/cadtoolbarpolylines.cpp +++ b/src/forms/cadtoolbarpolylines.cpp @@ -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); diff --git a/src/mainapp/applicationwindow.cpp b/src/mainapp/applicationwindow.cpp index ad10a5c..61da666 100644 --- a/src/mainapp/applicationwindow.cpp +++ b/src/mainapp/applicationwindow.cpp @@ -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())); diff --git a/src/mainapp/createqtactions.cpp b/src/mainapp/createqtactions.cpp index 8785fcf..74c7948 100644 --- a/src/mainapp/createqtactions.cpp +++ b/src/mainapp/createqtactions.cpp @@ -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); diff --git a/src/mainapp/createqtactions.h b/src/mainapp/createqtactions.h index e90dd02..7865cc9 100644 --- a/src/mainapp/createqtactions.h +++ b/src/mainapp/createqtactions.h @@ -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; diff --git a/src/widgets/actionhandler.cpp b/src/widgets/actionhandler.cpp index 5765d97..f44ca7a 100644 --- a/src/widgets/actionhandler.cpp +++ b/src/widgets/actionhandler.cpp @@ -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" @@ -98,6 +99,11 @@ #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" @@ -117,16 +123,6 @@ #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; -- 2.37.2