30 #include "../../core/pattern/singleton/Context.h" 
   31 #include "../../core/AbstractScene.h" 
   32 #include "../core/Scene.h" 
   33 #include "../../core/pattern/mvc/OutsideModelObservable.h" 
   34 #include "../../core/pattern/mvc/ItemObserver.h" 
   35 #include "../../core/pattern/mvc/OutsideObserver.h" 
   36 #include "../../core/pattern/mvc/OutsideController.h" 
   37 #include "../../../geometry/Envelope.h" 
   38 #include "../../core/enum/Enums.h" 
   45 #include <QToolButton> 
   48 #include <QVBoxLayout> 
   53 #include <QPushButton> 
   60   m_actionMapDefault(
"map_default"),
 
   61   m_actionLegendDefault(
"legend_default"),
 
   62   m_actionScale(
"scale_object"),
 
   63   m_actionMapZoomIn(
"map_zoom_in"),
 
   64   m_actionMapZoomOut(
"map_zoom_out"),
 
   65   m_actionMapPan(
"map_pan"),
 
   66   m_actionMapSystematicScale(
"map_systematic_scale"),
 
   67   m_actionMapCreateTextGrid(
"map_text_grid"),
 
   68   m_actionMapCreateMapText(
"map_text_map"),
 
   69   m_actionMapCreateLegendChildAsObject(
"legend_child"),
 
   70   m_actionGridMap(
"map_grid_map"),
 
   71   m_actionGridPlanar(
"map_grid_planar"),
 
   72   m_actionGridGeodesic(
"map_grid_geodesic"),
 
   73   m_actionNorth(
"map_north"),
 
   74   m_actionMapLocation(
"map_location"),
 
   75   m_actionRectangle(
"geometry_rectangle"),
 
   76   m_actionPoint(
"geometry_point"),
 
   77   m_actionEllipse(
"geometry_ellipse"),
 
   78   m_actionArrow(
"geometry_arrow"),
 
   79   m_actionLine(
"geometry_line"),
 
   80   m_actionPolygon(
"geometry_polygon"),
 
   81   m_actionViewPan(
"view_pan"),
 
   82   m_actionViewZoomIn(
"view_zoom_in"),
 
   83   m_actionViewZoomOut(
"view_zoom_out"),
 
   84   m_actionGroup(
"items_group"),
 
   85   m_actionUngroup(
"items_ungroup"),
 
   86   m_actionLineIntersectionMouse(
"items_intersection_mouse"),
 
   87   m_actionSceneZoom(
"scene_zoom"),
 
   88   m_actionRemoveObject(
"remove_item"),
 
   89   m_actionTextDefault(
"text_default"),
 
   90   m_actionImage(
"text_image"),
 
   91   m_actionStringGrid(
"text_stringGrid"),
 
   92   m_actionTitle(
"text_title"),
 
   93   m_actionBalloon(
"text_balloon"),
 
   94   m_actionBarCode(
"text_barCode"),
 
   95   m_actionAlignLeft(
"align_left"),
 
   96   m_actionAlignRight(
"align_right"),
 
   97   m_actionAlignTop(
"align_top"),
 
   98   m_actionAlignBottom(
"align_bottom"),
 
   99   m_actionAlignCenterHorizontal(
"align_center_horizontal"),
 
  100   m_actionAlignCenterVertical(
"align_center_vertical"),
 
  101   m_actionUndo(
"undo"),
 
  102   m_actionRedo(
"redo"),
 
  103   m_actionDrawMap(
"draw_map"),
 
  104   m_actionObjectToImage(
"object_to_image"),
 
  105   m_actionExit(
"exit"),
 
  106   m_actionExportToPDF(
"export_to_pdf"),
 
  108   m_mapToolsToolButton(0),
 
  109   m_geometryToolButton(0),
 
  110   m_viewAreaToolButton(0),
 
  111   m_arrowCursorButton(0),
 
  113   m_lineIntersectionToolButton(0),
 
  114   m_bringToFrontToolButton(0),
 
  115   m_sendToBackToolButton(0),
 
  116   m_recomposeToolButton(0),
 
  118   m_alignLeftToolButton(0),
 
  119   m_alignRightToolButton(0),
 
  120   m_alignTopToolButton(0),
 
  121   m_alignBottomToolButton(0),
 
  122   m_alignCenterHorizontalToolButton(0),
 
  123   m_alignCenterVerticalToolButton(0),
 
  124   m_removeObjectToolButton(0),
 
  126   m_drawMapToolButton(0),
 
  127   m_objectToImageButton(0),
 
  129   m_exportToPDFButton(0),
 
  130   m_actionComboZoom(0),
 
  131   m_actionMapToolButton(0),
 
  132   m_actionMapToolsToolButton(0),
 
  133   m_actionGeometryToolButton(0),
 
  134   m_actionViewAreaToolButton(0),
 
  135   m_actionArrowCursorButton(0),
 
  136   m_actionItemTools(0),
 
  137   m_actionLineIntersectionToolButton(0),
 
  138   m_actionBringToFrontToolButton(0),
 
  139   m_actionSendToBackToolButton(0),
 
  140   m_actionRecomposeToolButton(0),
 
  141   m_actionTextToolButton(0),
 
  142   m_actionAlignLeftToolButton(0),
 
  143   m_actionAlignRightToolButton(0),
 
  144   m_actionAlignTopToolButton(0),
 
  145   m_actionAlignBottomToolButton(0),
 
  146   m_actionAlignCenterHorizontalToolButton(0),
 
  147   m_actionAlignCenterVerticalToolButton(0),
 
  148   m_actionRemoveObjectToolButton(0),
 
  149   m_actionUndoToolButton(0),
 
  150   m_actionDrawMapToolButton(0),
 
  151   m_actionObjectToImageButton(0),
 
  152   m_actionExitButton(0),
 
  153   m_actionExportToPDFButton(0)
 
  156   setWindowTitle(
"Layout - Toolbar");
 
  157   setMinimumSize(200, 10);
 
  167   setVisible(context.
isShow());
 
  168   if(context.
isShow() == 
true)
 
  182   QPointF posF = pos();
 
  183   qreal valuex = posF.x();
 
  184   qreal valuey = posF.y();
 
  187   coordinate.
x = valuex;
 
  188   coordinate.
y = valuey;
 
  195   createArrowCursorButton();
 
  196   createDrawMapToolButton();
 
  197   this->addSeparator();
 
  199   createRecomposeToolButton();
 
  200   this->addSeparator();
 
  202   createUndoToolButton();
 
  203   this->addSeparator();
 
  205   createViewAreaToolButton();
 
  206   createMapToolsToolButton();
 
  207   this->addSeparator();
 
  209   createMapToolButton();  
 
  210   createGeometryToolButton();
 
  211   createTextToolButton();
 
  212   this->addSeparator();
 
  215   this->addSeparator();
 
  217   createRemoveObjectToolButton();
 
  218   this->addSeparator();
 
  220   createBringToFrontToolButton();
 
  221   createSendToBackToolButton();
 
  222   this->addSeparator();
 
  224   createAlignLeftToolButton();
 
  225   createAlignTopToolButton();
 
  226   createAlignBottomToolButton();
 
  227   createAlignRightToolButton();
 
  228   this->addSeparator();
 
  230   createAlignCenterHorizontalToolButton();
 
  231   createAlignCenterVerticalToolButton();
 
  232   this->addSeparator();
 
  234   createObjectToImageButton();
 
  235   this->addSeparator();
 
  237   createExportToPDFButton();
 
  238   this->addSeparator();
 
  240   createSceneZoomCombobox();
 
  241   this->addSeparator();
 
  244   this->addSeparator();
 
  249   QToolButton *btnMap = createToolButton(
"Map", 
"Map Objects", 
"");
 
  251   QMenu* menu = 
new QMenu(btnMap);
 
  253   QAction* actionDefaultMenu = createAction(
"Default Map Object", m_actionMapDefault, 
"layout-default-map", 
"", menu);
 
  254   menu->addAction(actionDefaultMenu);
 
  256   QAction* actionGridMap = createAction(
"Grid Map", m_actionGridMap, 
"layout-grid", 
"", menu);
 
  257   menu->addAction(actionGridMap);
 
  259   QAction* actionGridPlanar = createAction(
"Grid Planar", m_actionGridPlanar, 
"layout-grid", 
"", menu);
 
  260   menu->addAction(actionGridPlanar);
 
  262   QAction* actionGridGeodesic = createAction(
"Grid Geodesic", m_actionGridGeodesic, 
"layout-grid", 
"", menu);
 
  263   menu->addAction(actionGridGeodesic);
 
  265   QAction* actionLegend = createAction(
"Default Legend", m_actionLegendDefault, 
"layout-default-legend", 
"", menu);
 
  266   menu->addAction(actionLegend);
 
  268   QAction* actionScale = createAction(
"Scale Object", m_actionScale, 
"layout-scale", 
"", menu);
 
  269   menu->addAction(actionScale);
 
  271   QAction* actionNorth = createAction(
"North Object", m_actionNorth, 
"layout-north", 
"", menu);
 
  272   menu->addAction(actionNorth);
 
  274   QAction* actionMapLocation = createAction(
"Map Location Object", m_actionMapLocation, 
"layout-map-location", 
"", menu);
 
  275   menu->addAction(actionMapLocation);
 
  277   btnMap->setMenu(menu);
 
  278   btnMap->setPopupMode(QToolButton::MenuButtonPopup);
 
  279   btnMap->setDefaultAction(actionDefaultMenu);
 
  281   connect(btnMap, SIGNAL(triggered(QAction*)), 
this, SLOT(onMapTriggered(QAction*)));
 
  282   m_actionMapToolButton = this->addWidget(btnMap);
 
  284   m_mapToolButton = btnMap;
 
  291   QToolButton *btnMapTools = createToolButton(
"Map Tools", 
"Map Tools", 
"");
 
  293   QMenu* menu = 
