]> Shamusworld >> Repos - architektonas/blob - src/forms/cadtoolbar.cpp
Initial import
[architektonas] / src / forms / cadtoolbar.cpp
1 // cadtoolbar.cpp
2 //
3 // Originally part of QCad Community Edition by Andrew Mustun
4 // Extensively rewritten and refactored by James L. Hammons
5 // (C) 2010 Underground Software
6 //
7 // JLH = James L. Hammons <jlhamm@acm.org>
8 //
9 // Who  When        What
10 // ---  ----------  -----------------------------------------------------------
11 // JLH  05/10/2010  Created this file. :-)
12 //
13
14 #include "cadtoolbar.h"
15
16 #include "cadtoolbararcs.h"
17 #include "cadtoolbarcircles.h"
18 #include "cadtoolbardim.h"
19 #include "cadtoolbarellipses.h"
20 #include "cadtoolbarinfo.h"
21 #include "cadtoolbarlines.h"
22 #include "cadtoolbarmain.h"
23 #include "cadtoolbarmodify.h"
24 #include "cadtoolbarpoints.h"
25 #include "cadtoolbarpolylines.h"
26 #include "cadtoolbarselect.h"
27 #include "cadtoolbarsnap.h"
28 #include "cadtoolbarsplines.h"
29 #include "rs.h"
30
31 CadToolBar::CadToolBar(QWidget * parent/*= 0*/, Qt::WindowFlags flags/*= 0*/):
32         QWidget(parent, flags), actionHandler(NULL), currentTb(NULL), tbSplines(NULL),
33         tbInfo(NULL),tbMain(NULL), tbDim(NULL), tbLines(NULL), tbPoints(NULL),
34         tbEllipses(NULL), tbArcs(NULL), tbModify(NULL), tbCircles(NULL), tbSnap(NULL),
35         tbSelect(NULL), tbPolylines(NULL)
36 {
37         ui.setupUi(this);
38 }
39
40 CadToolBar::~CadToolBar()
41 {
42 }
43
44 /**
45  * @return Pointer to action handler or NULL.
46  */
47 QG_ActionHandler * CadToolBar::getActionHandler()
48 {
49         return actionHandler;
50 }
51
52 /**
53  * Called from the sub toolbar
54  */
55 void CadToolBar::back()
56 {
57         emit(signalBack());
58 }
59
60 /**
61  * Called from the application.
62  */
63 void CadToolBar::forceNext()
64 {
65         if (currentTb != NULL && currentTb == tbSelect)
66                 tbSelect->runNextAction();
67 }
68
69 void CadToolBar::mouseReleaseEvent(QMouseEvent * e)
70 {
71         if (e->button() == Qt::RightButton)
72         {
73                 back();
74                 e->accept();
75         }
76 }
77
78 void CadToolBar::contextMenuEvent(QContextMenuEvent * e)
79 {
80     e->accept();
81 }
82
83 /**
84  * Creates all tool bars and shows the main toolbar.
85  *
86  * @param ah Pointer to action handler which will deal with the actions in this tool bar.
87  */
88 void CadToolBar::createSubToolBars(QG_ActionHandler * ah)
89 {
90         actionHandler = ah;
91         tbMain = new CadToolBarMain(this);
92         tbMain->setCadToolBar(this);
93
94         tbPoints = new CadToolBarPoints(this);
95         tbPoints->setCadToolBar(this);
96         tbPoints->hide();
97
98         tbLines = new CadToolBarLines(this);
99         tbLines->setCadToolBar(this);
100         tbLines->hide();
101
102         tbArcs = new CadToolBarArcs(this);
103         tbArcs->setCadToolBar(this);
104         tbArcs->hide();
105
106         tbCircles = new CadToolBarCircles(this);
107         tbCircles->setCadToolBar(this);
108         tbCircles->hide();
109
110         tbEllipses = new CadToolBarEllipses(this);
111         tbEllipses->setCadToolBar(this);
112         tbEllipses->hide();
113
114         tbSplines = new CadToolBarSplines(this);
115         tbSplines->setCadToolBar(this);
116         tbSplines->hide();
117
118 //#ifdef RS_PROF
119         tbPolylines = new CadToolBarPolylines(this);
120         tbPolylines->setCadToolBar(this);
121         tbPolylines->hide();
122 //#endif
123
124         tbDim = new CadToolBarDim(this);
125         tbDim->setCadToolBar(this);
126         tbDim->hide();
127
128         tbInfo = new CadToolBarInfo(this);
129         tbInfo->setCadToolBar(this);
130         tbInfo->hide();
131
132         tbModify = new CadToolBarModify(this);
133         tbModify->setCadToolBar(this);
134         tbModify->hide();
135
136         tbSnap = new CadToolBarSnap(this);
137         tbSnap->setCadToolBar(this);
138         tbSnap->hide();
139
140         tbSelect = new CadToolBarSelect(this);
141         tbSelect->setCadToolBar(this);
142         tbSelect->hide();
143
144         //showToolBarMain();
145 }
146
147 void CadToolBar::showToolBar(int id)
148 {
149         QWidget * newTb = NULL;
150
151         switch (id)
152         {
153         default:
154         case RS2::ToolBarMain:
155                 newTb = tbMain;
156                 break;
157         case RS2::ToolBarPoints:
158                 newTb = tbPoints;
159                 break;
160         case RS2::ToolBarLines:
161                 newTb = tbLines;
162                 break;
163         case RS2::ToolBarArcs:
164                 newTb = tbArcs;
165                 break;
166         case RS2::ToolBarEllipses:
167                 newTb = tbEllipses;
168                 break;
169         case RS2::ToolBarSplines:
170                 newTb = tbSplines;
171                 break;
172 //#ifdef RS_PROF
173         case RS2::ToolBarPolylines:
174                 newTb = tbPolylines;
175                 break;
176 //#endif
177         case RS2::ToolBarCircles:
178                 newTb = tbCircles;
179                 break;
180         case RS2::ToolBarInfo:
181                 newTb = tbInfo;
182                 break;
183         case RS2::ToolBarModify:
184                 newTb = tbModify;
185                 break;
186         case RS2::ToolBarDim:
187                 newTb = tbDim;
188                 break;
189         case RS2::ToolBarSnap:
190                 newTb = tbSnap;
191                 break;
192         case RS2::ToolBarSelect:
193                 newTb = tbSelect;
194                 break;
195         }
196
197         if (currentTb == newTb)
198                 return;
199
200         if (currentTb != NULL)
201                 currentTb->hide();
202
203         currentTb = newTb;
204
205         if (currentTb != NULL)
206                 currentTb->show();
207 }
208
209 void CadToolBar::showToolBarMain()
210 {
211         showToolBar(RS2::ToolBarMain);
212 }
213
214 void CadToolBar::showToolBarPoints()
215 {
216         showToolBar(RS2::ToolBarPoints);
217 }
218
219 void CadToolBar::showToolBarLines()
220 {
221         showToolBar(RS2::ToolBarLines);
222 }
223
224 void CadToolBar::showToolBarArcs()
225 {
226         showToolBar(RS2::ToolBarArcs);
227 }
228
229 void CadToolBar::showToolBarEllipses()
230 {
231         showToolBar(RS2::ToolBarEllipses);
232 }
233
234 void CadToolBar::showToolBarSplines()
235 {
236         showToolBar(RS2::ToolBarSplines);
237 }
238
239 void CadToolBar::showToolBarPolylines()
240 {
241 //#ifdef RS_PROF
242         showToolBar(RS2::ToolBarPolylines);
243 //#endif
244 }
245
246 void CadToolBar::showToolBarCircles()
247 {
248         showToolBar(RS2::ToolBarCircles);
249 }
250
251 void CadToolBar::showToolBarInfo()
252 {
253         showToolBar(RS2::ToolBarInfo);
254 }
255
256 void CadToolBar::showToolBarModify()
257 {
258         showToolBar(RS2::ToolBarModify);
259 }
260
261 void CadToolBar::showToolBarSnap()
262 {
263         showToolBar(RS2::ToolBarSnap);
264 }
265
266 void CadToolBar::showToolBarDim()
267 {
268         showToolBar(RS2::ToolBarDim);
269 }
270
271 void CadToolBar::showToolBarSelect()
272 {
273         showToolBarSelect(NULL, -1);
274 }
275
276 void CadToolBar::showToolBarSelect(RS_ActionInterface * selectAction, int nextAction)
277 {
278         tbSelect->setNextAction(nextAction);
279         tbSelect->setSelectAction(selectAction);
280         showToolBar(RS2::ToolBarSelect);
281 }