SUMO - Simulation of Urban MObility
GNEApplicationWindow.h
Go to the documentation of this file.
1 /****************************************************************************/
7 // The main window of Netedit (adapted from GUIApplicationWindow)
8 /****************************************************************************/
9 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
10 // Copyright (C) 2001-2017 DLR (http://www.dlr.de/) and contributors
11 /****************************************************************************/
12 //
13 // This file is part of SUMO.
14 // SUMO is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation, either version 3 of the License, or
17 // (at your option) any later version.
18 //
19 /****************************************************************************/
20 #ifndef GNEApplicationWindow_h
21 #define GNEApplicationWindow_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <string>
34 #include <vector>
35 #include <iostream>
36 #include <fx.h>
44 
45 // ===========================================================================
46 // class declarations
47 // ===========================================================================
48 class GNELoadThread;
49 class GNEUndoList;
50 class GNENet;
51 class GNEViewNet;
52 class GUIEvent;
55 
56 
57 // ===========================================================================
58 // class definition
59 // ===========================================================================
72  FXDECLARE(GNEApplicationWindow)
73 
74 public:
81  class GNEShapeHandler : public ShapeHandler {
82  public:
87  GNEShapeHandler(const std::string& file, GNENet* net);
88 
91 
97  Position getLanePos(const std::string& poiID, const std::string& laneID, double lanePos, double lanePosLat);
98 
99  private:
102  };
103 
104 
109  GNEApplicationWindow(FXApp* a, const std::string& configPattern);
110 
112  virtual ~GNEApplicationWindow();
113 
115  virtual void create();
116 
118  virtual void detach();
119 
121  void loadOptionOnStartup();
122 
124  void dependentBuild();
125 
127  void setStatusBarText(const std::string& statusBarText);
128 
130  void setAdditionalsFile(const std::string& additionalsFile);
131 
133  void setShapesFile(const std::string& shapesFile);
134 
137 
139  void enableSaveShapesMenu();
140 
144  virtual void eventOccured();
145 
148 
150  void handleEvent_Message(GUIEvent* e);
152 
156  long onCmdNewNetwork(FXObject*, FXSelector, void*);
157 
159  long onCmdOpenConfiguration(FXObject*, FXSelector, void*);
160 
162  long onCmdOpenNetwork(FXObject*, FXSelector, void*);
163 
165  long onCmdOpenForeign(FXObject*, FXSelector, void*);
166 
168  long onCmdOpenShapes(FXObject*, FXSelector, void*);
169 
171  long onCmdOpenAdditionals(FXObject*, FXSelector, void*);
172 
174  long onCmdReload(FXObject*, FXSelector, void*);
175 
177  long onCmdOpenRecent(FXObject*, FXSelector, void*);
178 
180  long onCmdClose(FXObject*, FXSelector, void*);
181 
183  long onCmdLocate(FXObject*, FXSelector, void*);
184 
186  long onCmdSaveNetwork(FXObject*, FXSelector, void*);
187 
189  long onCmdSaveAdditionals(FXObject*, FXSelector, void*);
190 
192  long onCmdSaveAdditionalsAs(FXObject*, FXSelector, void*);
193 
195  long onUpdSaveNetwork(FXObject*, FXSelector, void*);
196 
198  long onCmdSaveAsNetwork(FXObject*, FXSelector, void*);
199 
201  long onUpdNeedsNetwork(FXObject*, FXSelector, void*);
202 
204  long onUpdReload(FXObject*, FXSelector, void*);
205 
207  long onCmdSaveAsPlainXML(FXObject*, FXSelector, void*);
208 
210  long onCmdSaveJoined(FXObject*, FXSelector, void*);
211 
213  long onCmdSaveShapes(FXObject*, FXSelector, void*);
214 
216  long onCmdSaveShapesAs(FXObject*, FXSelector, void*);
217 
219  long onKeyPress(FXObject* o, FXSelector sel, void* data);
220 
222  long onKeyRelease(FXObject* o, FXSelector sel, void* data);
223 
227  long onCmdQuit(FXObject*, FXSelector, void*);
228 
230  long onCmdEditChosen(FXObject*, FXSelector, void*);
231 
233  long onCmdAppSettings(FXObject*, FXSelector, void*);
234 
236  long onCmdGaming(FXObject*, FXSelector, void*);
237 
239  long onCmdAbout(FXObject*, FXSelector, void*);
240 
242  long onCmdNewView(FXObject*, FXSelector, void*);
243 
245  long onUpdOpen(FXObject*, FXSelector, void*);
246 
248  long onCmdClearMsgWindow(FXObject*, FXSelector, void*);
249 
251  long onLoadThreadEvent(FXObject*, FXSelector, void*);
252 
254  long onClipboardRequest(FXObject* sender, FXSelector sel, void* ptr);
255 
257  long onCmdSetMode(FXObject* sender, FXSelector sel, void* ptr);
258 
260  long onCmdAbort(FXObject* sender, FXSelector sel, void* ptr);
261 
263  long onCmdDel(FXObject* sender, FXSelector sel, void* ptr);
264 
266  long onCmdEnter(FXObject* sender, FXSelector sel, void* ptr);
267 
269  long onCmdFocusFrame(FXObject* sender, FXSelector sel, void* ptr);
270 
272  long onCmdEditViewport(FXObject*, FXSelector, void*);
273 
275  long onCmdHelp(FXObject* sender, FXSelector sel, void* ptr);
276 
278  long onCmdComputeJunctions(FXObject*, FXSelector, void*);
279 
281  long onCmdComputeJunctionsVolatile(FXObject*, FXSelector, void*);
282 
284  long onCmdCleanJunctions(FXObject*, FXSelector, void*);
285 
287  long onCmdJoinJunctions(FXObject*, FXSelector, void*);
288 
290  long onCmdCleanInvalidCrossings(FXObject*, FXSelector, void*);
291 
293  long onCmdOptions(FXObject*, FXSelector, void*);
295 
297  FXGLCanvas* getBuildGLCanvas() const;
298 
300  SUMOTime getCurrentSimTime() const;
302  double getTrackerInterval() const;
303 
305  FXCursor* getDefaultCursor();
306 
309 
311  void updateControls();
312 
313 protected:
316 
318  virtual void fillMenuBar();
319 
321  std::string myName;
322 
325 
328 
331 
333  FXMenuPane* myFileMenu,
334  *myEditMenu,
336  *myLocatorMenu,
337  *myWindowsMenu,
338  *myHelpMenu;
339 
342 
344  FXSplitter* myMainSplitter;
345 
349  *myMenuBarDrag;
350 
353 
355  FXMDIMenu* myMDIMenu;
356 
358  FXMenuBar* myMenuBar;
359 
362 
365 
367  FXRecentFiles myRecentConfigs;
368 
370  FXRecentFiles myRecentNets;
371 
373  std::string myConfigPattern;
374 
377 
380 
383 
385  const FXString myTitlePrefix;
386 
388  std::string myAdditionalsFile;
389 
391  std::string myShapesFile;
392 
393 private:
396 
398  FXMenuCommand *mySaveShapesMenuCommand;
399 
401  void loadConfigOrNet(const std::string file, bool isNet, bool isReload = false, bool useStartupOptions = false, bool newNet = false);
402 
404  void closeAllWindows();
405 
408 
410  GNEViewNet* getView();
411 
414 
417 
420 };
421 
422 
423 #endif
424 
425 /****************************************************************************/
426 
std::string myConfigPattern
Input file pattern.
FXToolBarShell * myToolBarDrag5
FXMenuBar * myMenuBar
The application menu bar.
FXMenuCommand * mySaveShapesMenuCommand
FXMenuCommand for enable or disable save shapes.
bool myAmLoading
information whether the gui is currently loading and the load-options shall be greyed out ...
void enableSaveAdditionalsMenu()
enable save additionals
long onCmdNewNetwork(FXObject *, FXSelector, void *)
FXEX::FXThreadEvent myLoadThreadEvent
io-event with the load-thread
void setAdditionalsFile(const std::string &additionalsFile)
set additionals file
void setStatusBarText(const std::string &statusBarText)
set text of the statusBar
MFXEventQue< GUIEvent * > myEvents
List of got requests.
GNEUndoList * getUndoList()
get pointer to undoList
long onCmdReload(FXObject *, FXSelector, void *)
called when the command/FXCall reload is executed
void closeAllWindows()
this method closes all windows and deletes the current simulation */
FXRecentFiles myRecentConfigs
List of recent config files.
long onCmdSaveAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals is executed
GUIMessageWindow * myMessageWindow
A window to display messages, warnings and error in.
FXToolBarShell * myToolBarDrag2
void enableSaveShapesMenu()
enable save shapes
The main window of the Netedit.
std::string myShapesFile
filename for load/save shapes
long onCmdClearMsgWindow(FXObject *, FXSelector, void *)
called when the command/FXCall clear message windows is executed
virtual void create()
Creates the main window (required by FOX)
long onCmdJoinJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->join junctions
bool hadDependentBuild
check if had dependent build
long onCmdAppSettings(FXObject *, FXSelector, void *)
Opens the application settings menu.
double getTrackerInterval() const
get current tracker interval (pure virtual but we don&#39;t need it)
GNEUndoList * myUndoList
the one and only undo list
std::string myName
the name of the simulation
long onCmdComputeJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->compute junctions
long onCmdSetMode(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits an edit-mode hotkey
void handleEvent_NetworkLoaded(GUIEvent *e)
handle event of type Network loaded
bool continueWithUnsavedAdditionalChanges()
warns about unsaved changes in additionals and gives the user the option to abort ...
void loadConfigOrNet(const std::string file, bool isNet, bool isReload=false, bool useStartupOptions=false, bool newNet=false)
starts to load a netimport configuration or a network */
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
called when a key is released
bool continueWithUnsavedChanges()
warns about unsaved changes and gives the user the option to abort
long onCmdOpenForeign(FXObject *, FXSelector, void *)
called when the command/FXCall open foreign is executed
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:92
long onCmdSaveNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network is executed
FXToolBarShell * myToolBarDrag4
long onCmdAbout(FXObject *, FXSelector, void *)
called when the command/FXCall show about dialog is executed
long onCmdSaveShapes(FXObject *, FXSelector, void *)
called when the command/FXCall save shapes is executed
long onUpdNeedsNetwork(FXObject *, FXSelector, void *)
called when the upadte/FXCall needs network is executed
long onCmdCleanInvalidCrossings(FXObject *, FXSelector, void *)
called if the user selects Processing->clear invalid crossings
long onLoadThreadEvent(FXObject *, FXSelector, void *)
called when the command/FXCall load thread is executed
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
FXToolBarShell * myToolBarDrag3
long onCmdEditChosen(FXObject *, FXSelector, void *)
called when the command/FXCall edit chosen is executed
void updateControls()
update control contents after undo/redo or recompute
GUISUMOAbstractView * openNewView()
opens a new simulation display
long onUpdReload(FXObject *, FXSelector, void *)
called when the update/FXCall reload is executed
long onCmdHelp(FXObject *sender, FXSelector sel, void *ptr)
called if the user selects help->Documentation
long onClipboardRequest(FXObject *sender, FXSelector sel, void *ptr)
called when the command/FXCall clipboard request is executed
The XML-Handler for network loading.
Definition: ShapeHandler.h:56
long onCmdSaveAdditionalsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals as is executed
A window which displays the time line of one (or more) value(s)
long onCmdEditViewport(FXObject *, FXSelector, void *)
called if the user press key v to open zoom editor
long onCmdOptions(FXObject *, FXSelector, void *)
called if the user selects Processing->Configure Options
GNEApplicationWindow()
FOX needs this for static members.
long onCmdGaming(FXObject *, FXSelector, void *)
called when the command/FXCall toogle gaming mode is executed
FXSplitter * myMainSplitter
The splitter that divides the main window into view and the log window.
long onCmdOpenRecent(FXObject *, FXSelector, void *)
called when the command/FXCall open recent is executed
long onCmdOpenNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall open network is executed
SUMOTime getCurrentSimTime() const
get current simulation time (pure virtual but we don&#39;t need it)
int myViewNumber
The current view number.
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
Position getLanePos(const std::string &poiID, const std::string &laneID, double lanePos, double lanePosLat)
get lane position
virtual void fillMenuBar()
Builds the menu bar.
bool continueWithUnsavedShapeChanges()
warns about unsaved changes in shapes and gives the user the option to abort
long onCmdSaveAsPlainXML(FXObject *, FXSelector, void *)
called when the command/FXCall save as plain xml is executed
long onCmdSaveShapesAs(FXObject *, FXSelector, void *)
called when the command/FXCall save shapes as is executed
long onCmdOpenConfiguration(FXObject *, FXSelector, void *)
called when the command/FXCall open configuration is executed
long onCmdOpenAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall open additionals is executed
long onCmdLocate(FXObject *, FXSelector, void *)
called when the command/FXCall locate is executed
FXCursor * getDefaultCursor()
get default cursor
long onCmdCleanJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->clean junctions
GNEShapeHandler(const std::string &file, GNENet *net)
Constructor.
virtual ~GNEApplicationWindow()
Destructor.
FXToolBar * myToolBar1
The application tool bar.
long onUpdOpen(FXObject *, FXSelector, void *)
called when the command/FXCall on update open executed
GNELoadThread * myLoadThread
the thread that loads the network
FXToolBarShell * myToolBarDrag1
for some menu detaching fun
long onCmdOpenShapes(FXObject *, FXSelector, void *)
called when the command/FXCall open shapes is executed
long onCmdEnter(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits enter
long onCmdFocusFrame(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits f
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed.
virtual void detach()
detaches the tool/menu bar
long onCmdDel(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits del
FXRecentFiles myRecentNets
List of recent nets.
void loadOptionOnStartup()
load net on startup
FXToolBarShell * myMenuBarDrag
FXMenuCommand * mySaveAdditionalsMenuCommand
FXMenuCommand for enable or disable save additionals.
long onCmdClose(FXObject *, FXSelector, void *)
called when the command/FXCall close is executed
std::string myAdditionalsFile
filename for load/save additionals
void handleEvent_Message(GUIEvent *e)
hanlde event of type message
FXGLCanvas * getBuildGLCanvas() const
get build OpenGL Canvas
long onCmdNewView(FXObject *, FXSelector, void *)
called when the command/FXCall new view is executed
long onCmdAbort(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits esc
long onCmdSaveJoined(FXObject *, FXSelector, void *)
called when the command/FXCall save joined is executed
const FXString myTitlePrefix
the prefix for the window title
long long int SUMOTime
Definition: TraCIDefs.h:52
GNENet * myNet
we are responsible for the net
void dependentBuild()
build dependent
long onCmdComputeJunctionsVolatile(FXObject *, FXSelector, void *)
called if the user selects Processing->compute junctions with volatile options
long onCmdSaveAsNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network as is executed
GNEViewNet * getView()
convenience method
A logging window for the gui.
A window containing a gl-object&#39;s parameter.
FXMenuPane * myFileMenu
the submenus
long onKeyPress(FXObject *o, FXSelector sel, void *data)
called when a key is pressed
long onUpdSaveNetwork(FXObject *, FXSelector, void *)
called when the update/FXCall save network is executed
void setShapesFile(const std::string &shapesFile)
set shapes file