new QMenu(btnMapTools);
 
  295   QAction* actionPan = createAction(
"Pan Tool", m_actionMapPan, 
"layout-map-pan", 
"", menu);
 
  296   menu->addAction(actionPan);
 
  298   QAction* actionZoomIn = createAction(
"Zoom In", m_actionMapZoomIn, 
"layout-map-zoom-in", 
"", menu);
 
  299   menu->addAction(actionZoomIn);
 
  301   QAction* actionZoomOut = createAction(
"Zoom Out", m_actionMapZoomOut, 
"layout-map-zoom-out", 
"", menu);
 
  302   menu->addAction(actionZoomOut);
 
  304   QAction* actionSystematic = createAction(
"Systematic Scale", m_actionMapSystematicScale, 
"layout-systematic-map", 
"", menu);
 
  305   menu->addAction(actionSystematic);
 
  307   QAction* actionTextGrid = createAction(
"Text Grid as Object", m_actionMapCreateTextGrid, 
"layout-createtext-as-obj", 
"", menu);
 
  308   menu->addAction(actionTextGrid);
 
  310   QAction* actionTextMap = createAction(
"Text Map as Object", m_actionMapCreateMapText, 
"layout-createmap-text-as-objs", 
"", menu);
 
  311   menu->addAction(actionTextMap);
 
  313   QAction* actionLegend = createAction(
"Legend as Object", m_actionMapCreateLegendChildAsObject, 
"layout-legend-child", 
"", menu);
 
  314   menu->addAction(actionLegend);
 
  316   btnMapTools->setMenu(menu);
 
  317   btnMapTools->setPopupMode(QToolButton::MenuButtonPopup);
 
  318   btnMapTools->setDefaultAction(actionPan);
 
  320   connect(btnMapTools, SIGNAL(triggered(QAction*)), 
this, SLOT(onMapToolsTriggered(QAction*)));
 
  321   m_actionMapToolsToolButton = this->addWidget(btnMapTools);
 
  323   m_mapToolsToolButton = btnMapTools;
 
  330   QToolButton *btnGeometry = createToolButton(
"Geometry Tools", 
"Geometries Objects", 
"");
 
  332   QMenu* menu = 
new QMenu(btnGeometry);
 
  334   QAction* actionRectagle = createAction(
"Rectangle Object", m_actionRectangle, 
"layout-square", 
"", menu);
 
  335   menu->addAction(actionRectagle);
 
  337   QAction* actionArrow = createAction(
"Arrow Object", m_actionArrow, 
"layout-arrow", 
"", menu);
 
  338   menu->addAction(actionArrow);
 
  340   QAction* actionEllipse = createAction(
"Ellipse Object", m_actionEllipse, 
"layout-ellipse", 
"", menu);
 
  341   menu->addAction(actionEllipse);
 
  343   QAction* actionPoint = createAction(
"Point Object", m_actionPoint, 
"layout-point", 
"", menu);
 
  344   menu->addAction(actionPoint);
 
  346   QAction* actionLine = createAction(
"Line Object", m_actionLine, 
"layout-drawline", 
"", menu); 
 
  347   menu->addAction(actionLine);
 
  349   QAction* actionPolygon = createAction(
"Polygon Object", m_actionPolygon, 
"layout-polygon", 
"", menu); 
 
  350   menu->addAction(actionPolygon);
 
  352   btnGeometry->setMenu(menu);
 
  353   btnGeometry->setPopupMode(QToolButton::MenuButtonPopup);
 
  354   btnGeometry->setDefaultAction(actionRectagle);
 
  356   connect(btnGeometry, SIGNAL(triggered(QAction*)), 
this, SLOT(onGeometryTriggered(QAction*)));
 
  357   m_actionGeometryToolButton = this->addWidget(btnGeometry);
 
  359   m_geometryToolButton = btnGeometry;
 
  366   QToolButton *btnViewArea = createToolButton(
"Paper Tools", 
"Paper Tools", 
"");
 
  368   QMenu* menu = 
new QMenu(btnViewArea);
 
  370   QAction* actionPan = createAction(
"Pan Tool", m_actionViewPan, 
"layout-paper-pan", 
"", menu);
 
  371   menu->addAction(actionPan);
 
  373   QAction* actionZoomIn = createAction(
"Zoom In", m_actionViewZoomIn, 
"layout-paper-zoom-in", 
"", menu);
 
  374   menu->addAction(actionZoomIn);
 
  376   QAction* actionZoomOut = createAction(
"Zoom Out", m_actionViewZoomOut, 
"layout-paper-zoom-out", 
"", menu);
 
  377   menu->addAction(actionZoomOut);
 
  379   btnViewArea->setMenu(menu);
 
  380   btnViewArea->setPopupMode(QToolButton::MenuButtonPopup);
 
  381   btnViewArea->setDefaultAction(actionPan);
 
  383   connect(btnViewArea, SIGNAL(triggered(QAction*)), 
this, SLOT(onViewAreaTriggered(QAction*)));
 
  384   m_actionViewAreaToolButton = this->addWidget(btnViewArea);
 
  386   m_viewAreaToolButton = btnViewArea;
 
  393   QToolButton *btnArrowCursor = createToolButton(
"Arrow Cursor", 
"Arrow Cursor", 
"layout-default-cursor");
 
  394   btnArrowCursor->setCheckable(
false);
 
  395   connect(btnArrowCursor, SIGNAL(clicked(
bool)), 
this, SLOT(onArrowCursorClicked(
bool)));
 
  397   m_actionArrowCursorButton = this->addWidget(btnArrowCursor);
 
  399   m_arrowCursorButton = btnArrowCursor;
 
  401   return btnArrowCursor;
 
  406   QToolButton *btnTools = createToolButton(
"Item Tools", 
"Item Tools", 
"");
 
  408   QMenu* menu = 
new QMenu(btnTools);
 
  410   QAction* actionGroup = createAction(
"Group", m_actionGroup, 
"layout-group", 
"", menu);
 
  411   menu->addAction(actionGroup);
 
  413   QAction* actionUngroup = createAction(
"Ungroup", m_actionUngroup, 
"layout-ungroup", 
"", menu);
 
  414   menu->addAction(actionUngroup);
 
  416   btnTools->setMenu(menu);
 
  417   btnTools->setPopupMode(QToolButton::MenuButtonPopup);
 
  418   btnTools->setDefaultAction(actionGroup);
 
  420   connect(btnTools, SIGNAL(triggered(QAction*)), 
this, SLOT(onItemToolsTriggered(QAction*)));
 
  421   m_actionItemTools = this->addWidget(btnTools);
 
  423   m_itemTools = btnTools;
 
  430   QToolButton *btnLineMouse = createToolButton(
"Draw Line Intersection Mouse", 
"Draw Line Intersection Mouse", 
"layout-draw-line-mouse-intersection");
 
  431   connect(btnLineMouse, SIGNAL(toggled(
bool)), 
this, SLOT(onLineIntersectionMouse(
bool)));
 
  433   m_actionLineIntersectionToolButton = this->addWidget(btnLineMouse);
 
  435   m_lineIntersectionToolButton = btnLineMouse;
 
  442   m_comboZoom = 
new QComboBox(
this);
 
  443   m_comboZoom->setObjectName(m_actionSceneZoom.c_str());
 
  445   m_comboZoom->addItem(
"42%", 0.42);
 
  446   m_comboZoom->addItem(
"50%", 0.5);
 
  447   m_comboZoom->addItem(
"70%", 0.7);
 
  448   m_comboZoom->addItem(
"100%", 1.);
 
  449   m_comboZoom->addItem(
"150%", 1.5);
 
  450   m_comboZoom->addItem(
"200%", 2.);
 
  451   m_comboZoom->addItem(
"300%", 3.); 
 
  453   connect(m_comboZoom, SIGNAL(currentIndexChanged(
int)), 
this, SLOT(onSceneZoomCurrentIndexChanged(
int)));
 
  454   m_comboZoom->setCurrentIndex(1);
 
  457   m_actionComboZoom = this->addWidget(m_comboZoom);
 
  464   QToolButton *btn = createToolButton(
"Bring to front", 
"Bring to front", 
"layout-in-front");
 
  465   btn->setCheckable(
false);
 
  466   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onBringToFrontClicked(
bool)));
 
  468   m_actionBringToFrontToolButton = this->addWidget(btn);
 
  470   m_bringToFrontToolButton = btn;
 
  477   QToolButton *btn = createToolButton(
"Send to back", 
"Send to back", 
"layout-to-back");
 
  478   btn->setCheckable(
false);
 
  479   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onSendToBackClicked(
bool)));
 
  481   m_actionSendToBackToolButton = this->addWidget(btn);
 
  483   m_sendToBackToolButton = btn;
 
  491   QToolButton *btn = createToolButton(
"Recompose", 
"Recompose", 
"layout-recompose");
 
  492   btn->setCheckable(
false);
 
  493   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onRecomposeClicked(
bool)));
 
  495   m_actionRecomposeToolButton = this->addWidget(btn);
 
  497   m_recomposeToolButton = btn;
 
  504   QToolButton *btn = createToolButton(
"Text Tools", 
"Text Tools", 
"");
 
  506   QMenu* menu = 
new QMenu(btn);
 
  508   QAction* actionTxtDefault = createAction(
"Default Text Object", m_actionTextDefault, 
"layout-default-text", 
"", menu);
 
  509   menu->addAction(actionTxtDefault);
 
  511   QAction* actionTitle = createAction(
"Title Object", m_actionTitle, 
"layout-title", 
"", menu);
 
  512   menu->addAction(actionTitle);
 
  514   QAction* actionStringGrid = createAction(
"Text Grid Object", m_actionStringGrid, 
"layout-grid", 
"", menu);
 
  515   menu->addAction(actionStringGrid);
 
  517   QAction* actionImage = createAction(
"Image Object", m_actionImage, 
"layout-image", 
"", menu);
 
  518   menu->addAction(actionImage);
 
  520   QAction* actionBalloon = createAction(
"Balloon Object", m_actionBalloon, 
"layout-ballon", 
"", menu); 
 
  521   menu->addAction(actionBalloon);
 
  523   QAction* actionBarCode = createAction(
"BarCode Object", m_actionBarCode, 
"layout-barcode", 
"", menu);
 
  524   menu->addAction(actionBarCode);
 
  527   btn->setPopupMode(QToolButton::MenuButtonPopup);
 
  528   btn->setDefaultAction(actionTxtDefault);
 
  530   connect(btn, SIGNAL(triggered(QAction*)), 
this, SLOT(onTextToolsTriggered(QAction*)));
 
  531   m_actionTextToolButton = this->addWidget(btn);
 
  533   m_textToolButton = btn;
 
  540   QToolButton *btn = createToolButton(
"Align Left", 
"Align Left", 
"layout-alignleft");
 
  541   btn->setCheckable(
false);
 
  542   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onAlignLeftClicked(
bool)));
 
  544   m_actionAlignLeftToolButton = this->addWidget(btn);
 
  546   m_alignLeftToolButton = btn;
 
  553   QToolButton *btn = createToolButton(
"Align Right", 
"Align Right", 
"layout-alignright");
 
  554   btn->setCheckable(
false);
 
  555   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onAlignRightClicked(
bool)));
 
  557   m_actionAlignRightToolButton = this->addWidget(btn);
 
  559   m_alignRightToolButton = btn;
 
  566   QToolButton *btn = createToolButton(
"Align Top", 
"Align Top", 
"layout-aligntop");
 
  567   btn->setCheckable(
false);
 
  568   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onAlignTopClicked(
bool)));
 
  570   m_actionAlignTopToolButton = this->addWidget(btn);
 
  572   m_alignTopToolButton = btn;
 
  579   QToolButton *btn = createToolButton(
"Align Bottom", 
"Align Bottom", 
"layout-alignbottom");
 
  580   btn->setCheckable(
false);
 
  581   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onAlignBottomClicked(
bool)));
 
  583   m_actionAlignBottomToolButton = this->addWidget(btn);
 
  585   m_alignBottomToolButton = btn;
 
  592   QToolButton *btn = createToolButton(
"Align Center Horizontal", 
"Align Center Horizontal", 
"layout-alignhrzcenter");
 
  593   btn->setCheckable(
false);
 
  594   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onAlignCenterHorizontalClicked(
bool)));
 
  596   m_actionAlignCenterHorizontalToolButton = this->addWidget(btn);
 
  598   m_alignCenterHorizontalToolButton = btn;
 
  605   QToolButton *btn = createToolButton(
"Align Center Vertical", 
"Align Center Vertical", 
"layout-alignvrtcenter");
 
  606   btn->setCheckable(
false);
 
  607   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onAlignCenterVerticalClicked(
bool)));
 
  609   m_actionAlignCenterVerticalToolButton = this->addWidget(btn);
 
  611   m_alignCenterVerticalToolButton = btn;
 
  618   QToolButton *btn = createToolButton(
"Remove Object", 
"Remove Object", 
"layout-empty-trash");
 
  619   btn->setCheckable(
false);
 
  620   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onRemoveObjectClicked(
bool)));
 
  622   m_actionRemoveObjectToolButton = this->addWidget(btn);
 
  624   m_removeObjectToolButton = btn;
 
  631   QToolButton *btn = createToolButton(
"Undo/Redo", 
"Undo/Redo", 
"");
 
  633   QMenu* menu = 
