]> Shamusworld >> Repos - architektonas/blob - src/forms/cadtoolbar.cpp
4bfe299ab4c4a50bd25d75b361d179b2806cb9c4
[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?
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 != NULL && 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
98         tbPoints = new CadToolBarPoints(this);
99         tbPoints->setCadToolBar(this);
100         tbPoints->hide();
101
102         tbLines = new CadToolBarLines(this);
103         tbLines->setCadToolBar(this);
104         tbLines->hide();
105
106         tbArcs = new CadToolBarArcs(this);
107         tbArcs->setCadToolBar(this);
108         tbArcs->hide();
109
110         tbCircles = new CadToolBarCircles(this);
111         tbCircles->setCadToolBar(this);
112         tbCircles->hide();
113
114         tbEllipses = new CadToolBarEllipses(this);
115         tbEllipses->setCadToolBar(this);
116         tbEllipses->hide();
117
118         tbSplines = new CadToolBarSplines(this);
119         tbSplines->setCadToolBar(this);
120         tbSplines->hide();
121
122 //#ifdef RS_PROF
123         tbPolylines = new CadToolBarPolylines(this);
124         tbPolylines->setCadToolBar(this);
125         tbPolylines->hide();
126 //#endif
127
128         tbDim = new CadToolBarDim(this);
129         tbDim->setCadToolBar(this);
130         tbDim->hide();
131
132         tbInfo = new CadToolBarInfo(this);
133         tbInfo->setCadToolBar(this);
134         tbInfo->hide();
135
136         tbModify = new CadToolBarModify(this);
137         tbModify->setCadToolBar(this);
138         tbModify->hide();
139
140         tbSnap = new CadToolBarSnap(this);
141         tbSnap->setCadToolBar(this);
142         tbSnap->hide();
143
144         tbSelect = new CadToolBarSelect(this);
145         tbSelect->setCadToolBar(this);
146         tbSelect->hide();
147
148         //showToolBarMain();
149 }
150
151 void CadToolBar::showToolBar(int id)
152 {
153         QWidget * newTb = NULL;
154
155         switch (id)
156         {
157         default:
158         case RS2::ToolBarMain:
159                 newTb = tbMain;
160                 break;
161         case RS2::ToolBarPoints:
162                 newTb = tbPoints;
163                 break;
164         case RS2::ToolBarLines:
165                 newTb = tbLines;
166                 break;
167         case RS2::ToolBarArcs:
168                 newTb = tbArcs;
169                 break;
170         case RS2::ToolBarEllipses:
171                 newTb = tbEllipses;
172                 break;
173         case RS2::ToolBarSplines:
174                 newTb = tbSplines;
175                 break;
176 //#ifdef RS_PROF
177         case RS2::ToolBarPolylines:
178                 newTb = tbPolylines;
179                 break;
180 //#endif
181         case RS2::ToolBarCircles:
182                 newTb = tbCircles;
183                 break;
184         case RS2::ToolBarInfo:
185                 newTb = tbInfo;
186                 break;
187         case RS2::ToolBarModify:
188                 newTb = tbModify;
189                 break;
190         case RS2::ToolBarDim:
191                 newTb = tbDim;
192                 break;
193         case RS2::ToolBarSnap:
194                 newTb = tbSnap;
195                 break;
196         case RS2::ToolBarSelect:
197                 newTb = tbSelect;
198                 break;
199         }
200
201         if (currentTb == newTb)
202                 return;
203
204         if (currentTb != NULL)
205                 currentTb->hide();
206
207         currentTb = newTb;
208
209         if (currentTb != NULL)
210                 currentTb->show();
211 }
212
213 void CadToolBar::showToolBarMain()
214 {
215         showToolBar(RS2::ToolBarMain);
216 }
217
218 void CadToolBar::showToolBarPoints()
219 {
220         showToolBar(RS2::ToolBarPoints);
221 }
222
223 void CadToolBar::showToolBarLines()
224 {
225         showToolBar(RS2::ToolBarLines);
226 }
227
228 void CadToolBar::showToolBarArcs()
229 {
230         showToolBar(RS2::ToolBarArcs);
231 }
232
233 void CadToolBar::showToolBarEllipses()
234 {
235         showToolBar(RS2::ToolBarEllipses);
236 }
237
238 void CadToolBar::showToolBarSplines()
239 {
240         showToolBar(RS2::ToolBarSplines);
241 }
242
243 void CadToolBar::showToolBarPolylines()
244 {
245 //#ifdef RS_PROF
246         showToolBar(RS2::ToolBarPolylines);
247 //#endif
248 }
249
250 void CadToolBar::showToolBarCircles()
251 {
252         showToolBar(RS2::ToolBarCircles);
253 }
254
255 void CadToolBar::showToolBarInfo()
256 {
257         showToolBar(RS2::ToolBarInfo);
258 }
259
260 void CadToolBar::showToolBarModify()
261 {
262         showToolBar(RS2::ToolBarModify);
263 }
264
265 void CadToolBar::showToolBarSnap()
266 {
267         showToolBar(RS2::ToolBarSnap);
268 }
269
270 void CadToolBar::showToolBarDim()
271 {
272         showToolBar(RS2::ToolBarDim);
273 }
274
275 void CadToolBar::showToolBarSelect()
276 {
277         showToolBarSelect(NULL, -1);
278 }
279
280 void CadToolBar::showToolBarSelect(RS_ActionInterface * selectAction, int nextAction)
281 {
282         tbSelect->setNextAction(nextAction);
283         tbSelect->setSelectAction(selectAction);
284         showToolBar(RS2::ToolBarSelect);
285 }