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