1 // actionmodifymove.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 "actionmodifymove.h"
19 #include "rs_dialogfactory.h"
20 #include "rs_preview.h"
22 ActionModifyMove::ActionModifyMove(RS_EntityContainer & container,
23 GraphicView & graphicView):
24 ActionInterface("Move Entities", container, graphicView)
28 ActionModifyMove::~ActionModifyMove()
32 void ActionModifyMove::init(int status)
34 ActionInterface::init(status);
37 void ActionModifyMove::trigger()
39 RS_DEBUG->print("ActionModifyMove::trigger()");
41 RS_Modification m(*container, graphicView);
44 RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected());
47 void ActionModifyMove::mouseMoveEvent(QMouseEvent * e)
49 RS_DEBUG->print("ActionModifyMove::mouseMoveEvent begin");
51 if (getStatus() == SetReferencePoint
52 || getStatus() == SetTargetPoint)
54 Vector mouse = snapPoint(e);
58 case SetReferencePoint:
59 referencePoint = mouse;
64 if (referencePoint.valid)
70 /* preview->addSelectionFrom(*container);
71 preview->move(targetPoint - referencePoint);*/
81 RS_DEBUG->print("ActionModifyMove::mouseMoveEvent end");
84 void ActionModifyMove::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 ActionModifyMove::coordinateEvent(Vector * e)
108 case SetReferencePoint:
109 referencePoint = pos;
110 graphicView->moveRelativeZero(referencePoint);
111 setStatus(SetTargetPoint);
116 graphicView->moveRelativeZero(targetPoint);
117 setStatus(ShowDialog);
119 if (RS_DIALOGFACTORY->requestMoveDialog(data))
121 data.offset = targetPoint - referencePoint;
132 void ActionModifyMove::updateMouseButtonHints()
137 RS_DIALOGFACTORY->updateMouseWidget(tr("Pick entities to move"),
140 case SetReferencePoint:
141 RS_DIALOGFACTORY->updateMouseWidget(tr("Specify reference point"),
146 RS_DIALOGFACTORY->updateMouseWidget(tr("Specify target point"),
151 RS_DIALOGFACTORY->updateMouseWidget("", "");
156 void ActionModifyMove::updateMouseCursor()
158 graphicView->setMouseCursor(RS2::CadCursor);
161 void ActionModifyMove::updateToolBar()
166 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSelect);
168 case SetReferencePoint:
170 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
174 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarModify);