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 QList<QAction*> acts = m_parentMenu->actions();
454 foreach(QAction* act, acts)
456 act->setVisible(
true);
462 QAction* firstOption = acts.first();
463 firstOption->setVisible(
false);
472 QList<QAction*> acts = m_parentMenu->actions();
473 foreach(QAction* act, acts)
475 act->setVisible(
false);
481 QAction* firstOption = acts.first();
482 firstOption->setVisible(
true);
485 m_view->closeOutsideWindows();
490 QList<QGraphicsItem*> graphicsItems = m_view->scene()->selectedItems();
491 QList<QGraphicsItem*> allItems = m_view->scene()->items();
495 m_dockProperties->getPropertiesOutside()->itemsSelected(graphicsItems, allItems);
498 m_dockInspector->getObjectInspectorOutside()->selectItems(graphicsItems);
503 QList<QGraphicsItem*> allItems = m_view->scene()->items();
506 m_dockInspector->getObjectInspectorOutside()->itemsInspector(allItems);
519 m_view->closeOutsideWindows();
526 m_view->closeOutsideWindows();
543 msg =
"Map Layout - TerraLib 5";
544 m_statusBar->showMessage(msg.c_str());
548 msg =
"Map Layout - TerraLib 5 | Context: ";
550 std::string s_mode = mode->
getLabel();
551 if(s_mode.compare(
"") == 0)
556 m_statusBar->showMessage(msg.c_str());
561 QList<QGraphicsItem*> allItems = m_view->scene()->items();
564 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.