new QMenu(btn);
 
  642   QAction* actionUndo = undoStack->createUndoAction(menu, tr(
"&Undo"));
 
  643   actionUndo->setShortcuts(QKeySequence::Undo);
 
  644   actionUndo->setObjectName(m_actionUndo.c_str());
 
  645   actionUndo->setIcon(QIcon::fromTheme(
"layout-undo"));
 
  646   actionUndo->setToolTip(
"Undo Action");
 
  647   menu->addAction(actionUndo);
 
  649   QAction* actionRedo  = undoStack->createRedoAction(menu, tr(
"&Redo"));
 
  650   actionRedo->setShortcuts(QKeySequence::Redo);
 
  651   actionRedo->setObjectName(m_actionRedo.c_str());
 
  652   actionRedo->setIcon(QIcon::fromTheme(
"layout-redo"));
 
  653   actionRedo->setToolTip(
"Redo Action");
 
  654   menu->addAction(actionRedo);
 
  657   btn->setPopupMode(QToolButton::MenuButtonPopup);
 
  658   btn->setDefaultAction(actionUndo);
 
  660   m_actionUndoToolButton = this->addWidget(btn);
 
  662   m_undoToolButton = btn;
 
  669   QToolButton *btn = createToolButton(
"Redraw Selection Map", 
"Redraw Selection Map", 
"layout-draw-map");
 
  670   btn->setCheckable(
false);
 
  671   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onDrawMapClicked(
bool)));
 
  673   m_actionDrawMapToolButton = this->addWidget(btn);
 
  675   m_drawMapToolButton = btn;
 
  682   QToolButton *btn = createToolButton(
"Object To Image", 
"Export all selected objects to image", 
"layout-object-to-image");
 
  683   btn->setCheckable(
false);
 
  684   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onObjectToImageClicked(
bool)));
 
  686   m_actionObjectToImageButton = this->addWidget(btn);
 
  688   m_objectToImageButton = btn;
 
  695   QToolButton *btn = createToolButton(
"Exit", 
"Exit", 
"layout-close");
 
  696   btn->setCheckable(
false);
 
  697   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onExitClicked(
bool)));
 
  699   m_actionExitButton = this->addWidget(btn);
 
  708   QToolButton *btn = createToolButton(
"Export To PDF", 
"Export to PDF", 
"layout-pdf");
 
  709   btn->setCheckable(
false);
 
  710   connect(btn, SIGNAL(clicked(
bool)), 
this, SLOT(onExportToPDFClicked(
bool)));
 
  712   m_actionExportToPDFButton = this->addWidget(btn);
 
  714   m_exportToPDFButton = btn;
 
  721   QToolButton* button = 
dynamic_cast<QToolButton*
>(sender());
 
  724     button->setDefaultAction(action);
 
  729   if(action->objectName().compare(m_actionMapDefault.c_str()) == 0)
 
  733   else if(action->objectName().compare(m_actionGridMap.c_str()) == 0)
 
  737   else if(action->objectName().compare(m_actionGridPlanar.c_str()) == 0)
 
  741   else if(action->objectName().compare(m_actionGridGeodesic.c_str()) == 0)
 
  745   else if(action->objectName().compare(m_actionLegendDefault.c_str()) == 0)
 
  749   else if(action->objectName().compare(m_actionScale.c_str()) == 0)
 
  753   else if(action->objectName().compare(m_actionNorth.c_str()) == 0)
 
  757   else if(action->objectName().compare(m_actionMapLocation.c_str()) == 0)
 
  765   QToolButton* button = 
dynamic_cast<QToolButton*
>(sender());
 
  768     button->setDefaultAction(action);
 
  773   if(action->objectName().compare(m_actionMapPan.c_str()) == 0)
 
  777   else if(action->objectName().compare(m_actionMapZoomIn.c_str()) == 0)
 
  781   else if(action->objectName().compare(m_actionMapZoomOut.c_str()) == 0)
 
  785   else if(action->objectName().compare(m_actionMapSystematicScale.c_str()) == 0)
 
  789   else if(action->objectName().compare(m_actionMapCreateTextGrid.c_str()) == 0)
 
  793   else if(action->objectName().compare(m_actionMapCreateMapText.c_str()) == 0)
 
  797   else if(action->objectName().compare(m_actionMapCreateLegendChildAsObject.c_str()) == 0)
 
  805   QToolButton* button = 
dynamic_cast<QToolButton*
>(sender());
 
  808     button->setDefaultAction(action);
 
  813   if(action->objectName().compare(m_actionRectangle.c_str()) == 0)
 
  817   else if(action->objectName().compare(m_actionArrow.c_str()) == 0)
 
  821   else if(action->objectName().compare(m_actionEllipse.c_str()) == 0)
 
  825   else if(action->objectName().compare(m_actionPoint.c_str()) == 0)
 
  829   else if (action->objectName().compare(m_actionLine.c_str()) == 0) 
 
  834   else if (action->objectName().compare(m_actionPolygon.c_str()) == 0) 
 
  843   QToolButton* button = 
dynamic_cast<QToolButton*
>(sender());
 
  846     button->setDefaultAction(action);
 
  851   if(action->objectName().compare(m_actionViewPan.c_str()) == 0)
 
  855   else if(action->objectName().compare(m_actionViewZoomIn.c_str()) == 0)
 
  859   else if(action->objectName().compare(m_actionViewZoomOut.c_str()) == 0)
 
  873   QToolButton* button = 
dynamic_cast<QToolButton*
>(sender());
 
  876     button->setDefaultAction(action);
 
  881   if(action->objectName().compare(m_actionGroup.c_str()) == 0)
 
  885   else if(action->objectName().compare(m_actionUngroup.c_str()) == 0)
 
  912   emit changeContext(result);
 
  917   QVariant variant = m_comboZoom->itemData(index);
 
  919   if(variant.toDouble() != zoomFactor)
 
  943   m_comboZoom->setCurrentIndex(1);
 
  949   QToolButton* button = 
dynamic_cast<QToolButton*
>(sender());
 
  952     button->setDefaultAction(action);
 
  956   if(action->objectName().compare(m_actionTextDefault.c_str()) == 0)
 
  960   else if(action->objectName().compare(m_actionStringGrid.c_str()) == 0)
 
  964   else if(action->objectName().compare(m_actionTitle.c_str()) == 0)
 
  968   else if(action->objectName().compare(m_actionImage.c_str()) == 0)
 
  972   else if(action->objectName().compare(m_actionBalloon.c_str()) == 0)
 
  976   else if(action->objectName().compare(m_actionBarCode.c_str()) == 0)
 
 1053   if(mode != layoutMode)
 
 1062   emit changeContext(result);
 
 1067   QToolButton *btn = 
new QToolButton(
this);
 
 1068   btn->setText(text.c_str());
 
 1069   btn->setGeometry(0,0,10,10);
 
 1070   btn->setCheckable(
true);
 
 1071   btn->setToolTip(tooltip.c_str());
 
 1074   btn->setIcon(QIcon::fromTheme(icon.c_str()));
 
 1081   QPushButton *btn = 
new QPushButton(
this);
 
 1082   btn->setText(text.c_str());
 
 1083   btn->setGeometry(0,0,10,10);
 
 1084   btn->setCheckable(
true);
 
 1085   btn->setToolTip(tooltip.c_str());
 
 1087   btn->setIcon(QIcon::fromTheme(icon.c_str()));
 
 1094   QWidget* parentToUse = parent;
 
 1095   if(parentToUse == 0)
 
 1100   QAction *actionMenu = 
