1 // actionmodifymirror.cpp
3 // Part of the Architektonas Project
4 // Originally part of QCad Community Edition by Andrew Mustun
5 // Extensively rewritten and refactored by James L. Hammons
6 // Portions copyright (C) 2001-2003 RibbonSoft
7 // Copyright (C) 2010 Underground Software
8 // See the README and GPLv2 files for licensing and warranty information
10 // JLH = James L. Hammons <jlhamm@acm.org>
13 // --- ---------- -----------------------------------------------------------
14 // JLH 06/04/2010 Added this text. :-)
17 #include "actionmodifymirror.h"
19 #include "rs_dialogfactory.h"
20 #include "rs_preview.h"
22 ActionModifyMirror::ActionModifyMirror(RS_EntityContainer & container, GraphicView & graphicView):
23 ActionInterface("Mirror Entities", container, graphicView)
27 ActionModifyMirror::~ActionModifyMirror()
31 void ActionModifyMirror::init(int status)
33 ActionInterface::init(status);
36 void ActionModifyMirror::trigger()
38 RS_DEBUG->print("ActionModifyMirror::trigger()");
40 RS_Modification m(*container, graphicView);
44 RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected());
47 void ActionModifyMirror::mouseMoveEvent(QMouseEvent * e)
49 RS_DEBUG->print("ActionModifyMirror::mouseMoveEvent begin");
51 if (getStatus() == SetAxisPoint1 || getStatus() == SetAxisPoint2)
53 Vector mouse = snapPoint(e);
69 /* preview->addSelectionFrom(*container);
70 preview->mirror(axisPoint1, axisPoint2);
71 preview->addEntity(new RS_Line(preview,RS_LineData(axisPoint1, axisPoint2)));*/
81 RS_DEBUG->print("ActionModifyMirror::mouseMoveEvent end");
84 void ActionModifyMirror::mouseReleaseEvent(QMouseEvent * e)
86 if (e->button() == Qt::LeftButton)
88 Vector ce(snapPoint(e));
91 else if (e->button() == Qt::RightButton)
95 init(getStatus() - 1);
99 void ActionModifyMirror::coordinateEvent(Vector * e)
110 setStatus(SetAxisPoint2);
111 graphicView->moveRelativeZero(mouse);
116 setStatus(ShowDialog);
117 graphicView->moveRelativeZero(mouse);
119 if (RS_DIALOGFACTORY)
121 if (RS_DIALOGFACTORY->requestMirrorDialog(data))
123 data.axisPoint1 = axisPoint1;
124 data.axisPoint2 = axisPoint2;
138 void ActionModifyMirror::updateMouseButtonHints()
140 if (RS_DIALOGFACTORY)
145 RS_DIALOGFACTORY->updateMouseWidget(tr("Pick entities to move"),
149 RS_DIALOGFACTORY->updateMouseWidget(
150 tr("Specify first point of mirror line"),
155 RS_DIALOGFACTORY->updateMouseWidget(
156 tr("Specify second point of mirror line"),
161 RS_DIALOGFACTORY->updateMouseWidget("", "");
167 void ActionModifyMirror::updateMouseCursor()
169 graphicView->setMouseCursor(RS2::CadCursor);
172 void ActionModifyMirror::updateToolBar()
174 if (RS_DIALOGFACTORY != NULL)
180 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
184 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarModify);