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-2016 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  // FOX-declarations
73  FXDECLARE(GNEApplicationWindow)
74 
75 public:
76 
81  GNEApplicationWindow(FXApp* a, const std::string& configPattern);
82 
83 
85  virtual ~GNEApplicationWindow();
86 
87 
89  virtual void create();
90 
91 
93  virtual void detach();
94 
95 
96  void loadOnStartup();
97 
98 
99  void dependentBuild();
100 
101  void setStatusBarText(const std::string&);
102 
103 
106 
107  virtual void eventOccured();
109  void handleEvent_Message(GUIEvent* e);
111 
112 
113 
116  long onCmdNewNetwork(FXObject*, FXSelector, void*);
117  long onCmdOpenConfiguration(FXObject*, FXSelector, void*);
118  long onCmdOpenNetwork(FXObject*, FXSelector, void*);
119  long onCmdOpenForeign(FXObject*, FXSelector, void*);
120  long onCmdOpenShapes(FXObject*, FXSelector, void*);
121  long onCmdReload(FXObject*, FXSelector, void*);
122  long onCmdOpenRecent(FXObject*, FXSelector, void*);
123  long onCmdClose(FXObject*, FXSelector, void*);
124 
126  long onCmdLocate(FXObject*, FXSelector, void*);
127 
128  long onCmdSaveNetwork(FXObject*, FXSelector, void*);
129  long onUpdSaveNetwork(FXObject*, FXSelector, void*);
130  long onCmdSaveAsNetwork(FXObject*, FXSelector, void*);
131  long onUpdNeedsNetwork(FXObject*, FXSelector, void*);
132  long onUpdReload(FXObject*, FXSelector, void*);
133  long onCmdSaveAsPlainXML(FXObject*, FXSelector, void*);
134  long onCmdSaveJoined(FXObject*, FXSelector, void*);
135  long onCmdSavePois(FXObject*, FXSelector, void*);
136 
138  long onKeyPress(FXObject* o, FXSelector sel, void* data);
139  long onKeyRelease(FXObject* o, FXSelector sel, void* data);
140 
143  long onCmdQuit(FXObject*, FXSelector, void*);
144 
145  long onCmdEditChosen(FXObject*, FXSelector, void*);
146 
148  long onCmdAppSettings(FXObject*, FXSelector, void*);
150  long onCmdGaming(FXObject*, FXSelector, void*);
151 
153  long onCmdAbout(FXObject*, FXSelector, void*);
154 
155  long onCmdNewView(FXObject*, FXSelector, void*);
156 
157  long onUpdOpen(FXObject*, FXSelector, void*);
158  long onCmdClearMsgWindow(FXObject*, FXSelector, void*);
159 
160  long onLoadThreadEvent(FXObject*, FXSelector, void*);
162  long onClipboardRequest(FXObject* sender, FXSelector sel, void* ptr);
163 
165  long onCmdSetMode(FXObject* sender, FXSelector sel, void* ptr);
166 
168  long onCmdAbort(FXObject* sender, FXSelector sel, void* ptr);
169 
171  long onCmdDel(FXObject* sender, FXSelector sel, void* ptr);
172 
174  long onCmdEnter(FXObject* sender, FXSelector sel, void* ptr);
175 
177  long onCmdHelp(FXObject* sender, FXSelector sel, void* ptr);
178 
180  long onCmdComputeJunctions(FXObject*, FXSelector, void*);
181 
183  long onCmdCleanJunctions(FXObject*, FXSelector, void*);
184 
186  long onCmdJoinJunctions(FXObject*, FXSelector, void*);
187 
189  long onCmdOptions(FXObject*, FXSelector, void*);
191 
192  FXGLCanvas* getBuildGLCanvas() const;
193 
196  return 0;
197  }
198 
199  FXCursor* getDefaultCursor();
200 
202  return myUndoList;
203  }
204 
206  void updateControls();
207 
208 
209 protected:
212 
214  virtual void fillMenuBar();
215 
217  std::string myName;
218 
221 
223  size_t myViewNumber;
224 
227 
229  FXMenuPane* myFileMenu,
230  *myEditMenu,
231  *myLocatorMenu,
233  *myWindowsMenu,
234  *myHelpMenu;
235 
238 
240  FXSplitter* myMainSplitter;
241 
245  *myMenuBarDrag;
246 
249 
251  FXMDIMenu* myMDIMenu;
252 
254  FXMenuBar* myMenuBar;
255 
258 
261 
263  FXRecentFiles myRecentConfigs;
264 
266  FXRecentFiles myRecentNets;
267 
269  std::string myConfigPattern;
270 
272 
275 
278 
280  const FXString myTitlePrefix;
281 
288  class GNEShapeHandler : public ShapeHandler {
289  public:
290  GNEShapeHandler(const std::string& file, GNENet* net, ShapeContainer& sc) :
291  ShapeHandler(file, sc),
292  myNet(net) {}
293 
295  virtual ~GNEShapeHandler() {}
296 
297  Position getLanePos(const std::string& poiID, const std::string& laneID, SUMOReal lanePos);
298 
299  private:
301  };
302 
303 private:
305  void loadConfigOrNet(const std::string file, bool isNet, bool isReload = false, bool optionsReady = false, bool newNet = false);
306 
308  void closeAllWindows();
309 
312 
313  // @brief convenience method
314  GNEViewNet* getView();
315 
316  /* @brief warns about unsaved changes and gives the user the option to abort
317  */
319 };
320 
321 
322 #endif
323 
324 /****************************************************************************/
325 
std::string myConfigPattern
Input file pattern.
FXToolBarShell * myToolBarDrag5
FXMenuBar * myMenuBar
The application menu bar.
bool myAmLoading
information whether the gui is currently loading and the load-options shall be greyed out ...
size_t myViewNumber
The current view number.
long long int SUMOTime
Definition: SUMOTime.h:43
long onCmdNewNetwork(FXObject *, FXSelector, void *)
FXEX::FXThreadEvent myLoadThreadEvent
io-event with the load-thread
MFXEventQue< GUIEvent * > myEvents
List of got requests.
long onCmdReload(FXObject *, FXSelector, void *)
FXRecentFiles myRecentConfigs
List of recent config files.
GUIMessageWindow * myMessageWindow
A window to display messages, warnings and error in.
FXToolBarShell * myToolBarDrag2
The main window of the Netedit.
long onCmdClearMsgWindow(FXObject *, FXSelector, void *)
virtual void create()
Creates the main window (required by FOX)
long onCmdJoinJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->join junctions
long onCmdAppSettings(FXObject *, FXSelector, void *)
Opens the application settings menu.
GNEUndoList * myUndoList
the one and only undo list
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)
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
long onCmdOpenForeign(FXObject *, FXSelector, void *)
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:77
long onCmdSaveNetwork(FXObject *, FXSelector, void *)
FXToolBarShell * myToolBarDrag4
long onCmdAbout(FXObject *, FXSelector, void *)
Shows the about dialog.
Storage for geometrical objects.
long onUpdNeedsNetwork(FXObject *, FXSelector, void *)
long onLoadThreadEvent(FXObject *, FXSelector, void *)
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
FXToolBarShell * myToolBarDrag3
void loadConfigOrNet(const std::string file, bool isNet, bool isReload=false, bool optionsReady=false, bool newNet=false)
long onCmdEditChosen(FXObject *, FXSelector, void *)
void updateControls()
update control contents after undo/redo or recompute
GUISUMOAbstractView * openNewView()
long onUpdReload(FXObject *, FXSelector, void *)
long onCmdHelp(FXObject *sender, FXSelector sel, void *ptr)
called if the user selects help->Documentation
long onClipboardRequest(FXObject *sender, FXSelector sel, void *ptr)
Somebody wants our clipped text.
The XML-Handler for network loading.
Definition: ShapeHandler.h:55
A window which displays the time line of one (or more) value(s)
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 *)
Toggle gaming mode.
FXSplitter * myMainSplitter
The splitter that divides the main window into vies and the log window.
long onCmdOpenRecent(FXObject *, FXSelector, void *)
long onCmdOpenNetwork(FXObject *, FXSelector, void *)
SUMOTime getCurrentSimTime() const
pure virtual but we don&#39;t need it
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
virtual void fillMenuBar()
Builds the menu bar.
long onCmdSaveAsPlainXML(FXObject *, FXSelector, void *)
long onCmdOpenConfiguration(FXObject *, FXSelector, void *)
long onCmdLocate(FXObject *, FXSelector, void *)
Called on menu commands from the Locator menu.
Position getLanePos(const std::string &poiID, const std::string &laneID, SUMOReal lanePos)
get position for a given laneID
long onCmdCleanJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->clean junctions
The XML-Handler for shapes loading network loading.
virtual ~GNEApplicationWindow()
Destructor.
FXToolBar * myToolBar1
The application tool bar.
long onUpdOpen(FXObject *, FXSelector, void *)
GNELoadThread * myLoadThread
FXToolBarShell * myToolBarDrag1
for some menu detaching fun
long onCmdOpenShapes(FXObject *, FXSelector, void *)
long onCmdEnter(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits enter
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed Called either by FileMenu->Quit, the normal close-me...
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.
FXToolBarShell * myMenuBarDrag
long onCmdClose(FXObject *, FXSelector, void *)
void handleEvent_Message(GUIEvent *e)
FXGLCanvas * getBuildGLCanvas() const
long onCmdNewView(FXObject *, FXSelector, void *)
long onCmdAbort(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits esc
#define SUMOReal
Definition: config.h:213
long onCmdSaveJoined(FXObject *, FXSelector, void *)
const FXString myTitlePrefix
the prefix for the window title
GNEShapeHandler(const std::string &file, GNENet *net, ShapeContainer &sc)
GNENet * myNet
we are responsible for the net
long onCmdSaveAsNetwork(FXObject *, FXSelector, void *)
A logging window for the gui.
A window containing a gl-object&#39;s parameter.
void setStatusBarText(const std::string &)
FXMenuPane * myFileMenu
the submenus
long onKeyPress(FXObject *o, FXSelector sel, void *data)
handle keys
long onUpdSaveNetwork(FXObject *, FXSelector, void *)
long onCmdSavePois(FXObject *, FXSelector, void *)