new QAction(text.c_str(), parentToUse);
 
 1101   actionMenu->setObjectName(objName.c_str());
 
 1103   actionMenu->setIcon(QIcon::fromTheme(icon.c_str()));
 
 1104   actionMenu->setToolTip(tooltip.c_str());
 
 1116   int index = m_comboZoom->findData(factor);
 
 1118   if ( index != -1 ) { 
 
 1119     m_comboZoom->setCurrentIndex(index);
 
 1125   return m_mapToolButton;
 
 1130   return m_mapToolsToolButton;
 
 1135   return m_geometryToolButton;
 
 1140   return m_viewAreaToolButton;
 
 1145   return m_arrowCursorButton;
 
 1155   return m_lineIntersectionToolButton;
 
 1160   return m_bringToFrontToolButton;
 
 1165   return m_sendToBackToolButton;
 
 1170   return m_recomposeToolButton;
 
 1175   return m_textToolButton;
 
 1180   return m_alignLeftToolButton;
 
 1185   return m_alignRightToolButton;
 
 1190   return m_alignTopToolButton;
 
 1195   return m_alignBottomToolButton;
 
 1200   return m_alignCenterHorizontalToolButton;
 
 1205   return m_alignCenterVerticalToolButton;
 
 1210   return m_removeObjectToolButton;
 
 1215   return m_undoToolButton;
 
 1220   return m_drawMapToolButton;
 
 1225   return m_objectToImageButton;
 
 1230   return m_exitButton;
 
 1235   return m_actionMapDefault;
 
 1240   return m_actionLegendDefault;
 
 1245   return m_actionScale;
 
 1250   return m_actionMapZoomIn;
 
 1255   return m_actionMapZoomOut;
 
 1260   return m_actionMapPan;
 
 1265   return m_actionMapSystematicScale;
 
 1270   return m_actionMapCreateTextGrid;
 
 1275   return m_actionMapCreateMapText;
 
 1280   return m_actionMapCreateLegendChildAsObject;
 
 1285   return m_actionGridMap;
 
 1290   return m_actionGridPlanar;
 
 1295   return m_actionGridGeodesic;
 
 1300   return m_actionNorth;
 
 1305   return m_actionMapLocation;
 
 1310   return m_actionRectangle;
 
 1315   return m_actionPoint;
 
 1320   return m_actionEllipse;
 
 1325   return m_actionArrow;
 
 1330   return m_actionLine;
 
 1335   return m_actionPolygon;
 
 1340   return m_actionViewPan;
 
 1345   return m_actionViewZoomIn;
 
 1350   return m_actionViewZoomOut;
 
 1355   return m_actionGroup;
 
 1360   return m_actionUngroup;
 
 1365   return m_actionLineIntersectionMouse;
 
 1370   return m_actionSceneZoom;
 
 1375   return m_actionRemoveObject;
 
 1380   return m_actionTextDefault;
 
 1385   return m_actionImage;
 
 1390   return m_actionStringGrid;
 
 1395   return m_actionTitle;
 
 1400   return m_actionBalloon;
 
 1405   return m_actionBarCode;
 
 1410   return m_actionAlignLeft;
 
 1415   return m_actionAlignRight;
 
 1420   return m_actionAlignTop;
 
 1425   return m_actionAlignBottom;
 
 1430   return m_actionAlignCenterHorizontal;
 
 1435   return m_actionAlignCenterVertical;
 
 1440   return m_actionUndo;
 
 1445   return m_actionRedo;
 
 1450   return m_actionDrawMap;
 
 1455   return m_actionObjectToImage;
 
 1460   return m_actionExit;
 
 1465   return m_actionExportToPDF;
 
 1470   return m_actionMapToolButton;
 
 1475   return m_actionMapToolsToolButton;
 
 1480   return m_actionGeometryToolButton;
 
 1485   return m_actionViewAreaToolButton;
 
 1490   return m_actionArrowCursorButton;
 
 1495   return m_actionItemTools;
 
 1500   return m_actionLineIntersectionToolButton;
 
 1505   return m_actionBringToFrontToolButton;
 
 1510   return m_actionSendToBackToolButton;
 
 1515   return m_actionRecomposeToolButton;
 
 1520   return m_actionTextToolButton;
 
 1525   return m_actionAlignLeftToolButton;
 
 1530   return m_actionAlignRightToolButton;
 
 1535   return m_actionAlignTopToolButton;
 
 1540   return m_actionAlignBottomToolButton;
 
 1545   return m_actionAlignCenterHorizontalToolButton;
 
 1550   return m_actionAlignCenterVerticalToolButton;
 
 1555   return m_actionRemoveObjectToolButton;
 
 1560   return m_actionUndoToolButton;
 
 1565   return m_actionDrawMapToolButton;
 
 1570   return m_actionObjectToImageButton;
 
 1575   return m_actionExitButton;
 
 1580   return m_actionComboZoom;
 
virtual EnumType * getModeObjectToImage() const 
Returns value that represents object to image (MVC Component to image. Ex.: .png) mode type belonging...
 
Abstract class to represent an observable. "Model" part of MVC component. 
 
Class responsible for maintaining the drawing context of a MVC component. It is always used by the "M...
 
virtual EnumType * getModeCreateTextGrid() const 
Returns value that represents create text grid mode type belonging to enumeration. 
 
virtual EnumType * getModeDrawSelectionMap() const 
Returns value that represents draw selection map (MapDisplay proxy) mode type belonging to enumeratio...
 
virtual EnumType * getModeSendToBack() const 
Returns value that represents send to back mode type belonging to enumeration. 
 
virtual EnumType * getModeRecompose() const 
Returns value that represents recompose mode type belonging to enumeration. 
 
virtual EnumType * getModeBringToFront() const 
Returns value that represents bring to front mode type belonging to enumeration. 
 
virtual EnumType * getModeExportToPDF() const 
Returns value that represents export to PDF mode type belonging to enumeration. 
 
virtual EnumModeType * getEnumModeType()
Returns mode type enumeration. 
 
virtual EnumType * getModeMapZoomIn() const 
Returns value that represents map zoom in mode type belonging to enumeration. 
 
void setZoomFactor(double zoomFactor)
Change current zoom factor. Ex.: 0.5 (50%) 
 
virtual EnumType * getModeCreateRectangle() const 
Returns value that represents create rectangle mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateText() const 
Returns value that represents create text mode type belonging to enumeration. 
 
virtual EnumType * getModeMapCreateTextGrid() const 
Returns value that represents create text grid (vectorize) mode type belonging to enumeration...
 
Abstract class to represent an observer. "View" part of MVC widget. All classes representing the grap...
 
virtual EnumType * getModeLegendChildAsObject() const 
Returns value that represents legend child as object (vectorize) mode type belonging to enumeration...
 
virtual EnumType * getModeUngroup() const 
Returns value that represents ungroup mode type belonging to enumeration. 
 
An utility struct for representing 2D coordinates. 
 
virtual EnumType * getModeCoordWait() const 
Returns value that represents wait coordinate mode type belonging to enumeration. ...
 
virtual EnumType * getModeSceneZoom() const 
Returns value that represents scene zoom mode type belonging to enumeration. 
 
virtual EnumType * getModeZoomOut() const 
Returns value that represents zoom out mode type belonging to enumeration. 
 
virtual EnumType * getModeExit() const 
Returns value that represents exit mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateLegend() const 
Returns value that represents create legend mode type belonging to enumeration. 
 
virtual EnumType * getModeAlignCenterVertical() const 
Returns value that represents align center vertical mode type belonging to enumeration. 
 
virtual EnumType * getModeActiveLinesIntersectionMouse() const 
Returns value that represents active lines intersection mouse mode type belonging to enumeration...
 
virtual EnumType * getModeCreateTitle() const 
Returns value that represents create title mode type belonging to enumeration. 
 
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...
 
virtual QUndoStack * getUndoStack()
Method that return stack of Undo/Redo. 
 
virtual EnumType * getModeCreateMapLocation() const 
Returns value that represents create map location mode type belonging to enumeration. 
 
virtual EnumType * getModeAlignRight() const 
Returns value that represents align right mode type belonging to enumeration. 
 
virtual EnumType * getModeCreatePolygon() const 
Returns value that represents create polygon mode type belonging to enumeration. 
 
virtual EnumType * getModeOffLinesIntersectionMouse() const 
Returns value that represents off lines intersection mouse mode type belonging to enumeration...
 
virtual EnumType * getModeCreateGridMap() const 
Returns value that represents wait coordinate mode type belonging to enumeration. ...
 
virtual EnumType * getModeMapPan() const 
Returns value that represents map pan mode type belonging to enumeration. 
 
EnumType * getMode()
Returns value of the enumeration of mode type. 
 
Class representing the scene. This scene is child of QGraphicsScene, part of Graphics View Framework...
 
virtual EnumType * getModeAlignLeft() const 
Returns value that represents align left mode type belonging to enumeration. 
 
virtual EnumType * getModePan() const 
Returns value that represents pan mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateLine() const 
Returns value that represents create line mode type belonging to enumeration. 
 
virtual EnumType * getModeAlignBottom() const 
Returns value that represents align bottom mode type belonging to enumeration. 
 
virtual EnumType * getModeAlignCenterHorizontal() const 
Returns value that represents align center horizontal mode type belonging to enumeration. 
 
virtual EnumType * getModeGroup() const 
Returns value that represents group mode type belonging to enumeration. 
 
virtual EnumType * getModeMapZoomOut() const 
Returns value that represents map zoom out mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateEllipse() const 
Returns value that represents create ellipse mode type belonging to enumeration. 
 
virtual EnumType * getModeZoomIn() const 
Returns value that represents zoom in mode type belonging to enumeration. 
 
void setWait(EnumType *wait)
 
Class that represents the value of an enumeration. An enumeration is made of "1..n" objects EnumType...
 
virtual EnumType * getModeMapCreateTextMap() const 
Returns value that represents create text map (vectorize) mode type belonging to enumeration. 
 
virtual EnumType * getModeCreatePoint() const 
Returns value that represents create point mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateNorth() const 
Returns value that represents create north mode type belonging to enumeration. 
 
EnumType * getLineIntersectionMouseMode()
 
void setDefaultZoomFactor(double zoomFactor)
Change default zoom factor. Ex.: 0.5 (50%) 
 
void setMode(EnumType *mode)
Change value of the enumeration of mode type. Ex.: select, pan, create text, etc. The type of mode is...
 
virtual EnumType * getModeCreateBarCode() const 
Returns value that represents wait coordinate mode type belonging to enumeration. ...
 
AbstractScene * getScene()
Returns abstract scene for QGraphicsScene class, part of Graphics View Framework. ...
 
virtual EnumType * getModeCreateBalloon() const 
Returns value that represents create balloon mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateGridPlanar() const 
Returns value that represents create grid planar mode type belonging to enumeration. 
 
virtual EnumType * getModeArrowCursor() const 
Returns value that represents arrow mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateScale() const 
Returns value that represents create scale mode type belonging to enumeration. 
 
virtual EnumType * getModeSystematicScale() const 
Returns value that represents systematic scale mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateArrow() const 
Returns value that represents create arrow mode type belonging to enumeration. 
 
Abstract class to represent a controller. "Controller" part of MVC widget. All classes representing t...
 
double getZoomFactor()
Returns current zoom factor. Ex.: 0.5 (50%) 
 
void setOldZoomFactor(double zoomFactor)
Change previous zoom factor. Ex.: 0.5 (50%) 
 
virtual EnumType * getModeRemoveObject() const 
Returns value that represents remove object (MVC component) mode type belonging to enumeration...
 
virtual EnumType * getModeCreateMap() const 
Returns value that represents create map mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateImage() const 
Returns value that represents create image mode type belonging to enumeration. 
 
virtual EnumType * getModeCreateGridGeodesic() const 
Returns value that represents create grid geodesic mode type belonging to enumeration. 
 
void setLineIntersectionMouseMode(EnumType *mode)
 
virtual EnumType * getModeAlignTop() const 
Returns value that represents align top mode type belonging to enumeration.