Eclipse SUMO - Simulation of Urban MObility
GNEApplicationWindow.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2020 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
18 // The main window of Netedit (adapted from GUIApplicationWindow)
19 /****************************************************************************/
20 #pragma once
21 
23 
24 
25 // ===========================================================================
26 // class definition
27 // ===========================================================================
40  FXDECLARE(GNEApplicationWindow)
41 
42 public:
43 
48  GNEApplicationWindow(FXApp* a, const std::string& configPattern);
49 
52 
54  void create();
55 
57  void loadOptionOnStartup();
58 
60  void dependentBuild();
61 
63  void setStatusBarText(const std::string& statusBarText);
64 
67 
70 
73 
76 
79 
82 
85 
88 
92  void eventOccurred();
93 
96 
100 
104  long onCmdNewNetwork(FXObject*, FXSelector, void*);
105 
107  long onCmdOpenConfiguration(FXObject*, FXSelector, void*);
108 
110  long onCmdOpenNetwork(FXObject*, FXSelector, void*);
111 
113  long onCmdOpenForeign(FXObject*, FXSelector, void*);
114 
116  long onCmdOpenAdditionals(FXObject*, FXSelector, void*);
117 
119  long onCmdOpenTLSPrograms(FXObject*, FXSelector, void*);
120 
122  long onCmdOpenEdgeTypes(FXObject*, FXSelector, void*);
123 
125  long onCmdOpenDemandElements(FXObject*, FXSelector, void*);
126 
128  long onCmdOpenDataElements(FXObject*, FXSelector, void*);
129 
131  long onCmdReload(FXObject*, FXSelector, void*);
132 
134  long onCmdOpenRecent(FXObject*, FXSelector, void*);
135 
137  long onCmdClose(FXObject*, FXSelector, void*);
138 
140  long onCmdEditViewScheme(FXObject*, FXSelector, void*);
141 
143  long onCmdEditViewport(FXObject*, FXSelector, void*);
144 
146  long onCmdLocate(FXObject*, FXSelector, void*);
147 
149  long onCmdSaveNetwork(FXObject*, FXSelector, void*);
150 
152  long onCmdSaveTLSPrograms(FXObject*, FXSelector, void*);
153 
155  long onCmdSaveEdgeTypes(FXObject*, FXSelector, void*);
156 
158  long onCmdSaveTLSProgramsAs(FXObject*, FXSelector, void*);
159 
161  long onCmdSaveEdgeTypesAs(FXObject*, FXSelector, void*);
162 
164  long onCmdSaveAdditionals(FXObject*, FXSelector, void*);
165 
167  long onCmdSaveAdditionalsAs(FXObject*, FXSelector, void*);
168 
170  long onCmdSaveDemandElements(FXObject*, FXSelector, void*);
171 
173  long onCmdSaveDemandElementsAs(FXObject*, FXSelector, void*);
174 
176  long onCmdSaveDataElements(FXObject*, FXSelector, void*);
177 
179  long onCmdSaveDataElementsAs(FXObject*, FXSelector, void*);
180 
182  long onCmdSaveAsNetwork(FXObject*, FXSelector, void*);
183 
185  long onUpdNeedsNetwork(FXObject*, FXSelector, void*);
186 
188  long onUpdNeedsFrontElement(FXObject*, FXSelector, void*);
189 
191  long onUpdReload(FXObject*, FXSelector, void*);
192 
194  long onUpdSaveNetwork(FXObject*, FXSelector, void*);
195 
197  long onUpdSaveAdditionals(FXObject*, FXSelector, void*);
198 
200  long onUpdSaveDemandElements(FXObject*, FXSelector, void*);
201 
203  long onUpdSaveDataElements(FXObject*, FXSelector, void*);
204 
206  long onUpdUndo(FXObject* obj, FXSelector sel, void* ptr);
207 
209  long onUpdRedo(FXObject* obj, FXSelector sel, void* ptr);
210 
212  long onCmdSaveAsPlainXML(FXObject*, FXSelector, void*);
213 
215  long onCmdSaveJoined(FXObject*, FXSelector, void*);
216 
218  long onKeyPress(FXObject* o, FXSelector sel, void* data);
219 
221  long onKeyRelease(FXObject* o, FXSelector sel, void* data);
222 
226  long onCmdQuit(FXObject*, FXSelector, void*);
227 
229  long onCmdEditChosen(FXObject*, FXSelector, void*);
230 
232  long onCmdAbout(FXObject*, FXSelector, void*);
233 
235  long onUpdOpen(FXObject*, FXSelector, void*);
236 
238  long onCmdClearMsgWindow(FXObject*, FXSelector, void*);
239 
241  long onCmdLoadAdditionalsInSUMOGUI(FXObject*, FXSelector, void*);
242 
244  long onCmdLoadDemandInSUMOGUI(FXObject*, FXSelector, void*);
245 
247  long onLoadThreadEvent(FXObject*, FXSelector, void*);
248 
250  long onClipboardRequest(FXObject* sender, FXSelector sel, void* ptr);
251 
253  long onCmdSetSuperMode(FXObject* sender, FXSelector sel, void* ptr);
254 
256  long onCmdSetMode(FXObject* sender, FXSelector sel, void* ptr);
257 
259  long onCmdProcessButton(FXObject*, FXSelector sel, void*);
260 
262  long onCmdOpenSUMOGUI(FXObject* sender, FXSelector sel, void* ptr);
263 
265  long onCmdAbort(FXObject* sender, FXSelector sel, void* ptr);
266 
268  long onCmdDel(FXObject* sender, FXSelector sel, void* ptr);
269 
271  long onCmdEnter(FXObject* sender, FXSelector sel, void* ptr);
272 
274  long onCmdBackspace(FXObject* sender, FXSelector sel, void* ptr);
275 
277  long onCmdForceSaveNetwork(FXObject* sender, FXSelector sel, void* ptr);
278 
280  long onCmdForceSaveAdditionals(FXObject* sender, FXSelector sel, void* ptr);
281 
283  long onCmdForceSaveDemandElements(FXObject* sender, FXSelector sel, void* ptr);
284 
286  long onCmdForceSaveDataElements(FXObject* sender, FXSelector sel, void* ptr);
287 
289  long onCmdFocusFrame(FXObject* sender, FXSelector sel, void* ptr);
290 
292  long onCmdToogleGrid(FXObject*, FXSelector, void*);
293 
295  long onCmdSetFrontElement(FXObject*, FXSelector, void*);
296 
298  long onCmdToogleEditOptions(FXObject*, FXSelector, void*);
299 
301  long onCmdHelp(FXObject* sender, FXSelector sel, void* ptr);
302 
304  long onCmdOptions(FXObject*, FXSelector, void*);
305 
307  long onCmdUndo(FXObject*, FXSelector, void*);
308 
309  // @brief called when user press Ctrl+Y
310  long onCmdRedo(FXObject*, FXSelector, void*);
311 
313  long onCmdCut(FXObject*, FXSelector, void*);
314 
315  // @brief called when user press Ctrl+Y
316  long onCmdCopy(FXObject*, FXSelector, void*);
317 
318  // @brief called when user press Ctrl+Y
319  long onCmdPaste(FXObject*, FXSelector, void*);
320 
321  // @brief called when user press Ctrl+F1
322  long onCmdSetTemplate(FXObject*, FXSelector, void*);
323 
324  // @brief called when user press Ctrl+F2
325  long onCmdCopyTemplate(FXObject*, FXSelector, void*);
326 
327  // @brief called when user press Ctrl+F3
328  long onCmdClearTemplate(FXObject*, FXSelector, void*);
329 
331 
335  FXGLCanvas* getBuildGLCanvas() const;
336 
338  SUMOTime getCurrentSimTime() const;
339 
341  double getTrackerInterval() const;
343 
345  FXCursor* getDefaultCursor();
346 
349 
352 
355 
357  void updateControls();
358 
360  void updateSuperModeMenuCommands(const Supermode supermode);
361 
363  void disableUndoRedo(const std::string& reason);
364 
366  void enableUndoRedo();
367 
369  const std::string& isUndoRedoEnabled() const;
370 
371 protected:
374 
377 
380 
382  FXMenuPane* myFileMenu,
393 
396 
398  FXSplitter* myMainSplitter;
399 
402 
405 
408 
411 
414 
416  std::string myConfigPattern;
417 
420 
421 private:
424 
427 
430 
433 
436 
439 
442 
445 
448 
450  const FXString myTitlePrefix;
451 
453  FXMDIMenu* myMDIMenu;
454 
456  void fillMenuBar();
457 
459  void loadConfigOrNet(const std::string file, bool isNet, bool isReload = false, bool useStartupOptions = false, bool newNet = false);
460 
462  void closeAllWindows();
463 
465  bool continueWithUnsavedChanges(const std::string& operation);
466 
468  bool continueWithUnsavedAdditionalChanges(const std::string& operation);
469 
471  bool continueWithUnsavedDemandElementChanges(const std::string& operation);
472 };
Supermode
@brie enum for supermodes
long long int SUMOTime
Definition: SUMOTime.h:31
The main window of the Netedit.
long onCmdSaveAsNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network as is executed
long onCmdSaveAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals is executed
GNEApplicationWindowHelper::SupermodeCommands mySupermodeCommands
Supermode Commands.
long onCmdSaveTLSProgramsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save TLSPrograms as is executed
void create()
Creates the main window (required by FOX)
GNEApplicationWindowHelper::WindowsMenuCommands myWindowsMenuCommands
Windows Menu Commands.
GNELoadThread * myLoadThread
the thread that loads the network
GNENet * myNet
we are responsible for the net
long onCmdSaveEdgeTypes(FXObject *, FXSelector, void *)
called when the command/FXCall save edge types is executed
void handleEvent_Message(GUIEvent *e)
hanlde event of type message
bool continueWithUnsavedDemandElementChanges(const std::string &operation)
warns about unsaved changes in demand elements and gives the user the option to abort
long onCmdLoadAdditionalsInSUMOGUI(FXObject *, FXSelector, void *)
called when user toogle windows checkbox "load additionals"
long onCmdOpenTLSPrograms(FXObject *, FXSelector, void *)
called when the command/FXCall open TLS programs is executed
void updateControls()
update control contents after undo/redo or recompute
long computeJunctionWithVolatileOptions()
called if the user selects Processing->compute junctions with volatile options
long onCmdNewNetwork(FXObject *, FXSelector, void *)
long onCmdToogleGrid(FXObject *, FXSelector, void *)
called if the user press key combination Ctrl + G to toogle grid
GNEApplicationWindow()
FOX needs this for static members.
long onClipboardRequest(FXObject *sender, FXSelector sel, void *ptr)
called when the command/FXCall clipboard request is executed
FXMenuPane * myFileMenuAdditionals
long onUpdSaveNetwork(FXObject *, FXSelector, void *)
called when the update/FXCall save network is executed
std::string myUndoRedoListEnabled
string to check if undo/redo list is enabled (a String is used to keep the disabling reason)
std::string myConfigPattern
Input file pattern.
long onCmdClose(FXObject *, FXSelector, void *)
called when the command/FXCall close is executed
long onCmdEditViewport(FXObject *, FXSelector, void *)
Called on menu Edit->Viewport.
void enableSaveAdditionalsMenu()
enable save additionals
FXEX::FXThreadEvent myLoadThreadEvent
io-event with the load-thread
GNEApplicationWindowHelper::MenuBarFile myMenuBarFile
MenuBarFile.
long onCmdOpenAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall open additionals is executed
long onCmdForceSaveDataElements(FXObject *sender, FXSelector sel, void *ptr)
force save data elements (flag)
long onCmdForceSaveAdditionals(FXObject *sender, FXSelector sel, void *ptr)
force save additionals (flag)
long onUpdRedo(FXObject *obj, FXSelector sel, void *ptr)
called when the update/FXCall redo is executed
long onUpdReload(FXObject *, FXSelector, void *)
called when the update/FXCall reload is executed
GNEApplicationWindowHelper::ProcessingMenuCommands myProcessingMenuCommands
Edit Menu Commands.
void setStatusBarText(const std::string &statusBarText)
set text of the statusBar
GNEUndoList * myUndoList
the one and only undo list
long onUpdSaveDataElements(FXObject *, FXSelector, void *)
called when the update/FXCall save data elements is executed
long onCmdPaste(FXObject *, FXSelector, void *)
long onCmdSaveAsPlainXML(FXObject *, FXSelector, void *)
called when the command/FXCall save as plain xml is executed
void disableSaveDemandElementsMenu()
disable save demand elements
long onCmdOpenNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall open network is executed
void closeAllWindows()
this method closes all windows and deletes the current simulation *‍/
long onCmdForceSaveNetwork(FXObject *sender, FXSelector sel, void *ptr)
force save network (flag)
long onCmdCopyTemplate(FXObject *, FXSelector, void *)
void enableSaveDataElementsMenu()
enable save data elements
long onLoadThreadEvent(FXObject *, FXSelector, void *)
called when the command/FXCall load thread is executed
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
long onUpdSaveDemandElements(FXObject *, FXSelector, void *)
called when the update/FXCall save demand elements is executed
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 *‍/
SUMOTime getCurrentSimTime() const
get current simulation time (pure virtual but we don't need it)
long onCmdOptions(FXObject *, FXSelector, void *)
called if the user selects Processing->Configure Options
long onKeyPress(FXObject *o, FXSelector sel, void *data)
called when a key is pressed
void disableSaveAdditionalsMenu()
disable save additionals
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed.
long onCmdSaveEdgeTypesAs(FXObject *, FXSelector, void *)
called when the command/FXCall save edgeTypes as is executed
long onCmdClearMsgWindow(FXObject *, FXSelector, void *)
called when the command/FXCall clear message windows is executed
long onCmdClearTemplate(FXObject *, FXSelector, void *)
GNEUndoList * getUndoList()
get pointer to undoList
long onUpdNeedsFrontElement(FXObject *, FXSelector, void *)
called when the update/FXCall needs front element is executed
long onCmdProcessButton(FXObject *, FXSelector sel, void *)
called when user press a process button (or a shortcut)
void loadOptionOnStartup()
load net on startup
GNEViewNet * getViewNet()
get pointer to viewNet
long onCmdSaveAdditionalsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals as is executed
bool hadDependentBuild
check if had dependent build
GNEApplicationWindowHelper::LocateMenuCommands myLocateMenuCommands
Locate Menu Commands.
bool continueWithUnsavedChanges(const std::string &operation)
warns about unsaved changes and gives the user the option to abort
long onCmdUndo(FXObject *, FXSelector, void *)
called when user press Ctrl+Z
long onCmdAbout(FXObject *, FXSelector, void *)
called when the command/FXCall show about dialog is executed
void dependentBuild()
build dependent
FXMenuPane * myFileMenuDemandElements
long onCmdEditChosen(FXObject *, FXSelector, void *)
called when the command/FXCall edit chosen is executed
GNEApplicationWindowHelper::EditMenuCommands myEditMenuCommands
Edit Menu Commands.
long onCmdForceSaveDemandElements(FXObject *sender, FXSelector sel, void *ptr)
force save demand elements (flag)
long onCmdSetSuperMode(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits an edit-supermode hotkey
long onCmdAbort(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits esc
GNEViewNet * myViewNet
pointer to current view net
const FXString myTitlePrefix
the prefix for the window title
void enableSaveTLSProgramsMenu()
enable save TLS Programs
double getTrackerInterval() const
get current tracker interval (pure virtual but we don't need it)
long onCmdReload(FXObject *, FXSelector, void *)
called when the command/FXCall reload is executed
void disableSaveDataElementsMenu()
disable save data elements
void fillMenuBar()
Builds the menu bar.
long onCmdFocusFrame(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits f
long onCmdToogleEditOptions(FXObject *, FXSelector, void *)
called if the user press key combination Alt + <0-9>
long onCmdHelp(FXObject *sender, FXSelector sel, void *ptr)
called if the user selects help->Documentation
long onCmdSaveDemandElements(FXObject *, FXSelector, void *)
called when the command/FXCall save demand elements is executed
long onCmdCut(FXObject *, FXSelector, void *)
called when user press Ctrl+Z
long onCmdOpenEdgeTypes(FXObject *, FXSelector, void *)
called when the command/FXCall open edgeType is executed
void enableSaveDemandElementsMenu()
enable save demand elements
long onCmdLoadDemandInSUMOGUI(FXObject *, FXSelector, void *)
called when user toogle windows checkbox "load demand"
bool myAmLoading
information whether the gui is currently loading and the load-options shall be greyed out
long onCmdOpenConfiguration(FXObject *, FXSelector, void *)
called when the command/FXCall open configuration is executed
long onUpdSaveAdditionals(FXObject *, FXSelector, void *)
called when the update/FXCall save additionals is executed
long onCmdSaveDemandElementsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save demand elements as is executed
long onCmdSaveDataElementsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save data elements as is executed
GNEApplicationWindowHelper::FileMenuCommands myFileMenuCommands
File Menu Commands.
long onCmdOpenRecent(FXObject *, FXSelector, void *)
called when the command/FXCall open recent is executed
long onUpdOpen(FXObject *, FXSelector, void *)
called when the command/FXCall on update open executed
long onCmdSetMode(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits an edit-mode hotkey
long onCmdBackspace(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits backspace
void handleEvent_NetworkLoaded(GUIEvent *e)
handle event of type Network loaded
long onCmdCopy(FXObject *, FXSelector, void *)
long onCmdOpenSUMOGUI(FXObject *sender, FXSelector sel, void *ptr)
called if the user hints ctrl + T
void disableUndoRedo(const std::string &reason)
disable undo-redo giving a string with the reason
long onCmdOpenDemandElements(FXObject *, FXSelector, void *)
called when the command/FXCall open demand is executed
FXSynchQue< GUIEvent * > myEvents
List of got requests.
void enableUndoRedo()
disable undo-redo
bool continueWithUnsavedAdditionalChanges(const std::string &operation)
warns about unsaved changes in additionals and gives the user the option to abort
const std::string & isUndoRedoEnabled() const
check if undo-redo is enabled
long onUpdNeedsNetwork(FXObject *, FXSelector, void *)
called when the update/FXCall needs network is executed
GNEApplicationWindowHelper::ToolbarsGrip & getToolbarsGrip()
get ToolbarsGrip
long onCmdSaveDataElements(FXObject *, FXSelector, void *)
called when the command/FXCall save data elements is executed
long onCmdLocate(FXObject *, FXSelector, void *)
called when the command/FXCall locate is executed
long onCmdDel(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits del
long onCmdOpenDataElements(FXObject *, FXSelector, void *)
called when the command/FXCall open data is executed
void updateSuperModeMenuCommands(const Supermode supermode)
update FXMenuCommands depending of supermode
long onCmdSetFrontElement(FXObject *, FXSelector, void *)
called if the user call set front element
long onCmdEnter(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits enter
FXCursor * getDefaultCursor()
get default cursor
long onCmdSetTemplate(FXObject *, FXSelector, void *)
long onCmdRedo(FXObject *, FXSelector, void *)
long onUpdUndo(FXObject *obj, FXSelector sel, void *ptr)
called when the update/FXCall undo is executed
GUIMessageWindow * myMessageWindow
A window to display messages, warnings and error in.
FXSplitter * myMainSplitter
The splitter that divides the main window into view and the log window.
long onCmdSaveTLSPrograms(FXObject *, FXSelector, void *)
called when the command/FXCall save TLSPrograms is executed
long onCmdSaveJoined(FXObject *, FXSelector, void *)
called when the command/FXCall save joined is executed
long onCmdSaveNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network is executed
FXMenuPane * myFileMenu
the submenus
GNEApplicationWindowHelper::ToolbarsGrip myToolbarsGrip
Toolbars Grip.
FXMenuPane * myFileMenuDataElements
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
called when a key is released
FXGLCanvas * getBuildGLCanvas() const
get build GL Canvas (must be implemented in all children)
long onCmdEditViewScheme(FXObject *, FXSelector, void *)
Called on menu Edit->Visualization.
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:40
A logging window for the gui.