SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GUIApplicationWindow.h
Go to the documentation of this file.
1 /****************************************************************************/
10 // The main window of the SUMO-gui.
11 /****************************************************************************/
12 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
13 // Copyright (C) 2001-2013 DLR (http://www.dlr.de/) and contributors
14 /****************************************************************************/
15 //
16 // This file is part of SUMO.
17 // SUMO is free software: you can redistribute it and/or modify
18 // it under the terms of the GNU General Public License as published by
19 // the Free Software Foundation, either version 3 of the License, or
20 // (at your option) any later version.
21 //
22 /****************************************************************************/
23 #ifndef GUIApplicationWindow_h
24 #define GUIApplicationWindow_h
25 
26 
27 // ===========================================================================
28 // included modules
29 // ===========================================================================
30 #ifdef _MSC_VER
31 #include <windows_config.h>
32 #else
33 #include <config.h>
34 #endif
35 
36 #include <string>
37 #include <vector>
38 #include <iostream>
39 #include <fx.h>
48 #include "GUISUMOViewParent.h"
49 
50 
51 // ===========================================================================
52 // class declarations
53 // ===========================================================================
54 class GUILoadThread;
55 class GUIRunThread;
56 class GUIMessageWindow;
57 class GUIEvent;
60 
61 
62 // ===========================================================================
63 // class definition
64 // ===========================================================================
75  // FOX-declarations
76  FXDECLARE(GUIApplicationWindow)
77 public:
78 
83  GUIApplicationWindow(FXApp* a, const std::string& configPattern);
84 
85 
87  virtual ~GUIApplicationWindow();
88 
89 
92 
94  virtual void create();
95 
97  virtual void detach();
99 
100  void loadOnStartup();
101 
102 
103  void dependentBuild(bool game);
104 
105  void setStatusBarText(const std::string&);
106 
107  FXGLCanvas* getBuildGLCanvas() const;
108  SUMOTime getCurrentSimTime() const;
109 
110  FXCursor* getDefaultCursor();
111 
112 
113 
114 
117 
118  virtual void eventOccured();
121  void handleEvent_Message(GUIEvent* e);
124 
125 
126 
129 
131  long onCmdOpenConfiguration(FXObject*, FXSelector, void*);
132 
134  long onCmdOpenNetwork(FXObject*, FXSelector, void*);
135 
137  long onCmdReload(FXObject*, FXSelector, void*);
138 
140  long onCmdOpenRecent(FXObject*, FXSelector, void*);
141 
143  long onCmdClose(FXObject*, FXSelector, void*);
144 
148  long onCmdQuit(FXObject*, FXSelector, void*);
149 
151  long onCmdEditChosen(FXObject*, FXSelector, void*);
152 
154  long onCmdEditBreakpoints(FXObject*, FXSelector, void*);
155 
157  long onCmdAppSettings(FXObject*, FXSelector, void*);
158 
160  long onCmdGaming(FXObject*, FXSelector, void*);
161 
163  long onCmdListInternal(FXObject*, FXSelector, void*);
164 
166  long onCmdAbout(FXObject*, FXSelector, void*);
167 
169  long onCmdStart(FXObject*, FXSelector, void*);
170 
172  long onCmdStop(FXObject*, FXSelector, void*);
173 
175  long onCmdStep(FXObject*, FXSelector, void*);
176 
178  long onCmdTimeToggle(FXObject*, FXSelector, void*);
179 
181  long onCmdDelayToggle(FXObject*, FXSelector, void*);
182 
184  long onCmdNewView(FXObject*, FXSelector, void*);
185 
186 #ifdef HAVE_OSG
187  long onCmdNewOSG(FXObject*, FXSelector, void*);
189 #endif
190 
192  long onUpdOpen(FXObject*, FXSelector, void*);
193 
195  long onUpdReload(FXObject*, FXSelector, void*);
196 
198  long onUpdOpenRecent(FXObject*, FXSelector, void*);
199 
201  long onUpdAddView(FXObject*, FXSelector, void*);
202 
204  virtual long onUpdStart(FXObject*, FXSelector, void*);
205 
207  long onUpdStop(FXObject*, FXSelector, void*);
208 
210  long onUpdStep(FXObject*, FXSelector, void*);
211 
213  long onUpdEditChosen(FXObject* sender, FXSelector, void* ptr);
214 
216  virtual long onUpdEditBreakpoints(FXObject*, FXSelector, void*);
217 
219  long onCmdClearMsgWindow(FXObject*, FXSelector, void*);
220 
222  long onLoadThreadEvent(FXObject*, FXSelector, void*);
223 
225  long onRunThreadEvent(FXObject*, FXSelector, void*);
226 
228  long onClipboardRequest(FXObject* sender, FXSelector sel, void* ptr);
230 
231 protected:
232  virtual void addToWindowsMenu(FXMenuPane*) { }
233 
234 private:
236  void load(const std::string& file, bool isNet, bool isReload = false);
237 
239  void closeAllWindows();
240 
242  void updateTimeLCD(const SUMOTime time);
243 
246 
247 protected:
250 
251 protected:
253  virtual void fillMenuBar();
254 
256  virtual void buildToolBars();
257 
258 protected:
260  std::string myName;
261 
264 
267 
270 
272  size_t myViewNumber;
273 
276 
280 
283 
285  FXSplitter* myMainSplitter;
286 
290  *myMenuBarDrag;
291 
294 
297 
300 
302  FXMDIMenu* myMDIMenu;
303 
305  FXMenuBar* myMenuBar;
306 
309 
312 
315 
318 
320  FXRecentFiles myRecentConfigs;
321 
323  FXRecentFiles myRecentNets;
324 
326  std::string myConfigPattern;
327 
329 
332 
333 };
334 
335 
336 #endif
337 
338 /****************************************************************************/
339 
virtual ~GUIApplicationWindow()
Destructor.
GUILoadThread * myLoadThread
long onCmdStep(FXObject *, FXSelector, void *)
Called on &quot;step&quot;.
void handleEvent_SimulationLoaded(GUIEvent *e)
long onCmdReload(FXObject *, FXSelector, void *)
Called on reload.
SUMOTime myAlternateSimDelay
The alternate simulation delay for toggling.
FXSplitter * myMainSplitter
The splitter that divides the main window into vies and the log window.
long onUpdOpenRecent(FXObject *, FXSelector, void *)
Determines whether opening a recent file is enabled.
long onCmdEditChosen(FXObject *, FXSelector, void *)
Called on menu Edit-&gt;Edit Chosen.
MFXEventQue myEvents
List of got requests.
virtual long onUpdStart(FXObject *, FXSelector, void *)
Determines whether &quot;play&quot; is enabled.
FXToolBarShell * myToolBarDrag4
long onUpdStop(FXObject *, FXSelector, void *)
Determines whether &quot;stop&quot; is enabled.
long onClipboardRequest(FXObject *sender, FXSelector sel, void *ptr)
Somebody wants our clipped text.
virtual long onUpdEditBreakpoints(FXObject *, FXSelector, void *)
Determines whether editing breakpoints is enabled.
virtual void detach()
Detaches the tool/menu bar.
GUISUMOAbstractView * openNewView(GUISUMOViewParent::ViewType vt=GUISUMOViewParent::VIEW_2D_OPENGL)
long onCmdStop(FXObject *, FXSelector, void *)
Called on &quot;stop&quot;.
long onCmdNewView(FXObject *, FXSelector, void *)
Called if a new view shall be opened (2D view)
long onUpdOpen(FXObject *, FXSelector, void *)
Determines whether opening is enabled.
long onUpdEditChosen(FXObject *sender, FXSelector, void *ptr)
Determines whether editing chosen is enabled.
FXToolBarShell * myToolBarDrag2
FXMenuPane * myFileMenu
the submenus
virtual void create()
Creates the main window (required by FOX)
FXRecentFiles myRecentNets
List of recent nets.
A window which displays the time line of one (or more) value(s)
bool myShowTimeAsHMS
whether to show time as hour:minute:second
void handleEvent_Message(GUIEvent *e)
long onCmdOpenRecent(FXObject *, FXSelector, void *)
Called on opening a recent file.
void handleEvent_SimulationEnded(GUIEvent *e)
std::string myConfigPattern
Input file pattern.
long onCmdEditBreakpoints(FXObject *, FXSelector, void *)
Called on menu Edit-&gt;Edit Breakpoints.
long onCmdStart(FXObject *, FXSelector, void *)
Called on &quot;play&quot;.
long onCmdAppSettings(FXObject *, FXSelector, void *)
Opens the application settings menu (Settings-&gt;Application Settings...)
virtual void buildToolBars()
Builds the tool bar.
size_t myViewNumber
The current view number.
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
void load(const std::string &file, bool isNet, bool isReload=false)
FXToolBarShell * myMenuBarDrag
SUMOTime getCurrentSimTime() const
ViewType
Available view types.
long onCmdListInternal(FXObject *, FXSelector, void *)
Toggle listing of internal structures.
long onUpdReload(FXObject *, FXSelector, void *)
Determines whether reloading is enabled.
long onCmdDelayToggle(FXObject *, FXSelector, void *)
Called on &quot;delay toggle&quot;.
FXToolBarShell * myToolBarDrag3
void setStatusBarText(const std::string &)
long onCmdAbout(FXObject *, FXSelector, void *)
Shows the about dialog.
long onCmdClose(FXObject *, FXSelector, void *)
Called on menu File-&gt;Close.
long onCmdClearMsgWindow(FXObject *, FXSelector, void *)
Called if the message window shall be cleared.
virtual void fillMenuBar()
Builds the menu bar.
GUIApplicationWindow()
FOX needs this for static members.
long onCmdGaming(FXObject *, FXSelector, void *)
Toggle gaming mode.
FXMenuBar * myMenuBar
The application menu bar.
FXToolBarShell * myToolBarDrag5
FXGLCanvas * getBuildGLCanvas() const
long onCmdOpenConfiguration(FXObject *, FXSelector, void *)
Called on menu File-&gt;Open Configuration.
long onRunThreadEvent(FXObject *, FXSelector, void *)
Called on an event from the simulation thread.
void updateTimeLCD(const SUMOTime time)
updates the simulation time display
long onUpdAddView(FXObject *, FXSelector, void *)
Determines whether adding a view is enabled.
FXRealSpinDial * mySimDelayTarget
FXRecentFiles myRecentConfigs
List of recent config files.
FXToolBarShell * myToolBarDrag1
for some menu detaching fun
FXEX::FXThreadEvent myLoadThreadEvent
io-event with the load-thread
FXEX::FXThreadEvent myRunThreadEvent
io-event with the run-thread
FXToolBar * myToolBar1
The application tool bar.
long onCmdOpenNetwork(FXObject *, FXSelector, void *)
Called on menu File-&gt;Open Network.
long onLoadThreadEvent(FXObject *, FXSelector, void *)
Called on an event from the loading thread.
GUIMessageWindow * myMessageWindow
A window to display messages, warnings and error in.
bool myAmLoading
information whether the gui is currently loading and the load-options shall be greyed out ...
long onCmdTimeToggle(FXObject *, FXSelector, void *)
Called on &quot;time toggle&quot;.
void handleEvent_SimulationStep(GUIEvent *e)
Spinner control.
FXEX::FXLCDLabel * myLCDLabel
the simulation step display
A logging window for the gui.
A window containing a gl-object&#39;s parameter.
long onUpdStep(FXObject *, FXSelector, void *)
Determines whether &quot;step&quot; is enabled.
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed.
virtual void addToWindowsMenu(FXMenuPane *)
The main window of the SUMO-gui.