]> Shamusworld >> Repos - architektonas/blob - src/actions/rs_actioninfoinside.cpp
2af49c9d618e3e6fb3571c1d506a9fb7e1d58f91
[architektonas] / src / actions / rs_actioninfoinside.cpp
1 /****************************************************************************
2 ** $Id: rs_actioninfoinside.cpp 1161 2004-12-09 23:10:09Z andrew $
3 **
4 ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
5 **
6 ** This file is part of the qcadlib Library project.
7 **
8 ** This file may be distributed and/or modified under the terms of the
9 ** GNU General Public License version 2 as published by the Free Software
10 ** Foundation and appearing in the file LICENSE.GPL included in the
11 ** packaging of this file.
12 **
13 ** Licensees holding valid qcadlib Professional Edition licenses may use
14 ** this file in accordance with the qcadlib Commercial License
15 ** Agreement provided with the Software.
16 **
17 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
18 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 **
20 ** See http://www.ribbonsoft.com for further details.
21 **
22 ** Contact info@ribbonsoft.com if any conditions of this licensing are
23 ** not clear to you.
24 **
25 **********************************************************************/
26
27 #include "rs_actioninfoinside.h"
28 #include "rs_information.h"
29 #include "rs_snapper.h"
30
31 RS_ActionInfoInside::RS_ActionInfoInside(RS_EntityContainer& container,
32         RS_GraphicView& graphicView):
33         RS_ActionInterface("Info Inside", container, graphicView)
34 {
35         contour = new RS_EntityContainer(NULL, false);
36
37         for(RS_Entity* e=container.firstEntity(); e!=NULL; e=container.nextEntity())
38         {
39                 if (e->isSelected())
40                 {
41                         contour->addEntity(e);
42                 }
43         }
44 }
45
46 RS_ActionInfoInside::~RS_ActionInfoInside()
47 {
48     delete contour;
49 }
50
51 QAction* RS_ActionInfoInside::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/)
52 {
53         QAction * action = new QAction(tr("&Point inside contour"), 0);
54 //      QAction* action = new QAction(tr("Point inside contour"),
55 //                                                                      tr("&Point inside contour"),
56 //                                                                      QKeySequence(), NULL);
57         action->setStatusTip(tr("Checks if a given point is inside the selected contour"));
58
59         return action;
60 }
61
62 void RS_ActionInfoInside::trigger()
63 {
64     deleteSnapper();
65     bool onContour = false;
66     if (RS_Information::isPointInsideContour(pt, contour, &onContour)) {
67         RS_DIALOGFACTORY->commandMessage(tr("Point is inside selected contour."));
68     } else {
69         RS_DIALOGFACTORY->commandMessage(tr("Point is outside selected contour."));
70     }
71     finish();
72 }
73
74
75
76 void RS_ActionInfoInside::mouseMoveEvent(QMouseEvent* e) {
77     //Vector mouse = snapPoint(e);
78     //bool onContour = false;
79     /*if (RS_Information::isPointInsideContour(mouse, contour, &onContour)) {
80     } else {
81     }*/
82 }
83
84
85
86 void RS_ActionInfoInside::mouseReleaseEvent(QMouseEvent* e) {
87     if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
88         deleteSnapper();
89         init(getStatus()-1);
90     } else {
91         pt = snapPoint(e);
92         trigger();
93     }
94 }
95
96
97
98 void RS_ActionInfoInside::updateMouseButtonHints() {
99     switch (getStatus()) {
100     case 0:
101         RS_DIALOGFACTORY->updateMouseWidget(tr("Specify point"),
102                                             tr("Cancel"));
103         break;
104     default:
105         RS_DIALOGFACTORY->updateMouseWidget("", "");
106         break;
107     }
108 }
109
110
111
112 void RS_ActionInfoInside::updateMouseCursor() {
113     graphicView->setMouseCursor(RS2::CadCursor);
114 }
115
116
117
118 void RS_ActionInfoInside::updateToolBar() {
119     if (!isFinished()) {
120         RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
121     } else {
122         RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarInfo);
123     }
124 }
125
126 // EOF