Eclipse SUMO - Simulation of Urban MObility
GUIGlChildWindow.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
16 //
17 /****************************************************************************/
18 
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <config.h>
24 
31 
32 #include "GUIGlChildWindow.h"
33 
34 
35 // ===========================================================================
36 // FOX callback mapping
37 // ===========================================================================
38 FXDEFMAP(GUIGlChildWindow) GUIGlChildWindowMap[] = {
42  FXMAPFUNC(SEL_COMMAND, MID_ZOOM_STYLE, GUIGlChildWindow::onCmdZoomStyle),
45 };
46 
47 FXIMPLEMENT(GUIGlChildWindow, FXMDIChild, GUIGlChildWindowMap, ARRAYNUMBER(GUIGlChildWindowMap))
48 
49 
50 // ===========================================================================
51 // member method definitions
52 // ===========================================================================
53 GUIGlChildWindow::GUIGlChildWindow(FXMDIClient* p, GUIMainWindow* parentWindow, FXMDIMenu* mdimenu,
54  const FXString& name, FXMenuBar* gripNavigationToolbar, FXIcon* ic, FXuint opts, FXint x, FXint y, FXint w, FXint h) :
55  FXMDIChild(p, name, ic, mdimenu, opts, x, y, w, h),
56  myParent(parentWindow),
57  myGripNavigationToolbar(gripNavigationToolbar),
58  myStaticNavigationToolBar(nullptr),
59  myView(nullptr) {
60  // Make MDI Window Menu
61  setTracking();
62  // create a vertical frame to add elements
63  myContentFrame = new FXVerticalFrame(this, GUIDesignFrameArea);
64  // if menuBarGripElements isn't NULL, use it to create a grip navigation elements. In other cas, create a static FXToolbar
65  if (myGripNavigationToolbar == nullptr) {
66  myStaticNavigationToolBar = new FXToolBar(myContentFrame, GUIDesignToolbarMenuBar);
67  }
68  // build the tool bars
69  buildNavigationToolBar(); // always there (recenter)
70  buildColoringToolBar(); // always there (coloring)
71  buildScreenshotToolBar(); // always there (screenshot)
72 }
73 
74 
76  delete myLocatorPopup;
77  // only delete static navigation bar if it was created
80  }
81 }
82 
83 
84 void
86  FXMDIChild::create();
87  // only create static navigation bar if it was created
89  myStaticNavigationToolBar->create();
90  } else {
91  myGripNavigationToolbar->create();
92  }
93  myLocatorPopup->create();
94  myView->create();
95 }
96 
97 
100  return myView;
101 }
102 
103 
106  return myParent;
107 }
108 
109 
110 void
112  // build the view settings
113  // recenter view
115  "\tRecenter View\tRecenter view to the simulated area.",
117  // add viewport button
119  "\tEdit ViewporttOpens a menu which lets you edit the viewport.",
121  // toggle button for zooming style
123  "\tToggles Zooming Style\tToggles whether zooming is based at cursor position or at the center of the view.",
125  zoomBut->setChecked(getApp()->reg().readIntEntry("gui", "zoomAtCenter", 0) != 1);
126  // build the locator popup
128  // build locator button
130  "\tLocate Structures\tLocate structures within the network.",
132  // add toggle button for tool-tips on/off
134  "\tToggles Tool Tips\tToggles whether tool tips shall be shown.",
136 }
137 
138 
139 void
141  // Create Vertical separator
143  // build coloring tools
146  // editor
148  "\tEdit Coloring Schemes\tOpens a menu which lets you edit the coloring schemes.",
150 }
151 
152 
153 void
155  // Create Vertical separator
157  // snapshot
159  "\tMake Snapshot\tMakes a snapshot of the view.",
161 }
162 
163 
164 FXGLCanvas*
166  return myView;
167 }
168 
169 
170 FXToolBar*
173 }
174 
175 
176 FXPopup*
178  return myLocatorPopup;
179 }
180 
181 
182 FXComboBox*
184  return myColoringSchemes;
185 }
186 
187 
188 long
189 GUIGlChildWindow::onCmdRecenterView(FXObject*, FXSelector, void*) {
190  myView->recenterView();
191  myView->update();
192  return 1;
193 }
194 
195 
196 long
197 GUIGlChildWindow::onCmdEditViewport(FXObject*, FXSelector, void*) {
199  return 1;
200 }
201 
202 
203 long
204 GUIGlChildWindow::onCmdEditViewScheme(FXObject*, FXSelector, void*) {
206  return 1;
207 }
208 
209 
210 long
211 GUIGlChildWindow::onCmdShowToolTips(FXObject* sender, FXSelector, void*) {
212  MFXCheckableButton* button = dynamic_cast<MFXCheckableButton*>(sender);
213  // check if button was sucesfully casted
214  if (button) {
215  button->setChecked(!button->amChecked());
216  myView->showToolTips(button->amChecked());
217  update();
218  myView->update();
219  }
220  return 1;
221 }
222 
223 
224 long
225 GUIGlChildWindow::onCmdZoomStyle(FXObject* sender, FXSelector, void*) {
226  MFXCheckableButton* button = dynamic_cast<MFXCheckableButton*>(sender);
227  if (button) {
228  button->setChecked(!button->amChecked());
229  getApp()->reg().writeIntEntry("gui", "zoomAtCenter",
230  button->amChecked() ? 0 : 1);
231  update();
232  myView->update();
233  }
234  return 1;
235 }
236 
237 
238 long
239 GUIGlChildWindow::onCmdChangeColorScheme(FXObject*, FXSelector, void* data) {
240  myView->setColorScheme((char*) data);
241  return 1;
242 }
243 
244 
245 void
247  // this is used by the locator widget. zooming to bounding box
248  myView->centerTo(id, true, -1);
249  myView->update();
250 }
251 
252 
253 bool
255  return gSelected.isSelected(o->getType(), o->getGlID());
256 }
257 
258 /****************************************************************************/
259 
GUIGlObject::getType
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
Definition: GUIGlObject.cpp:180
GUIGlChildWindow::onCmdRecenterView
long onCmdRecenterView(FXObject *, FXSelector, void *)
Definition: GUIGlChildWindow.cpp:189
MID_HOTKEY_CTRL_I_EDITVIEWPORT
Open viewport editor.
Definition: GUIAppEnum.h:87
GUISUMOAbstractView::showViewportEditor
virtual void showViewportEditor()
show viewport editor
Definition: GUISUMOAbstractView.cpp:1357
MFXCheckableButton::amChecked
bool amChecked() const
check if this MFXCheckableButton is checked
Definition: MFXCheckableButton.cpp:51
GUISUMOAbstractView
Definition: GUISUMOAbstractView.h:72
ICON_LOCATE
Definition: GUIIcons.h:74
GUIGlChildWindow::buildColoringToolBar
void buildColoringToolBar()
build coloring toolbar
Definition: GUIGlChildWindow.cpp:140
MFXCheckableButton::setChecked
void setChecked(bool val)
check or uncheck this MFXCheckableButton
Definition: MFXCheckableButton.cpp:57
ICON_CAMERA
Definition: GUIIcons.h:140
GUIGlChildWindow::myView
GUISUMOAbstractView * myView
The view.
Definition: GUIGlChildWindow.h:105
GUIGlChildWindow::getBuildGLCanvas
virtual FXGLCanvas * getBuildGLCanvas() const
get build GL Canvas
Definition: GUIGlChildWindow.cpp:165
GUISUMOAbstractView::setColorScheme
virtual bool setColorScheme(const std::string &)
set color scheme
Definition: GUISUMOAbstractView.cpp:1389
GUISUMOAbstractView::showViewschemeEditor
void showViewschemeEditor()
show viewsscheme editor
Definition: GUISUMOAbstractView.cpp:1321
MID_RECENTERVIEW
Recenter view - button.
Definition: GUIAppEnum.h:318
GUIGlChildWindow::create
virtual void create()
create GUIGlChildWindow
Definition: GUIGlChildWindow.cpp:85
GUIGlobalSelection.h
GUISUMOAbstractView::centerTo
virtual void centerTo(GUIGlID id, bool applyZoom, double zoomDist=20)
centers to the chosen artifact
Definition: GUISUMOAbstractView.cpp:789
GUIGlChildWindow::onCmdEditViewScheme
long onCmdEditViewScheme(FXObject *, FXSelector, void *)
Definition: GUIGlChildWindow.cpp:204
GUISUMOAbstractView::showToolTips
void showToolTips(bool val)
show tool tips
Definition: GUISUMOAbstractView.cpp:1383
GUIDesignComboBoxNCol
#define GUIDesignComboBoxNCol
number of column of every combo box
Definition: GUIDesigns.h:217
GUIGlChildWindow::onCmdChangeColorScheme
long onCmdChangeColorScheme(FXObject *, FXSelector sel, void *)
Definition: GUIGlChildWindow.cpp:239
GUIDesigns.h
GUIGlChildWindow::myLocatorPopup
FXPopup * myLocatorPopup
The locator menu.
Definition: GUIGlChildWindow.h:108
GUIIconSubSys::getIcon
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Definition: GUIIconSubSys.cpp:609
GUIDesignButtonToolbar
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
Definition: GUIDesigns.h:79
GUIGlChildWindow::~GUIGlChildWindow
virtual ~GUIGlChildWindow()
destructor
Definition: GUIGlChildWindow.cpp:75
GUIMainWindow.h
GUIAppEnum.h
ICON_SHOWTOOLTIPS
Definition: GUIIcons.h:102
MID_COLOURSCHEMECHANGE
Change coloring scheme - combo.
Definition: GUIAppEnum.h:372
GUIGlChildWindow::buildNavigationToolBar
void buildNavigationToolBar()
build navigation toolbar
Definition: GUIGlChildWindow.cpp:111
GUIGlObject::getGlID
GUIGlID getGlID() const
Returns the numerical id of the object.
Definition: GUIGlObject.cpp:149
update
GUIGlChildWindow::myLocatorButton
FXMenuButton * myLocatorButton
The locator button.
Definition: GUIGlChildWindow.h:111
GUIGlChildWindow::getParent
GUIMainWindow * getParent()
Returns the main window.
Definition: GUIGlChildWindow.cpp:105
MID_HOTKEY_F9_EDIT_VIEWSCHEME
open edit scheme menu
Definition: GUIAppEnum.h:181
GUIDesignFrameArea
#define GUIDesignFrameArea
Definition: GUIDesigns.h:261
ICON_ZOOMSTYLE
Definition: GUIIcons.h:104
GUIGlObject
Definition: GUIGlObject.h:65
GUIGlChildWindow::onCmdShowToolTips
long onCmdShowToolTips(FXObject *sender, FXSelector, void *)
Definition: GUIGlChildWindow.cpp:211
GUIDesignComboBoxStatic
#define GUIDesignComboBoxStatic
Combo box static (not editable)
Definition: GUIDesigns.h:208
FXDEFMAP
FXDEFMAP(GUIGlChildWindow) GUIGlChildWindowMap[]
ICON_COLORWHEEL
Definition: GUIIcons.h:99
MID_SHOWTOOLTIPS
Show tool tips - button.
Definition: GUIAppEnum.h:342
MID_ZOOM_STYLE
toogle zooming style
Definition: GUIAppEnum.h:346
GUIIconSubSys.h
GUIGlChildWindow::getNavigationToolBar
FXToolBar * getNavigationToolBar(GUISUMOAbstractView &v)
return a reference to navigation toolbar
Definition: GUIGlChildWindow.cpp:171
GUIMainWindow
Definition: GUIMainWindow.h:46
GUIGlChildWindow::buildScreenshotToolBar
void buildScreenshotToolBar()
build screenshot toolbar
Definition: GUIGlChildWindow.cpp:154
GUIGlChildWindow::myColoringSchemes
FXComboBox * myColoringSchemes
The coloring schemes.
Definition: GUIGlChildWindow.h:117
GUIGlChildWindow::isSelected
virtual bool isSelected(GUIGlObject *o) const
true if the object is selected (may include extra logic besides calling gSelected)
Definition: GUIGlChildWindow.cpp:254
GUIGlChildWindow::setView
void setView(GUIGlID id)
Centers the view onto the given artifact.
Definition: GUIGlChildWindow.cpp:246
MFXCheckableButton
Definition: MFXCheckableButton.h:30
GUIGlID
unsigned int GUIGlID
Definition: GUIGlObject.h:42
GUIGlChildWindow.h
GUIGlChildWindow::onCmdEditViewport
long onCmdEditViewport(FXObject *, FXSelector, void *)
Definition: GUIGlChildWindow.cpp:197
GUIDesignVerticalSeparator
#define GUIDesignVerticalSeparator
vertical separator
Definition: GUIDesigns.h:324
GUIGlChildWindow::myStaticNavigationToolBar
FXToolBar * myStaticNavigationToolBar
The static navigation tool bar.
Definition: GUIGlChildWindow.h:102
GUIDesignButtonToolbarLocator
#define GUIDesignButtonToolbarLocator
little checkable button with icon placed in navigation toolbar used specify for Locator
Definition: GUIDesigns.h:85
ICON_RECENTERVIEW
Definition: GUIIcons.h:68
gSelected
GUISelectedStorage gSelected
A global holder of selected objects.
Definition: GUIGlobalSelection.cpp:33
GUIGlChildWindow::myParent
GUIMainWindow * myParent
The parent window.
Definition: GUIGlChildWindow.h:96
ICON_EDITVIEWPORT
Definition: GUIIcons.h:103
GUIGlChildWindow::getColoringSchemesCombo
FXComboBox * getColoringSchemesCombo()
return combobox with the current coloring schemes (standard, fastest standard, real world....
Definition: GUIGlChildWindow.cpp:183
config.h
GUIDesignToolbarMenuBar
#define GUIDesignToolbarMenuBar
Definition: GUIDesigns.h:289
GUISUMOAbstractView::recenterView
virtual void recenterView()
recenters the view
Definition: GUISUMOAbstractView.cpp:783
GUIGlChildWindow
Definition: GUIGlChildWindow.h:40
GUIGlChildWindow::getLocatorPopup
FXPopup * getLocatorPopup()
@ brief return a pointer to locator popup
Definition: GUIGlChildWindow.cpp:177
GUIGlChildWindow::myGripNavigationToolbar
FXMenuBar * myGripNavigationToolbar
The grip navigation tool bar.
Definition: GUIGlChildWindow.h:99
MID_MAKESNAPSHOT
Make snapshot - button.
Definition: GUIAppEnum.h:344
GUIGlChildWindow::getView
GUISUMOAbstractView * getView() const
return GUISUMOAbstractView
Definition: GUIGlChildWindow.cpp:99
GUIDesignButtonToolbarCheckable
#define GUIDesignButtonToolbarCheckable
little checkable button with icon placed in navigation toolbar
Definition: GUIDesigns.h:88
MFXCheckableButton.h
GUISelectedStorage::isSelected
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
Definition: GUISelectedStorage.cpp:94
GUIGlChildWindow::onCmdZoomStyle
long onCmdZoomStyle(FXObject *sender, FXSelector, void *)
Definition: GUIGlChildWindow.cpp:225