33 #include "../../../layout/core/pattern/singleton/Context.h"
34 #include "../../../layout/qt/outside/PropertiesOutside.h"
35 #include "../../../layout/qt/outside/ObjectInspectorOutside.h"
36 #include "../../../layout/core/enum/Enums.h"
37 #include "../../../layout/core/pattern/mvc/OutsideObserver.h"
38 #include "../../../layout/qt/core/BuildGraphicsItem.h"
39 #include "../../../layout/qt/core/BuildGraphicsOutside.h"
45 #include <QMainWindow>
51 m_dockParent(dockParent),
54 m_dockEditTemplate(0),
55 m_parentMenu(mnuLayout),
59 m_optionNew(
"mnu_main_new"),
60 m_optionUpdate(
"mnu_main_update"),
61 m_optionImportJSON(
"mnu_main_import_json"),
62 m_optionExportJSON(
"mnu_main_export_json"),
63 m_optionPageConfig(
"mnu_main_page_config"),
64 m_optionPrint(
"mnu_main_print"),
65 m_optionExit(
"mnu_main_exit"),
66 m_optionDockInspector(
"mnu_dock_inspector"),
67 m_optionDockProperties(
"mnu_dock_properties"),
68 m_optionDockToolbar(
"mnu_dock_toolbar"),
69 m_optionDockEditTemplate(
"mnu_dock_edit_template")
76 QMainWindow* win = (QMainWindow*)m_dockParent;
83 win->removeDockWidget(m_dockProperties);
84 m_dockProperties->close();
85 m_dockProperties->setParent(0);
86 delete m_dockProperties;
92 win->removeDockWidget(m_dockInspector);
93 m_dockInspector->close();
94 m_dockInspector->setParent(0);
95 delete m_dockInspector;
101 win->removeToolBar(m_toolbar);
103 m_toolbar->setParent(0);
108 if(m_dockEditTemplate)
110 win->removeDockWidget(m_dockEditTemplate);
111 m_dockEditTemplate->close();
112 m_dockEditTemplate->setParent(0);
113 delete m_dockEditTemplate;
114 m_dockEditTemplate = 0;
122 connect(m_view, SIGNAL(reloadProperties()),
this, SLOT(onSelectionChanged()));
123 connect(m_view->scene(), SIGNAL(addItemFinalized()),
this, SLOT(onAddItemFinalized()));
124 connect(m_view, SIGNAL(hideView()),
this, SLOT(onHideView()));
125 connect(m_view, SIGNAL(closeView()),
this, SLOT(onCloseView()));
126 connect(m_view, SIGNAL(showView()),
this, SLOT(onShowView()));
127 connect(
this, SIGNAL(changeMenuContext(
bool)), m_view, SLOT(onMainMenuChangeContext(
bool)));
128 connect(m_view, SIGNAL(changeContext()),
this, SLOT(onRefreshStatusBar()));
132 if(abstractBuildItem)
137 connect(buildItem, SIGNAL(addChildFinalized(QGraphicsItem*, QGraphicsItem*)),
this, SLOT(onAddChildFinalized(QGraphicsItem*, QGraphicsItem*)));
141 createPropertiesDock();
143 createInspectorDock();
149 createEditTemplateDock();
153 connect(m_toolbar, SIGNAL(changeContext(
bool)), m_view, SLOT(onToolbarChangeContext(
bool)));
154 connect(m_view, SIGNAL(changeZoom(
double)), m_toolbar, SLOT(onChangeZoom(
double)));
159 connect(m_view->scene(), SIGNAL(deleteFinalized(std::vector<std::string>)),
160 m_dockInspector->getObjectInspectorOutside(), SLOT(onRemoveProperties(std::vector<std::string>)));
165 connect(m_view->scene(), SIGNAL(deleteFinalized(std::vector<std::string>)),
166 m_dockProperties->getPropertiesOutside(), SLOT(onClear(std::vector<std::string>)));
173 m_dockProperties->setFeatures(QDockWidget::DockWidgetMovable |
174 QDockWidget::DockWidgetFloatable);
180 m_dockInspector->setFeatures(QDockWidget::DockWidgetMovable |
181 QDockWidget::DockWidgetFloatable);
186 QMainWindow* win = (QMainWindow*)m_dockParent;
192 if(!abstractBuildOutside)
216 win->addToolBar(m_toolbar);
222 m_dockEditTemplate->setFeatures(QDockWidget::NoDockWidgetFeatures);
223 m_dockEditTemplate->setVisible(
false);
228 connect(m_parentMenu, SIGNAL(triggered(QAction*)),
this, SLOT(onMainMenuTriggered(QAction*)));
230 QAction* actionNew = createAction(
"New", m_optionNew,
"layout-new");
231 m_parentMenu->addAction(actionNew);
233 QAction* actionSave = createAction(
"Update Template", m_optionUpdate,
"layout-save");
234 m_parentMenu->addAction(actionSave);
236 m_parentMenu->addSeparator();
238 QMenu* mnuImport = m_parentMenu->addMenu(
"Import Template");
239 QMenu* mnuExport = m_parentMenu->addMenu(
"Export Template");
241 QAction* actionImportJSON = createAction(
"Import JSON Template", m_optionImportJSON,
"layout-import");
242 mnuImport->addAction(actionImportJSON);
244 QAction* actionExportJSON = createAction(
"Export JSON Template", m_optionExportJSON,
"layout-export");
245 mnuExport->addAction(actionExportJSON);
247 m_parentMenu->addSeparator();
249 QAction* actionDockInspector = createAction(
"Dock Inspector", m_optionDockInspector,
"");
250 actionDockInspector->setCheckable(
true);
251 actionDockInspector->setChecked(
true);
252 m_parentMenu->addAction(actionDockInspector);
254 QAction* actionDockProperties = createAction(
"Dock Properties", m_optionDockProperties,
"");
255 actionDockProperties->setCheckable(
true);
256 actionDockProperties->setChecked(
true);
257 m_parentMenu->addAction(actionDockProperties);
259 m_parentMenu->addSeparator();
261 QAction* actionPageConfig = createAction(
"Page Config...", m_optionPageConfig,
"layout-page-setup");
262 m_parentMenu->addAction(actionPageConfig);
264 QAction* actionPrint = createAction(
"Print...", m_optionPrint,
"layout-printer");
265 m_parentMenu->addAction(actionPrint);
267 m_parentMenu->addSeparator();
269 QAction* actionExit = createAction(
"Exit", m_optionExit,
"layout-close");
270 m_parentMenu->addAction(actionExit);
277 if(action->objectName().compare(m_optionNew.c_str()) == 0)
281 else if(action->objectName().compare(m_optionUpdate.c_str()) == 0)
285 else if(action->objectName().compare(m_optionImportJSON.c_str()) == 0)
289 else if(action->objectName().compare(m_optionExportJSON.c_str()) == 0)
293 else if(action->objectName().compare(m_optionPageConfig.c_str()) == 0)
297 else if(action->objectName().compare(m_optionPrint.c_str()) == 0)
301 else if(action->objectName().compare(m_optionExit.c_str()) == 0)
306 else if(action->objectName().compare(m_optionDockInspector.c_str()) == 0)
308 if(m_dockInspector->isVisible())
310 m_dockInspector->setVisible(
false);
314 m_dockInspector->setVisible(
true);
317 else if(action->objectName().compare(m_optionDockProperties.c_str()) == 0)
319 if(m_dockProperties->isVisible())
321 m_dockProperties->setVisible(
false);
325 m_dockProperties->setVisible(
true);
328 else if(action->objectName().compare(m_optionDockEditTemplate.c_str()) == 0)
330 if(m_dockEditTemplate->isVisible())
332 m_dockEditTemplate->setVisible(
false);
336 m_dockEditTemplate->setVisible(
true);
343 QAction *actionMenu =
new QAction(text.c_str(), m_parentMenu);
344 actionMenu->setObjectName(objName.c_str());
346 actionMenu->setIcon(QIcon::fromTheme(icon.c_str()));
347 actionMenu->setToolTip(tooltip.c_str());
357 if(mode != layoutMode)
366 emit changeMenuContext(result);
371 return m_dockProperties;
376 return m_dockInspector;
386 QMainWindow* win = (QMainWindow*)m_dockParent;
393 m_dockProperties->setParent(m_dockParent);
394 win->addDockWidget(Qt::LeftDockWidgetArea, m_dockProperties);
395 m_dockProperties->setVisible(
true);
399 m_dockInspector->setParent(m_dockParent);
400 win->addDockWidget(Qt::LeftDockWidgetArea, m_dockInspector);
401 m_dockInspector->setVisible(
true);
405 m_toolbar->setParent(m_dockParent);
406 win->addToolBar(m_toolbar);
407 m_toolbar->setVisible(
true);
409 if(m_dockEditTemplate)
411 m_dockEditTemplate->setParent(m_dockParent);
412 win->addDockWidget(Qt::RightDockWidgetArea, m_dockEditTemplate);
413 bool visible = m_dockEditTemplate->isVisible();
414 m_dockEditTemplate->setVisible(visible);
420 QMainWindow* win = (QMainWindow*)m_dockParent;
427 win->removeDockWidget(m_dockProperties);
428 m_dockProperties->close();
432 win->removeDockWidget(m_dockInspector);
433 m_dockInspector->close();
437 win->removeToolBar(m_toolbar);
440 if(m_dockEditTemplate)
442 win->removeDockWidget(m_dockEditTemplate);
443 m_dockEditTemplate->close();
452 bool exist_menu =
false;
453 QList<QAction*> acts = m_parentMenu->actions();
455 foreach(QAction* act, acts)
457 act->setVisible(
true);
463 QAction* firstOption = acts.first();
464 firstOption->setVisible(
false);
473 QList<QAction*> acts = m_parentMenu->actions();
474 foreach(QAction* act, acts)
476 act->setVisible(
false);
482 QAction* firstOption = acts.first();
483 firstOption->setVisible(
true);
486 m_view->closeOutsideWindows();
491 QList<QGraphicsItem*> graphicsItems = m_view->scene()->selectedItems();
492 QList<QGraphicsItem*> allItems = m_view->scene()->items();
496 m_dockProperties->getPropertiesOutside()->itemsSelected(graphicsItems, allItems);
499 m_dockInspector->getObjectInspectorOutside()->selectItems(graphicsItems);
504 QList<QGraphicsItem*> allItems = m_view->scene()->items();
507 m_dockInspector->getObjectInspectorOutside()->itemsInspector(allItems);
520 m_view->closeOutsideWindows();
527 m_view->closeOutsideWindows();
544 msg =
"Map Layout - TerraLib 5";
545 m_statusBar->showMessage(msg.c_str());
549 msg =
"Map Layout - TerraLib 5 | Context: ";
551 std::string s_mode = mode->
getLabel();
552 if(s_mode.compare(
"") == 0)
557 m_statusBar->showMessage(msg.c_str());
562 QList<QGraphicsItem*> allItems = m_view->scene()->items();
565 m_dockInspector->getObjectInspectorOutside()->itemsInspector(allItems);
virtual void changeAction(te::layout::EnumType *mode)
virtual void onCloseView()
Class to represent a graphic object (MVC component) and widget object (MVC widget) type enumeration...
QWidget * createOuside(te::layout::EnumType *type)
Method to create a widget from the type.
std::string getName()
Returns name.
ObjectInspectorDock * getObjectInspectorDock()
std::string getLabel()
Returns label.
virtual void onAddChildFinalized(QGraphicsItem *parent, QGraphicsItem *child)
virtual void openMainMenu()
virtual void createEditTemplateDock()
virtual EnumType * getModeExportPropsJSON() const
Returns value that represents export properties to json mode type belonging to enumeration.
PropertiesDock * getPropertiesDock()
virtual void createToolbar()
virtual EnumType * getModeExit() const
Returns value that represents exit mode type belonging to enumeration.
Abstract class for build MVC widgets.
virtual void onSelectionChanged()
virtual void createPropertiesDock()
virtual void closeMainMenu()
Class responsible for creating or building graphics objects. All objects are children of QGraphicsIte...
virtual EnumType * getModeNewTemplate() const
Returns value that represents new template mode type belonging to enumeration.
virtual void createMainMenu()
virtual void onAddItemFinalized()
virtual void openAllDocks()
static Context & getInstance()
It returns a reference to the singleton instance.
Class to represent a mode type enumeration. Ex.: select, pan, create text, etc. The type of mode is u...
Class responsible for creating or building widgets. All objects are children of Qwidget and OutsideOb...
Class representing the view. This view is child of QGraphicsView, part of Graphics View Framework...
virtual void onShowView()
virtual void onRefreshStatusBar()
virtual EnumType * getToolbar() const
Returns value that represents toolbar widget (MVC widget) type belonging to enumeration.
OutsideArea(te::layout::View *view, QWidget *dockParent=0, QMenu *mnuLayout=0, QStatusBar *status=0)
virtual void onHideView()
virtual void closeAllDocks()
virtual QAction * createAction(std::string text, std::string objName, std::string icon, std::string tooltip="")
virtual void onMainMenuTriggered(QAction *action)
virtual void createInspectorDock()
Class that represents the value of an enumeration. An enumeration is made of "1..n" objects EnumType...
virtual EnumType * getModePrinter() const
Returns value that represents printer mode type belonging to enumeration.
te::layout::ToolbarOutside * getToolbar()
virtual EnumType * getModeImportJSONProps() const
Returns value that represents import properties from json mode type belonging to enumeration.
Abstract class for build graphics MVC components.
virtual EnumType * getModePageConfig() const
Returns value that represents page configuration mode type belonging to enumeration.