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.