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 "actioninfodist.h"
19 #include "rs_dialogfactory.h"
20 #include "graphicview.h"
21 #include "rs_preview.h"
23 ActionInfoDist::ActionInfoDist(RS_EntityContainer & container, GraphicView & graphicView): ActionInterface("Info Dist",
24 container, graphicView)
28 ActionInfoDist::~ActionInfoDist()
32 void ActionInfoDist::init(int status)
34 ActionInterface::init(status);
37 void ActionInfoDist::trigger()
39 RS_DEBUG->print("ActionInfoDist::trigger()");
41 if (point1.valid && point2.valid)
43 double dist = point1.distanceTo(point2);
45 str.sprintf("%.6f", dist);
46 RS_DIALOGFACTORY->commandMessage(tr("Distance: %1").arg(str));
50 void ActionInfoDist::mouseMoveEvent(QMouseEvent * e)
52 RS_DEBUG->print("ActionInfoDist::mouseMoveEvent begin");
54 if (getStatus() == SetPoint1
55 || getStatus() == SetPoint2)
57 Vector mouse = snapPoint(e);
72 // preview->addEntity(new RS_Line(preview, RS_LineData(point1, point2)));
82 RS_DEBUG->print("ActionInfoDist::mouseMoveEvent end");
85 void ActionInfoDist::mouseReleaseEvent(QMouseEvent * e)
87 if (e->button() == Qt::LeftButton)
89 Vector ce(snapPoint(e));
92 else if (e->button() == Qt::RightButton)
96 init(getStatus() - 1);
100 void ActionInfoDist::coordinateEvent(Vector * e)
111 graphicView->moveRelativeZero(point1);
112 setStatus(SetPoint2);
122 graphicView->moveRelativeZero(point2);
124 setStatus(SetPoint1);
133 void ActionInfoDist::updateMouseButtonHints()
138 RS_DIALOGFACTORY->updateMouseWidget(
139 tr("Specify first point of distance"),
144 RS_DIALOGFACTORY->updateMouseWidget(
145 tr("Specify second point of distance"),
150 RS_DIALOGFACTORY->updateMouseWidget("", "");
155 void ActionInfoDist::updateMouseCursor()
157 graphicView->setMouseCursor(RS2::CadCursor);
160 void ActionInfoDist::updateToolBar()
166 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
170 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarInfo);