All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ToolbarOutside.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file ToolbarOutside.h
22 
23  \brief Standard Toolbar for Layout. Includes Qt components for interaction between the user and the plugin/app, via events, made from the Layout module.
24  Ex .: button for create Map, activate ZoomOut function, align selected components to the left, etc.
25  He is also the son of OutsideObserver, so it can become observer of a model (Observable). "View" part of widget.
26 
27  \ingroup layout
28 */
29 
30 #ifndef __TERRALIB_LAYOUT_INTERNAL_TOOLBAR_OUTSIDE_H
31 #define __TERRALIB_LAYOUT_INTERNAL_TOOLBAR_OUTSIDE_H
32 
33 // Qt
34 #include <QToolBar>
35 
36 // TerraLib
37 #include "../../core/pattern/mvc/OutsideObserver.h"
38 #include "../../../geometry/Envelope.h"
39 #include "../../core/Config.h"
40 
41 // STL
42 #include <string>
43 
44 class QGraphicsItem;
45 class QWidget;
46 class QGroupBox;
47 class QAction;
48 class QToolButton;
49 class QMenu;
50 class QPushButton;
51 class QComboBox;
52 
53 namespace te
54 {
55  namespace layout
56  {
57  class EnumType;
58 
59  /*!
60  \brief Standard Toolbar for Layout. Includes Qt components for interaction between the user and the plugin/app, via events, made from the Layout module.
61  Ex .: button for create Map, activate ZoomOut function, align selected components to the left, etc.
62  This is also son of OutsideObserver, so it can become observer of a model (Observable). "View" part of widget.
63 
64  \ingroup layout
65 
66  \sa te::layout::OutsideObserver
67  */
68  class TELAYOUTEXPORT ToolbarOutside : public QToolBar, public OutsideObserver
69  {
70  Q_OBJECT //for slots/signals
71 
72  public:
73 
75 
76  virtual ~ToolbarOutside();
77 
78  virtual void updateObserver(ContextItem context);
79 
80  virtual void setPosition(const double& x, const double& y);
81 
82  virtual te::gm::Coord2D getPosition();
83 
84  virtual void createToolbar();
85 
86  virtual QToolButton* getMapToolButton();
87 
88  virtual QToolButton* getMapToolsToolButton();
89 
90  virtual QToolButton* getGeometryToolButton();
91 
92  virtual QToolButton* getViewAreaToolButton();
93 
94  virtual QToolButton* getArrowCursorButton();
95 
96  virtual QToolButton* getItemTools();
97 
98  virtual QToolButton* getLineIntersectionToolButton();
99 
100  virtual QToolButton* getBringToFrontToolButton();
101 
102  virtual QToolButton* getSendToBackToolButton();
103 
104  virtual QToolButton* getRecomposeToolButton();
105 
106  virtual QToolButton* getTextToolButton();
107 
108  virtual QToolButton* getAlignLeftToolButton();
109 
110  virtual QToolButton* getAlignRightToolButton();
111 
112  virtual QToolButton* getAlignTopToolButton();
113 
114  virtual QToolButton* getAlignBottomToolButton();
115 
116  virtual QToolButton* getAlignCenterHorizontalToolButton();
117 
118  virtual QToolButton* getAlignCenterVerticalToolButton();
119 
120  virtual QToolButton* getRemoveObjectToolButton();
121 
122  virtual QToolButton* getUndoToolButton();
123 
124  virtual QToolButton* getDrawMapToolButton();
125 
126  virtual QToolButton* getObjectToImageButton();
127 
128  virtual QToolButton* getExitButton();
129 
130  virtual QComboBox* getComboBoxZoom();
131 
132  /* Actions (Widget's) */
133 
134  virtual QAction* getActionMapToolButton();
135 
136  virtual QAction* getActionMapToolsToolButton();
137 
138  virtual QAction* getActionGeometryToolButton();
139 
140  virtual QAction* getActionViewAreaToolButton();
141 
142  virtual QAction* getActionArrowCursorButton();
143 
144  virtual QAction* getActionItemTools();
145 
146  virtual QAction* getActionLineIntersectionToolButton();
147 
148  virtual QAction* getActionBringToFrontToolButton();
149 
150  virtual QAction* getActionSendToBackToolButton();
151 
152  virtual QAction* getActionRecomposeToolButton();
153 
154  virtual QAction* getActionTextToolButton();
155 
156  virtual QAction* getActionAlignLeftToolButton();
157 
158  virtual QAction* getActionAlignRightToolButton();
159 
160  virtual QAction* getActionAlignTopToolButton();
161 
162  virtual QAction* getActionAlignBottomToolButton();
163 
164  virtual QAction* getActionAlignCenterHorizontalToolButton();
165 
166  virtual QAction* getActionAlignCenterVerticalToolButton();
167 
168  virtual QAction* getActionRemoveObjectToolButton();
169 
170  virtual QAction* getActionUndoToolButton();
171 
172  virtual QAction* getActionDrawMapToolButton();
173 
174  virtual QAction* getActionObjectToImageButton();
175 
176  virtual QAction* getActionExitButton();
177 
178  virtual QAction* getActionComboBoxZoom();
179 
180  /* Actions names */
181 
182  /* Map Menu */
183 
184  std::string getActionMapDefault();
185 
186  std::string getActionLegendDefault();
187 
188  std::string getActionScale();
189 
190  /* Map Tools */
191 
192  std::string getActionMapZoomIn();
193 
194  std::string getActionMapZoomOut();
195 
196  std::string getActionMapPan();
197 
198  std::string getActionMapSystematicScale();
199 
200  std::string getActionMapCreateTextGrid();
201 
202  std::string getActionMapCreateMapText();
203 
204  std::string getActionMapCreateLegendChildAsObject();
205 
206  std::string getActionGridMap();
207 
208  std::string getActionGridPlanar();
209 
210  std::string getActionGridGeodesic();
211 
212  std::string getActionNorth();
213 
214  std::string getActionMapLocation();
215 
216  /* Geometry Menu */
217 
218  std::string getActionRectangle();
219 
220  std::string getActionPoint();
221 
222  std::string getActionEllipse();
223 
224  std::string getActionArrow();
225 
226  std::string getActionLine();
227 
228  std::string getActionPolygon();
229 
230  /* View Area */
231 
232  std::string getActionViewPan();
233 
234  std::string getActionViewZoomIn();
235 
236  std::string getActionViewZoomOut();
237 
238  /* Items Tools */
239 
240  std::string getActionGroup();
241 
242  std::string getActionUngroup();
243 
244  std::string getActionLineIntersectionMouse();
245 
246  std::string getActionSceneZoom();
247 
248  std::string getActionRemoveObject();
249 
250  /* Text Tools */
251 
252  std::string getActionTextDefault();
253 
254  std::string getActionImage();
255 
256  std::string getActionStringGrid();
257 
258  std::string getActionTitle();
259 
260  std::string getActionBalloon();
261 
262  std::string getActionBarCode();
263 
264 
265  /* Align */
266 
267  std::string getActionAlignLeft();
268 
269  std::string getActionAlignRight();
270 
271  std::string getActionAlignTop();
272 
273  std::string getActionAlignBottom();
274 
275  std::string getActionAlignCenterHorizontal();
276 
277  std::string getActionAlignCenterVertical();
278 
279  /* Undo/Redo */
280 
281  std::string getActionUndo();
282 
283  std::string getActionRedo();
284 
285  std::string getActionDrawMap();
286 
287  std::string getActionObjectToImage();
288 
289  std::string getActionExit();
290 
291  std::string getActionExportToPDF();
292 
293  public slots:
294 
295  virtual void onMapTriggered(QAction* action);
296 
297  virtual void onMapToolsTriggered(QAction* action);
298 
299  virtual void onGeometryTriggered(QAction* action);
300 
301  virtual void onViewAreaTriggered(QAction* action);
302 
303  virtual void onArrowCursorClicked(bool checked);
304 
305  virtual void onItemToolsTriggered(QAction* action);
306 
307  virtual void onLineIntersectionMouse(bool checked);
308 
309  virtual void onSceneZoomCurrentIndexChanged(int index);
310 
311  virtual void onBringToFrontClicked(bool checked);
312 
313  virtual void onSendToBackClicked(bool checked);
314 
315  virtual void onRecomposeClicked(bool checked);
316 
317  virtual void onTextToolsTriggered(QAction* action);
318 
319  virtual void onAlignLeftClicked(bool checked);
320 
321  virtual void onAlignRightClicked(bool checked);
322 
323  virtual void onAlignTopClicked(bool checked);
324 
325  virtual void onAlignBottomClicked(bool checked);
326 
327  virtual void onAlignCenterHorizontalClicked(bool checked);
328 
329  virtual void onAlignCenterVerticalClicked(bool checked);
330 
331  virtual void onRemoveObjectClicked(bool checked);
332 
333  virtual void onDrawMapClicked(bool checked);
334 
335  virtual void onObjectToImageClicked(bool checked);
336 
337  virtual void onExitClicked(bool checked);
338 
339  virtual void onExportToPDFClicked(bool checked);
340 
341  signals:
342 
343  void changeContext(bool change);
344 
345  protected slots:
346 
347  virtual void onChangeZoom(double factor);
348 
349  protected:
350 
351  virtual QToolButton* createMapToolButton();
352 
353  virtual QToolButton* createMapToolsToolButton();
354 
355  virtual QToolButton* createGeometryToolButton();
356 
357  virtual QToolButton* createViewAreaToolButton();
358 
359  virtual QToolButton* createArrowCursorButton();
360 
361  virtual QToolButton* createItemTools();
362 
363  virtual QToolButton* createLineIntersectionToolButton();
364 
365  virtual QToolButton* createBringToFrontToolButton();
366 
367  virtual QComboBox* createSceneZoomCombobox();
368 
369  virtual QToolButton* createSendToBackToolButton();
370 
371  virtual QToolButton* createRecomposeToolButton();
372 
373  virtual QToolButton* createTextToolButton();
374 
375  virtual QToolButton* createAlignLeftToolButton();
376 
377  virtual QToolButton* createAlignRightToolButton();
378 
379  virtual QToolButton* createAlignTopToolButton();
380 
381  virtual QToolButton* createAlignBottomToolButton();
382 
383  virtual QToolButton* createAlignCenterHorizontalToolButton();
384 
385  virtual QToolButton* createAlignCenterVerticalToolButton();
386 
387  virtual QToolButton* createRemoveObjectToolButton();
388 
389  virtual QToolButton* createUndoToolButton();
390 
391  virtual QToolButton* createDrawMapToolButton();
392 
393  virtual QToolButton* createObjectToImageButton();
394 
395  virtual QToolButton* createExitButton();
396 
397  virtual QToolButton* createExportToPDFButton();
398 
399  virtual void changeAction(EnumType* mode);
400 
401  virtual QToolButton* createToolButton(std::string text, std::string tooltip, std::string icon);
402 
403  virtual QPushButton* createPushButton(std::string text, std::string tooltip, std::string icon);
404 
405  virtual QAction* createAction(std::string text, std::string objName, std::string icon, std::string tooltip = "", QWidget* parent = 0);
406 
407  protected:
408 
409  QComboBox* m_comboZoom;
410 
411  /* Map Menu */
412  std::string m_actionMapDefault;
414  std::string m_actionScale;
415 
416  /* Map Tools */
417  std::string m_actionMapZoomIn;
418  std::string m_actionMapZoomOut;
419  std::string m_actionMapPan;
424  std::string m_actionGridMap;
425  std::string m_actionGridPlanar;
426  std::string m_actionGridGeodesic;
427  std::string m_actionNorth;
428  std::string m_actionMapLocation;
429 
430  /* Geometry Menu */
431  std::string m_actionRectangle;
432  std::string m_actionPoint;
433  std::string m_actionEllipse;
434  std::string m_actionArrow;
435  std::string m_actionLine;
436  std::string m_actionPolygon;
437 
438  /* View Area */
439  std::string m_actionViewPan;
440  std::string m_actionViewZoomIn;
441  std::string m_actionViewZoomOut;
442 
443  /* Items Tools */
444 
445  std::string m_actionGroup;
446  std::string m_actionUngroup;
447 
449 
450  std::string m_actionSceneZoom;
451 
452  std::string m_actionRemoveObject;
453 
454  /* Text Tools */
455  std::string m_actionTextDefault;
456  std::string m_actionImage;
457  std::string m_actionStringGrid;
458  std::string m_actionTitle;
459  std::string m_actionBalloon;
460  std::string m_actionBarCode;
461 
462  /* Align */
463  std::string m_actionAlignLeft;
464  std::string m_actionAlignRight;
465  std::string m_actionAlignTop;
466  std::string m_actionAlignBottom;
469 
470  /* Undo/Redo */
471  std::string m_actionUndo;
472  std::string m_actionRedo;
473 
474  std::string m_actionDrawMap;
475 
477  std::string m_actionExit;
478  std::string m_actionExportToPDF;
479 
480  /* ToolButton */
481  QToolButton* m_mapToolButton;
482  QToolButton* m_mapToolsToolButton;
483  QToolButton* m_geometryToolButton;
484  QToolButton* m_viewAreaToolButton;
485  QToolButton* m_arrowCursorButton;
486  QToolButton* m_itemTools;
490  QToolButton* m_recomposeToolButton;
491  QToolButton* m_textToolButton;
492  QToolButton* m_alignLeftToolButton;
494  QToolButton* m_alignTopToolButton;
499  QToolButton* m_undoToolButton;
500  QToolButton* m_drawMapToolButton;
501  QToolButton* m_objectToImageButton;
502  QToolButton* m_exitButton;
503  QToolButton* m_exportToPDFButton;
504 
505  /* Actions (Widget's) */
506 
531  };
532  }
533 }
534 
535 #endif
Abstract class to represent an observable. "Model" part of MVC component.
Definition: Observable.h:56
Class responsible for maintaining the drawing context of a MVC component. It is always used by the "M...
Definition: ContextItem.h:49
QToolButton * m_arrowCursorButton
QToolButton * m_geometryToolButton
QToolButton * m_drawMapToolButton
QToolButton * m_alignTopToolButton
QToolButton * m_viewAreaToolButton
#define TELAYOUTEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:99
Abstract class to represent an observer. "View" part of MVC widget. All classes representing the grap...
QAction * m_actionAlignCenterHorizontalToolButton
QAction * m_actionAlignCenterVerticalToolButton
QToolButton * m_exportToPDFButton
An utility struct for representing 2D coordinates.
Definition: Coord2D.h:40
std::string m_actionMapSystematicScale
QAction * m_actionBringToFrontToolButton
QAction * m_actionLineIntersectionToolButton
std::string m_actionMapCreateMapText
QToolButton * m_bringToFrontToolButton
QToolButton * m_alignBottomToolButton
std::string m_actionLineIntersectionMouse
std::string m_actionAlignCenterVertical
QToolButton * m_mapToolsToolButton
QToolButton * m_alignCenterVerticalToolButton
QToolButton * m_sendToBackToolButton
std::string m_actionMapCreateTextGrid
QToolButton * m_alignRightToolButton
QToolButton * m_alignCenterHorizontalToolButton
QToolButton * m_lineIntersectionToolButton
QToolButton * m_removeObjectToolButton
Class that represents the value of an enumeration. An enumeration is made of "1..n" objects EnumType...
Definition: EnumType.h:48
Standard Toolbar for Layout. Includes Qt components for interaction between the user and the plugin/a...
QAction * m_actionRemoveObjectToolButton
QToolButton * m_objectToImageButton
Abstract class to represent a controller. "Controller" part of MVC widget. All classes representing t...
std::string m_actionMapCreateLegendChildAsObject
QToolButton * m_recomposeToolButton
QToolButton * m_alignLeftToolButton
std::string m_actionAlignCenterHorizontal