1 // actionmodifytrim.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 05/22/2010 Added this text. :-)
17 #include "actionmodifytrim.h"
20 #include "dialogfactory.h"
21 #include "modification.h"
24 * @param both Trim both entities.
26 ActionModifyTrim::ActionModifyTrim(EntityContainer & container,
27 GraphicView & graphicView, bool both): ActionInterface("Trim Entity",
28 container, graphicView)
31 trimCoord = Vector(false);
33 limitCoord = Vector(false);
37 ActionModifyTrim::~ActionModifyTrim()
41 void ActionModifyTrim::init(int status)
43 ActionInterface::init(status);
45 /* snapMode = RS2::SnapFree;
46 snapRes = RS2::RestrictNothing;*/
49 void ActionModifyTrim::trigger()
51 DEBUG->print("ActionModifyTrim::trigger()");
53 if (trimEntity && trimEntity->isAtomic() && limitEntity)
55 Modification m(*container, graphicView);
56 m.trim(trimCoord, (AtomicEntity *)trimEntity,
57 limitCoord, limitEntity, both);
63 limitEntity->setHighlighted(false);
64 graphicView->drawEntity(limitEntity);
65 setStatus(ChooseLimitEntity);
68 setStatus(ChooseTrimEntity);
70 DIALOGFACTORY->updateSelectionWidget(container->countSelected());
74 void ActionModifyTrim::mouseMoveEvent(QMouseEvent * e)
76 DEBUG->print("ActionModifyTrim::mouseMoveEvent begin");
78 Vector mouse = graphicView->toGraph(e->x(), e->y());
79 Entity * se = catchEntity(e);
83 case ChooseLimitEntity:
88 case ChooseTrimEntity:
97 DEBUG->print("ActionModifyTrim::mouseMoveEvent end");
100 void ActionModifyTrim::mouseReleaseEvent(QMouseEvent * e)
102 if (e->button() == Qt::LeftButton)
104 Vector mouse = graphicView->toGraph(e->x(), e->y());
105 Entity * se = catchEntity(e);
109 case ChooseLimitEntity:
115 limitEntity->setHighlighted(true);
116 graphicView->drawEntity(limitEntity);
117 setStatus(ChooseTrimEntity);
121 case ChooseTrimEntity:
125 if (trimEntity != NULL && trimEntity->isAtomic())
133 else if (e->button() == Qt::RightButton)
138 if (limitEntity != NULL)
140 limitEntity->setHighlighted(false);
141 graphicView->drawEntity(limitEntity);
143 init(getStatus() - 1);
147 void ActionModifyTrim::updateMouseButtonHints()
151 case ChooseLimitEntity:
154 DIALOGFACTORY->updateMouseWidget(tr("Select first trim entity"),
157 DIALOGFACTORY->updateMouseWidget(tr("Select limiting entity"),
161 case ChooseTrimEntity:
164 DIALOGFACTORY->updateMouseWidget(tr("Select second trim entity"),
167 DIALOGFACTORY->updateMouseWidget(tr("Select entity to trim"),
172 DIALOGFACTORY->updateMouseWidget("", "");
177 void ActionModifyTrim::updateMouseCursor()
179 graphicView->setMouseCursor(RS2::CadCursor);
182 void ActionModifyTrim::updateToolBar()
184 DIALOGFACTORY->requestToolBar(RS2::ToolBarModify);