SUMO - Simulation of Urban MObility
GNEViewParent.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-2018 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 /****************************************************************************/
15 // A single child window which contains a view of the edited network (adapted
16 // from GUISUMOViewParent)
17 // While we don't actually need MDI for netedit it is easier to adapt existing
18 // structures than to write everything from scratch.
19 /****************************************************************************/
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #include <config.h>
26 
27 #include <string>
28 #include <vector>
33 #include <utils/geom/Position.h>
34 #include <utils/geom/Boundary.h>
61 
62 #include "GNENet.h"
64 #include "GNEViewNet.h"
65 #include "GNEViewParent.h"
66 #include "GNEUndoList.h"
67 #include "GNEApplicationWindow.h"
68 
69 
70 // ===========================================================================
71 // FOX callback mapping
72 // ===========================================================================
73 FXDEFMAP(GNEViewParent) GNEViewParentMap[] = {
74  FXMAPFUNC(SEL_COMMAND, MID_MAKESNAPSHOT, GNEViewParent::onCmdMakeSnapshot),
75  //FXMAPFUNC(SEL_COMMAND, MID_ALLOWROTATION, GNEViewParent::onCmdAllowRotation),
76  FXMAPFUNC(SEL_COMMAND, MID_LOCATEJUNCTION, GNEViewParent::onCmdLocate),
77  FXMAPFUNC(SEL_COMMAND, MID_LOCATEEDGE, GNEViewParent::onCmdLocate),
78  FXMAPFUNC(SEL_COMMAND, MID_LOCATETLS, GNEViewParent::onCmdLocate),
79  FXMAPFUNC(SEL_COMMAND, MID_LOCATEADD, GNEViewParent::onCmdLocate),
80  FXMAPFUNC(SEL_COMMAND, MID_LOCATEPOI, GNEViewParent::onCmdLocate),
81  FXMAPFUNC(SEL_COMMAND, MID_LOCATEPOLY, GNEViewParent::onCmdLocate),
82  FXMAPFUNC(SEL_COMMAND, FXMDIChild::ID_MDI_MENUCLOSE, GNEViewParent::onCmdClose),
84 };
85 
86 // Object implementation
87 FXIMPLEMENT(GNEViewParent, GUIGlChildWindow, GNEViewParentMap, ARRAYNUMBER(GNEViewParentMap))
88 
89 // ===========================================================================
90 // member method definitions
91 // ===========================================================================
92 GNEViewParent::GNEViewParent(FXMDIClient* p, FXMDIMenu* mdimenu, const FXString& name, GNEApplicationWindow* parentWindow,
93  FXGLCanvas* share, GNENet* net, GNEUndoList* undoList, FXIcon* ic, FXuint opts, FXint x, FXint y, FXint w, FXint h) :
94  GUIGlChildWindow(p, parentWindow, mdimenu, name, ic, opts, x, y, w, h),
95  myGNEAppWindows(parentWindow),
96  myACChooserJunction(nullptr),
97  myACChooserEdges(nullptr),
98  myACChooserTLS(nullptr),
99  myACChooserAdditional(nullptr),
100  myACChooserPOI(nullptr),
101  myACChooserPolygon(nullptr),
102  myACChooserProhibition(nullptr) {
103  // Add child to parent
104  myParent->addChild(this, false);
105 
106  // disable coloring and screenshot
107  //for (int i=5; i < myNavigationToolBar->numChildren(); i++) {
108  // myNavigationToolBar->childAtIndex(i)->hide();
109  //}
110 
111  // add undo/redo buttons
112  new FXButton(myNavigationToolBar, "\tUndo\tUndo the last Change.", GUIIconSubSys::getIcon(ICON_UNDO), parentWindow->getUndoList(), FXUndoList::ID_UNDO, GUIDesignButtonToolbar);
113  new FXButton(myNavigationToolBar, "\tRedo\tRedo the last Change.", GUIIconSubSys::getIcon(ICON_REDO), parentWindow->getUndoList(), FXUndoList::ID_REDO, GUIDesignButtonToolbar);
114 
115  // Create Vertical separator
116  new FXVerticalSeparator(myNavigationToolBar, GUIDesignVerticalSeparator);
117 
118  // Create Frame Splitter
119  myFramesSplitter = new FXSplitter(myContentFrame, this, MID_GNE_VIEWPARENT_FRAMEAREAWIDTH, GUIDesignSplitter | SPLITTER_HORIZONTAL);
120 
121  // Create frames Area
122  myFramesArea = new FXHorizontalFrame(myFramesSplitter, GUIDesignFrameArea);
123 
124  // Set default width of frames area
125  myFramesArea->setWidth(220);
126 
127  // Create view area
128  myViewArea = new FXHorizontalFrame(myFramesSplitter, GUIDesignViewnArea);
129 
130  // Add the view to a temporary parent so that we can add items to myViewArea in the desired order
131  FXComposite* tmp = new FXComposite(this);
132 
133  // Create view net
134  GNEViewNet* viewNet = new GNEViewNet(tmp, myViewArea, *myParent, this, net, undoList, myParent->getGLVisual(), share, myNavigationToolBar);
135 
136  // Set pointer myView with the created view net
137  myView = viewNet;
138 
139  // Create frames
140  myGNEFrames[MID_GNE_SETMODE_INSPECT] = new GNEInspectorFrame(myFramesArea, viewNet);
141  myGNEFrames[MID_GNE_SETMODE_SELECT] = new GNESelectorFrame(myFramesArea, viewNet);
142  myGNEFrames[MID_GNE_SETMODE_CONNECT] = new GNEConnectorFrame(myFramesArea, viewNet);
143  myGNEFrames[MID_GNE_SETMODE_PROHIBITION] = new GNEProhibitionFrame(myFramesArea, viewNet);
144  myGNEFrames[MID_GNE_SETMODE_TLS] = new GNETLSEditorFrame(myFramesArea, viewNet);
145  myGNEFrames[MID_GNE_SETMODE_ADDITIONAL] = new GNEAdditionalFrame(myFramesArea, viewNet);
146  myGNEFrames[MID_GNE_SETMODE_CROSSING] = new GNECrossingFrame(myFramesArea, viewNet);
147  myGNEFrames[MID_GNE_SETMODE_DELETE] = new GNEDeleteFrame(myFramesArea, viewNet);
148  myGNEFrames[MID_GNE_SETMODE_POLYGON] = new GNEPolygonFrame(myFramesArea, viewNet);
149 
150  // Update frame areas after creation
151  onCmdUpdateFrameAreaWidth(0, 0, 0);
152 
153  // Hidde all Frames Area
154  hideFramesArea();
155 
156  // Buld view toolBars
157  myView->buildViewToolBars(*this);
158 
159  // create windows
161 }
162 
163 
165  // remove Chooser dialogs if are active
166  if (myACChooserJunction) {
167  delete myACChooserJunction ;
168  }
169  if (myACChooserEdges) {
170  delete myACChooserEdges ;
171  }
172  if (myACChooserTLS) {
173  delete myACChooserTLS ;
174  }
175  if (myACChooserAdditional) {
176  delete myACChooserAdditional ;
177  }
178  if (myACChooserPOI) {
179  delete myACChooserPOI ;
180  }
181  if (myACChooserPolygon) {
182  delete myACChooserPolygon ;
183  }
185  delete myACChooserProhibition;
186  }
187  // Remove child before remove
188  myParent->removeChild(this);
189 }
190 
191 
192 void
194  for (auto i = myGNEFrames.begin(); i != myGNEFrames.end(); i++) {
195  i->second->hide();
196  }
197 }
198 
201  return dynamic_cast<GNEInspectorFrame*>(myGNEFrames.at(MID_GNE_SETMODE_INSPECT));
202 }
203 
204 
207  return dynamic_cast<GNESelectorFrame*>(myGNEFrames.at(MID_GNE_SETMODE_SELECT));
208 }
209 
210 
213  return dynamic_cast<GNEConnectorFrame*>(myGNEFrames.at(MID_GNE_SETMODE_CONNECT));
214 }
215 
216 
219  return dynamic_cast<GNETLSEditorFrame*>(myGNEFrames.at(MID_GNE_SETMODE_TLS));
220 }
221 
222 
225  return dynamic_cast<GNEAdditionalFrame*>(myGNEFrames.at(MID_GNE_SETMODE_ADDITIONAL));
226 }
227 
228 
231  return dynamic_cast<GNECrossingFrame*>(myGNEFrames.at(MID_GNE_SETMODE_CROSSING));
232 }
233 
234 
237  return dynamic_cast<GNEDeleteFrame*>(myGNEFrames.at(MID_GNE_SETMODE_DELETE));
238 }
239 
240 
243  return dynamic_cast<GNEPolygonFrame*>(myGNEFrames.at(MID_GNE_SETMODE_POLYGON));
244 }
245 
249 }
250 
251 void
253  bool showFlag = false;
254  // Iterate over GNEFrames
255  for (auto i = myGNEFrames.begin(); i != myGNEFrames.end(); i++) {
256  // if at least one frame is shown, change showFlag
257  if (i->second->shown()) {
258  showFlag = true;
259  }
260  }
261  // show and recalc framesArea if showFlag is enabled
262  if (showFlag) {
263  myFramesArea->recalc();
264  myFramesArea->show();
265  }
266 }
267 
268 
269 void
271  bool hideFlag = true;
272  // Iterate over frames
273  for (auto i = myGNEFrames.begin(); i != myGNEFrames.end(); i++) {
274  // if at least one frame is shown, change hideflag
275  if (i->second->shown()) {
276  hideFlag = false;
277  }
278  }
279  // hide and recalc frames Area if hideFlag is enabled
280  if (hideFlag) {
281  myFramesArea->hide();
282  myFramesArea->recalc();
283  }
284 }
285 
286 
289  return myParent;
290 }
291 
292 
295  return myGNEAppWindows;
296 }
297 
298 
299 void
301  if (chooserDialog == nullptr) {
302  throw ProcessError("ChooserDialog already deleted");
303  } else if (chooserDialog == myACChooserJunction) {
304  myACChooserJunction = nullptr;
305  } else if (chooserDialog == myACChooserEdges) {
306  myACChooserEdges = nullptr;
307  } else if (chooserDialog == myACChooserTLS) {
308  myACChooserTLS = nullptr;
309  } else if (chooserDialog == myACChooserAdditional) {
310  myACChooserAdditional = nullptr;
311  } else if (chooserDialog == myACChooserPOI) {
312  myACChooserPOI = nullptr;
313  } else if (chooserDialog == myACChooserPolygon) {
314  myACChooserPolygon = nullptr;
315  } else if (chooserDialog == myACChooserProhibition) {
316  myACChooserProhibition = nullptr;
317  } else {
318  throw ProcessError("Unregistered chooserDialog");
319  }
320 }
321 
322 
323 long
324 GNEViewParent::onCmdMakeSnapshot(FXObject*, FXSelector, void*) {
325  // get the new file name
326  FXFileDialog opendialog(this, "Save Snapshot");
327  opendialog.setIcon(GUIIconSubSys::getIcon(ICON_EMPTY));
328  opendialog.setSelectMode(SELECTFILE_ANY);
329  opendialog.setPatternList("All Image Files (*.gif, *.bmp, *.xpm, *.pcx, *.ico, *.rgb, *.xbm, *.tga, *.png, *.jpg, *.jpeg, *.tif, *.tiff, *.ps, *.eps, *.pdf, *.svg, *.tex, *.pgf)\n"
330  "GIF Image (*.gif)\nBMP Image (*.bmp)\nXPM Image (*.xpm)\nPCX Image (*.pcx)\nICO Image (*.ico)\n"
331  "RGB Image (*.rgb)\nXBM Image (*.xbm)\nTARGA Image (*.tga)\nPNG Image (*.png)\n"
332  "JPEG Image (*.jpg, *.jpeg)\nTIFF Image (*.tif, *.tiff)\n"
333  "Postscript (*.ps)\nEncapsulated Postscript (*.eps)\nPortable Document Format (*.pdf)\n"
334  "Scalable Vector Graphics (*.svg)\nLATEX text strings (*.tex)\nPortable LaTeX Graphics (*.pgf)\n"
335  "All Files (*)");
336  if (gCurrentFolder.length() != 0) {
337  opendialog.setDirectory(gCurrentFolder);
338  }
339  if (!opendialog.execute() || !MFXUtils::userPermitsOverwritingWhenFileExists(this, opendialog.getFilename())) {
340  return 1;
341  }
342  gCurrentFolder = opendialog.getDirectory();
343  std::string file = opendialog.getFilename().text();
344  std::string error = myView->makeSnapshot(file);
345  if (error != "") {
346  // write warning if netedit is running in testing mode
347  WRITE_DEBUG("Opening FXMessageBox 'error saving snapshot'");
348  // open message box
349  FXMessageBox::error(this, MBOX_OK, "Saving failed.", "%s", error.c_str());
350  // write warning if netedit is running in testing mode
351  WRITE_DEBUG("Closed FXMessageBox 'error saving snapshot' with 'OK'");
352  }
353  return 1;
354 }
355 
356 
357 long
358 GNEViewParent::onCmdClose(FXObject*, FXSelector /* sel */, void*) {
359  myParent->handle(this, FXSEL(SEL_COMMAND, MID_CLOSE), 0);
360  return 1;
361 }
362 
363 
364 long
365 GNEViewParent::onCmdLocate(FXObject*, FXSelector sel, void*) {
366  GNEViewNet* view = dynamic_cast<GNEViewNet*>(myView);
367  assert(view);
368  std::vector<GNEAttributeCarrier*> ACsToLocate;
369  switch (FXSELID(sel)) {
370  case MID_LOCATEJUNCTION: {
371  if (myACChooserJunction) {
372  // set focus in the existent chooser dialog
373  myACChooserJunction->setFocus();
374  } else {
375  // fill ACsToLocate with junctions
376  std::vector<GNEJunction*> junctions = view->getNet()->retrieveJunctions();
377  ACsToLocate.reserve(junctions.size());
378  for (auto i : junctions) {
379  ACsToLocate.push_back(i);
380  }
381  myACChooserJunction = new GNEDialogACChooser(this, GUIIconSubSys::getIcon(ICON_LOCATEJUNCTION), "Junction Chooser", ACsToLocate);
382  }
383  break;
384  }
385  case MID_LOCATEEDGE: {
386  if (myACChooserEdges) {
387  // set focus in the existent chooser dialog
388  myACChooserEdges->setFocus();
389  } else {
390  // fill ACsToLocate with edges
391  std::vector<GNEEdge*> edges = view->getNet()->retrieveEdges();
392  ACsToLocate.reserve(edges.size());
393  for (auto i : edges) {
394  ACsToLocate.push_back(i);
395  }
396  myACChooserEdges = new GNEDialogACChooser(this, GUIIconSubSys::getIcon(ICON_LOCATEEDGE), "Edge Chooser", ACsToLocate);
397  }
398  break;
399  }
400  case MID_LOCATETLS: {
401  if (myACChooserTLS) {
402  // set focus in the existent chooser dialog
403  myACChooserTLS->setFocus();
404  } else {
405  // fill ACsToLocate with junctions that haven TLS
406  std::vector<GNEJunction*> junctions = view->getNet()->retrieveJunctions();
407  ACsToLocate.reserve(junctions.size());
408  for (auto i : junctions) {
409  if (i->getNBNode()->getControllingTLS().size() > 0) {
410  ACsToLocate.push_back(i);
411  }
412  }
413  myACChooserTLS = new GNEDialogACChooser(this, GUIIconSubSys::getIcon(ICON_LOCATETLS), "TLS Chooser", ACsToLocate);
414  }
415  break;
416  }
417  case MID_LOCATEADD: {
418  if (myACChooserAdditional) {
419  // set focus in the existent chooser dialog
420  myACChooserAdditional->setFocus();
421  } else {
422  // fill ACsToLocate with additionals
423  std::vector<GNEAdditional*> additionals = view->getNet()->retrieveAdditionals();
424  ACsToLocate.reserve(additionals.size());
425  for (auto i : additionals) {
426  ACsToLocate.push_back(i);
427  }
428  myACChooserAdditional = new GNEDialogACChooser(this, GUIIconSubSys::getIcon(ICON_LOCATEADD), "Additional Chooser", ACsToLocate);
429  }
430  break;
431  }
432  case MID_LOCATEPOI: {
433  if (myACChooserPOI) {
434  // set focus in the existent chooser dialog
435  myACChooserPOI->setFocus();
436  } else {
437  // fill ACsToLocate with POIs
438  for (auto i : view->getNet()->getPOIs()) {
439  ACsToLocate.push_back(dynamic_cast<GNEAttributeCarrier*>(i.second));
440  }
441  myACChooserPOI = new GNEDialogACChooser(this, GUIIconSubSys::getIcon(ICON_LOCATEPOI), "POI Chooser", ACsToLocate);
442  }
443  break;
444  }
445  case MID_LOCATEPOLY: {
446  if (myACChooserPolygon) {
447  // set focus in the existent chooser dialog
448  myACChooserPolygon->setFocus();
449  } else {
450  // fill ACsToLocate with polys
451  for (auto i : view->getNet()->getPolygons()) {
452  ACsToLocate.push_back(dynamic_cast<GNEAttributeCarrier*>(i.second));
453  }
454  myACChooserPolygon = new GNEDialogACChooser(this, GUIIconSubSys::getIcon(ICON_LOCATEPOLY), "Poly Chooser", ACsToLocate);
455  }
456  break;
457  }
458  default:
459  throw ProcessError("Unknown Message ID in onCmdLocate");
460  }
461  // update locator popup
462  myLocatorPopup->popdown();
463  myLocatorButton->killFocus();
464  myLocatorPopup->update();
465  return 1;
466 }
467 
468 
469 long
470 GNEViewParent::onKeyPress(FXObject* o, FXSelector sel, void* eventData) {
471  myView->onKeyPress(o, sel, eventData);
472  return 0;
473 }
474 
475 
476 long
477 GNEViewParent::onKeyRelease(FXObject* o, FXSelector sel, void* eventData) {
478  myView->onKeyRelease(o, sel, eventData);
479  return 0;
480 }
481 
482 
483 long
484 GNEViewParent::onCmdUpdateFrameAreaWidth(FXObject*, FXSelector, void*) {
485  for (auto i = myGNEFrames.begin(); i != myGNEFrames.end(); i++) {
486  // update size of all GNEFrame
487  i->second->setFrameWidth(myFramesArea->getWidth());
488  }
489  return 0;
490 }
491 
492 bool
494  GNEAttributeCarrier* ac = dynamic_cast<GNEAttributeCarrier*>(o);
495  return ac && ac->isAttributeCarrierSelected();
496 }
497 
498 /****************************************************************************/
499 
Locate junction - button.
Definition: GUIAppEnum.h:172
std::vector< GNEJunction * > retrieveJunctions(bool onlySelected=false)
return all junctions
Definition: GNENet.cpp:1107
GNEInspectorFrame * getInspectorFrame() const
get frame for GNE_MODE_INSPECT
GNEApplicationWindow * myGNEAppWindows
pointer to GNEApplicationWindow
long onKeyPress(FXObject *o, FXSelector sel, void *data)
Called when user press a key.
void hideFramesArea()
hide frames area if all GNEFrames are hidden
~GNEViewParent()
Destructor.
mode for editing tls
Definition: GUIAppEnum.h:491
The main window of the Netedit.
mode for deleting things
Definition: GUIAppEnum.h:483
#define GUIDesignVerticalSeparator
vertical separator
Definition: GUIDesigns.h:298
const Polygons & getPolygons() const
Returns all polygons.
Locate addtional structure - button.
Definition: GUIAppEnum.h:182
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
Definition: GUIDesigns.h:80
mode for connecting lanes
Definition: GUIAppEnum.h:489
mode for inspecting object attributes
Definition: GUIAppEnum.h:485
static FXbool userPermitsOverwritingWhenFileExists(FXWindow *const parent, const FXString &file)
Returns true if either the file given by its name does not exist or the user allows overwriting it...
Definition: MFXUtils.cpp:41
void showFramesArea()
show frames area if at least a GNEFrame is showed
mode for editing additional
Definition: GUIAppEnum.h:493
long onCmdLocate(FXObject *, FXSelector, void *)
locator-callback
#define GUIDesignSplitter
Definition: GUIDesigns.h:305
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
Called when user releases a key.
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:80
virtual long onKeyRelease(FXObject *o, FXSelector sel, void *data)
FXString gCurrentFolder
The folder used as last.
GNEProhibitionFrame * getProhibitionFrame() const
get frame for GNE_MODE_PROHIBITION
FXPopup * myLocatorPopup
The locator menu.
#define GUIDesignFrameArea
Definition: GUIDesigns.h:246
GNEDialogACChooser * myACChooserAdditional
pointer to ACChooser dialog
#define GUIDesignViewnArea
design for viewn area
Definition: GUIDesigns.h:249
GNEPolygonFrame * getPolygonFrame() const
get frame for GNE_MODE_POLYGON
A single child window which contains a view of the simulation area.
Definition: GNEViewParent.h:70
GNETLSEditorFrame * getTLSEditorFrame() const
get frame for GNE_MODE_TLS
GNEAdditionalFrame * getAdditionalFrame() const
get frame for GNE_MODE_ADDITIONAL
GUIMainWindow * myParent
The parent window.
mode for editing connection prohibitions
Definition: GUIAppEnum.h:499
Locate polygons - button.
Definition: GUIAppEnum.h:186
virtual long onKeyPress(FXObject *o, FXSelector sel, void *data)
keyboard functions
long onCmdUpdateFrameAreaWidth(FXObject *, FXSelector, void *)
Called when user change the splitter between FrameArea and ViewNet.
std::string makeSnapshot(const std::string &destFile, const int width=-1, const int height=-1)
Takes a snapshots and writes it into the given file.
virtual bool isAttributeCarrierSelected() const =0
check if attribute carrier is selected
GNEApplicationWindow * getGNEAppWindows() const
get GNE Application Windows
std::map< int, GNEFrame * > myGNEFrames
map with the Frames
FXDEFMAP(GNEViewParent) GNEViewParentMap[]
bool isSelected(GUIGlObject *o) const
true if the object is selected (may include extra logic besides calling gSelected) ...
GUIMainWindow * getGUIMainWindow() const
get GUIMainWindow App
GNEDialogACChooser * myACChooserPolygon
pointer to ACChooser dialog
void removeChild(FXMDIChild *child)
removes the given child window from the list
GNESelectorFrame * getSelectorFrame() const
get frame for GNE_MODE_SELECT
Locate edge - button.
Definition: GUIAppEnum.h:174
mode for creating polygons
Definition: GUIAppEnum.h:497
Make snapshot - button.
Definition: GUIAppEnum.h:194
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:249
GNEDialogACChooser * myACChooserEdges
pointer to ACChooser dialog
GNEDialogACChooser * myACChooserPOI
pointer to ACChooser dialog
mode for editing crossing
Definition: GUIAppEnum.h:495
FXHorizontalFrame * myFramesArea
frame to hold GNEFrames
long onCmdClose(FXObject *, FXSelector, void *)
Called when the user hits the close button (x)
Locate TLS - button.
Definition: GUIAppEnum.h:180
std::vector< GNEEdge * > retrieveEdges(bool onlySelected=false)
return all edges
Definition: GNENet.cpp:1046
FXMenuButton * myLocatorButton
std::vector< GNEAdditional * > retrieveAdditionals(bool onlySelected=false) const
return all additionals
Definition: GNENet.cpp:1807
GNEConnectorFrame * getConnectorFrame() const
get frame for GNE_MODE_CONNECT
GNECrossingFrame * getCrossingFrame() const
get frame for GNE_MODE_CROSSING
GUISUMOAbstractView * myView
the view
GNEDeleteFrame * getDeleteFrame() const
get frame for GNE_MODE_DELETE
GNENet * getNet() const
get the net object
GNEDialogACChooser * myACChooserProhibition
pointer to ACChooser dialog
GNEDialogACChooser * myACChooserJunction
pointer to ACChooser dialog
void hideAllFrames()
hide all frames
virtual void buildViewToolBars(GUIGlChildWindow &)
builds the view toolbars
Definition: GNEViewNet.cpp:218
void eraseACChooserDialog(GNEDialogACChooser *chooserDialog)
remove created chooser dialog
mode for selecting objects
Definition: GUIAppEnum.h:487
Locate poi - button.
Definition: GUIAppEnum.h:184
virtual void create()
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Size of frame area updated.
Definition: GUIAppEnum.h:507
GNEDialogACChooser * myACChooserTLS
pointer to ACChooser dialog
long onCmdMakeSnapshot(FXObject *sender, FXSelector, void *)
Close simulation - ID.
Definition: GUIAppEnum.h:80
const POIs & getPOIs() const
Returns all pois.