Eclipse SUMO - Simulation of Urban MObility
GNEApplicationWindowHelper.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-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 #include <netbuild/NBFrame.h>
24 
25 #include "GNEApplicationWindow.h"
26 #include "GNEViewNet.h"
27 
28 #ifdef HAVE_VERSION_H
29 #include <version.h>
30 #endif
31 
32 // ===========================================================================
33 // GNEApplicationWindowHelper::ToolbarsGrip method definitions
34 // ===========================================================================
35 
37  menu(nullptr),
38  superModes(nullptr),
39  saveElements(nullptr),
40  navigation(nullptr),
41  modes(nullptr),
42  intervalBar(nullptr),
43  myGNEApp(GNEApp),
44  myToolBarShellMenu(nullptr),
45  myToolBarShellSuperModes(nullptr),
46  myToolBarShellSaveElements(nullptr),
47  myToolBarShellNavigation(nullptr),
48  myToolBarShellModes(nullptr),
49  myToolBarShellIntervalBar(nullptr) {
50 }
51 
52 
53 void
55  // build menu bar (for File, edit, processing...) using specify design
56  myToolBarShellMenu = new FXToolBarShell(myGNEApp, GUIDesignToolBar);
57  menu = new FXMenuBar(myGNEApp->getTopDock(), myToolBarShellMenu, GUIDesignToolbarMenuBarNetedit);
58  // declare toolbar grip for menu bar
59  new FXToolBarGrip(menu, menu, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
60 }
61 
62 
63 void
65  // build menu bar for supermodes (next to menu bar)
66  myToolBarShellSuperModes = new FXToolBarShell(myGNEApp, GUIDesignToolBar);
67  superModes = new FXMenuBar(myGNEApp->getTopDock(), myToolBarShellSuperModes, GUIDesignToolBarRaisedSame);
68  // declare toolbar grip for menu bar superModes
69  new FXToolBarGrip(superModes, superModes, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
70  // build menu bar for save elements (bot to menu bar)
71  myToolBarShellSaveElements = new FXToolBarShell(myGNEApp, GUIDesignToolBar);
72  saveElements = new FXMenuBar(myGNEApp->getTopDock(), myToolBarShellSaveElements, GUIDesignToolBarRaisedNext);
73  // declare toolbar grip for menu bar saveElements
74  new FXToolBarGrip(saveElements, saveElements, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
75  // build menu bar for navigation
76  myToolBarShellNavigation = new FXToolBarShell(myGNEApp, GUIDesignToolBar);
77  navigation = new FXMenuBar(myGNEApp->getTopDock(), myToolBarShellNavigation, GUIDesignToolBarRaisedSame);
78  // declare toolbar grip for menu bar navigation
79  new FXToolBarGrip(navigation, navigation, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
80  // build menu bar for modes
81  myToolBarShellModes = new FXToolBarShell(myGNEApp, GUIDesignToolBar);
82  // create modes depending of option "gui-testing" (note: Used for NETEDIT test)
83  if (OptionsCont::getOptions().getBool("gui-testing")) {
84  modes = new FXMenuBar(myGNEApp->getTopDock(), myToolBarShellModes, GUIDesignToolBarRaisedNext);
85  } else {
86  modes = new FXMenuBar(myGNEApp->getTopDock(), myToolBarShellModes, GUIDesignToolBarRaisedSame);
87  }
88  // declare toolbar grip for menu bar modes
89  new FXToolBarGrip(modes, modes, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
90  // build menu bar for interal
91  myToolBarShellIntervalBar = new FXToolBarShell(myGNEApp, GUIDesignToolBar);
92  intervalBar = new FXMenuBar(myGNEApp->getTopDock(), myToolBarShellIntervalBar, GUIDesignToolBarRaisedNext);
93  // declare toolbar grip for menu bar modes
94  new FXToolBarGrip(intervalBar, intervalBar, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
95  // create menu bars
96  superModes->create();
97  saveElements->create();
98  navigation->create();
99  modes->create();
100  intervalBar->create();
101  // create toolbar shells
102  myToolBarShellSuperModes->create();
103  myToolBarShellSaveElements->create();
104  myToolBarShellNavigation->create();
105  myToolBarShellModes->create();
106  myToolBarShellIntervalBar->create();
107  // recalc top dop after creating elements
108  myGNEApp->getTopDock()->recalc();
109 }
110 
111 
112 void
114  // delete Menu bars
115  delete superModes;
116  delete saveElements;
117  delete navigation;
118  delete modes;
119  delete intervalBar;
120  // also delete toolbar shells to avoid floating windows
121  delete myToolBarShellSuperModes;
122  delete myToolBarShellSaveElements;
123  delete myToolBarShellNavigation;
124  delete myToolBarShellModes;
125  delete myToolBarShellIntervalBar;
126  // recalc top dop after deleting elements
127  myGNEApp->getTopDock()->recalc();
128 }
129 
130 // ===========================================================================
131 // GNEApplicationWindowHelper::MenuBarFile method definitions
132 // ===========================================================================
133 
135  myRecentNets(GNEApp->getApp(), "nets"),
136  myGNEApp(GNEApp)
137 { }
138 
139 
140 void
142  FXMenuSeparator* sep1 = new FXMenuSeparator(fileMenu);
143  sep1->setTarget(&myRecentConfigs);
144  sep1->setSelector(FXRecentFiles::ID_ANYFILES);
145  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_1);
146  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_2);
147  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_3);
148  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_4);
149  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_5);
150  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_6);
151  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_7);
152  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_8);
153  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_9);
154  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentConfigs, FXRecentFiles::ID_FILE_10);
155  GUIDesigns::buildFXMenuCommand(fileMenu, "Clear Recent Configurat&ions", nullptr, &myRecentConfigs, FXRecentFiles::ID_CLEAR);
156  myRecentConfigs.setTarget(myGNEApp);
157  myRecentConfigs.setSelector(MID_RECENTFILE);
158  FXMenuSeparator* sep2 = new FXMenuSeparator(fileMenu);
159  sep2->setTarget(&myRecentNets);
160  sep2->setSelector(FXRecentFiles::ID_ANYFILES);
161  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_1);
162  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_2);
163  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_3);
164  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_4);
165  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_5);
166  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_6);
167  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_7);
168  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_8);
169  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_9);
170  GUIDesigns::buildFXMenuCommandRecentFile(fileMenu, "", &myRecentNets, FXRecentFiles::ID_FILE_10);
171  GUIDesigns::buildFXMenuCommand(fileMenu, "Cl&ear Recent Networks", nullptr, &myRecentNets, FXRecentFiles::ID_CLEAR);
172  myRecentNets.setTarget(myGNEApp);
173  myRecentNets.setSelector(MID_RECENTFILE);
174 }
175 
176 // ---------------------------------------------------------------------------
177 // GNEApplicationWindowHelper::FileMenuCommands - methods
178 // ---------------------------------------------------------------------------
179 
181  saveAdditionals(nullptr),
182  saveAdditionalsAs(nullptr),
183  saveTLSPrograms(nullptr),
184  saveEdgeTypes(nullptr),
185  saveDemandElements(nullptr),
186  saveDemandElementsAs(nullptr),
187  saveDataElements(nullptr),
188  saveDataElementsAs(nullptr),
189  myGNEApp(GNEApp) {
190 }
191 
192 
193 void
194 GNEApplicationWindowHelper::FileMenuCommands::buildFileMenuCommands(FXMenuPane* fileMenu, FXMenuPane* fileMenuTLS, FXMenuPane* fileMenuEdgeTypes,
195  FXMenuPane* fileMenuAdditionals, FXMenuPane* fileMenuDemandElements, FXMenuPane* fileMenuDataElements) {
197  "&New Network", "Ctrl+N", "Create a new network.",
200  "&Open Network...", "Ctrl+O", "Open a SUMO network.",
203  "Open Netconvert Configura&tion...", "Ctrl+Shift+O", "Open a configuration file with NETCONVERT options.",
206  "Import &Foreign Network...", "", "Import a foreign network such as OSM.",
209  "&Reload", "Ctrl+R", "Reload the network.",
212  "&Save Network", "Ctrl+S", "Save the network.",
215  "Save Net&work As...", "Ctrl+Shift+S", "Save the network to another file.",
218  "Save Plain XM&L...", "Ctrl+L", "Save plain XML representation the network.",
221  "Save &Joined Junctions...", "Ctrl+J", "Save log of joined junctions (allows reproduction of joins).",
223  // create TLS menu options
225  "Load TLS Programs...", "Ctrl+K", "Load programs for traffic lights in the current net.",
227  saveTLSPrograms = GUIDesigns::buildFXMenuCommandShortcut(fileMenuTLS,
228  "Save TLS Programs", "Ctrl+Shift+K", "Save all traffic light programs of the current net.",
230  saveTLSPrograms->disable();
232  "Save TLS Programs As...", "", "Save all traffic light programs of the current net to another file.",
234  new FXMenuCascade(fileMenu,
235  "Traffic Lights",
237  // create edgeTypes menu options
238  GUIDesigns::buildFXMenuCommandShortcut(fileMenuEdgeTypes,
239  "Load Edge Types...", "Ctrl+H", "Load edge types in the current net.",
241  saveEdgeTypes = GUIDesigns::buildFXMenuCommandShortcut(fileMenuEdgeTypes,
242  "Save Edge Types", "Ctrl+Shift+H", "Save edge types of the current net.",
244  saveEdgeTypes->disable();
245  GUIDesigns::buildFXMenuCommandShortcut(fileMenuEdgeTypes,
246  "Save Edge Types As...", "", "Save edge types of the current net to another file.",
248  new FXMenuCascade(fileMenu,
249  "Edge Types",
250  GUIIconSubSys::getIcon(GUIIcon::MODECREATEEDGE), fileMenuEdgeTypes);
251  // create Additionals menu options
252  GUIDesigns::buildFXMenuCommandShortcut(fileMenuAdditionals,
253  "Load Additionals...", "Ctrl+A", "Load additionals and shapes.",
255  saveAdditionals = GUIDesigns::buildFXMenuCommandShortcut(fileMenuAdditionals,
256  "Save Additionals", "Ctrl+Shift+A", "Save additionals and shapes.",
258  saveAdditionals->disable();
259  saveAdditionalsAs = GUIDesigns::buildFXMenuCommandShortcut(fileMenuAdditionals,
260  "Save Additionals As...", "", "Save additional elements to another file.",
262  saveAdditionalsAs->disable();
263  new FXMenuCascade(fileMenu, "Additionals and Shapes", GUIIconSubSys::getIcon(GUIIcon::MODEADDITIONAL), fileMenuAdditionals);
264  // create DemandElements menu options
265  GUIDesigns::buildFXMenuCommandShortcut(fileMenuDemandElements,
266  "Load Demand Elements...", "Ctrl+D", "Load demand elements.",
268  saveDemandElements = GUIDesigns::buildFXMenuCommandShortcut(fileMenuDemandElements,
269  "Save Demand Elements", "Ctrl+Shift+D", "Save demand elements.",
271  saveDemandElements->disable();
272  saveDemandElementsAs = GUIDesigns::buildFXMenuCommandShortcut(fileMenuDemandElements,
273  "Save Demand Elements As...", "", "Save demand elements to another file.",
275  saveDemandElementsAs->disable();
276  new FXMenuCascade(fileMenu,
277  "Demand Elements",
278  GUIIconSubSys::getIcon(GUIIcon::SUPERMODEDEMAND), fileMenuDemandElements);
279  // create DataElements menu options
280  GUIDesigns::buildFXMenuCommandShortcut(fileMenuDataElements,
281  "Load Data Elements...", "Ctrl+B", "Load data elements.",
283  saveDataElements = GUIDesigns::buildFXMenuCommandShortcut(fileMenuDataElements,
284  "Save Data Elements", "Ctrl+Shift+B", "Save data elements.",
286  saveDataElements->disable();
287  saveDataElementsAs = GUIDesigns::buildFXMenuCommandShortcut(fileMenuDataElements,
288  "Save Data Elements As...", "", "Save data elements to another file.",
290  saveDataElementsAs->disable();
291  new FXMenuCascade(fileMenu,
292  "Data Elements",
293  GUIIconSubSys::getIcon(GUIIcon::SUPERMODEDATA), fileMenuDataElements);
294  // close network
295  new FXMenuSeparator(fileMenu);
297  "Close", "Ctrl+W", "Close the network.",
299 }
300 
301 // ---------------------------------------------------------------------------
302 // GNEApplicationWindowHelper::EditMenuCommands::NetworkMenuCommands - methods
303 // ---------------------------------------------------------------------------
304 
306  createEdgeMode(nullptr),
307  moveMode(nullptr),
308  deleteMode(nullptr),
309  inspectMode(nullptr),
310  selectMode(nullptr),
311  connectMode(nullptr),
312  prohibitionMode(nullptr),
313  TLSMode(nullptr),
314  additionalMode(nullptr),
315  crossingMode(nullptr),
316  TAZMode(nullptr),
317  shapeMode(nullptr),
318  myEditMenuCommandsParent(editMenuCommandsParent),
319  myHorizontalSeparator(nullptr) {
320 }
321 
322 
323 void
325  createEdgeMode->show();
326  moveMode->show();
327  deleteMode->show();
328  inspectMode->show();
329  selectMode->show();
330  connectMode->show();
331  prohibitionMode->show();
332  TLSMode->show();
333  additionalMode->show();
334  crossingMode->show();
335  TAZMode->show();
336  shapeMode->show();
337  // also show separator
338  myHorizontalSeparator->show();
339 }
340 
341 
342 void
344  createEdgeMode->hide();
345  moveMode->hide();
346  deleteMode->hide();
347  inspectMode->hide();
348  selectMode->hide();
349  connectMode->hide();
350  prohibitionMode->hide();
351  TLSMode->hide();
352  additionalMode->hide();
353  crossingMode->hide();
354  TAZMode->hide();
355  shapeMode->hide();
356  // also hide separator
357  myHorizontalSeparator->hide();
358 }
359 
360 
361 void
363  // build every FXMenuCommand giving it a shortcut
364  createEdgeMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
365  "&Edge mode", "E", "Create junction and edges.",
367  moveMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
368  "&Move mode", "M", "Move elements.",
369  GUIIconSubSys::getIcon(GUIIcon::MODEMOVE), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_M_MODES_MOVE);
370  deleteMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
371  "&Delete mode", "D", "Delete elements.",
372  GUIIconSubSys::getIcon(GUIIcon::MODEDELETE), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_D_MODES_DELETE);
373  inspectMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
374  "&Inspect mode", "I", "Inspect elements and change their attributes.",
375  GUIIconSubSys::getIcon(GUIIcon::MODEINSPECT), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_I_MODES_INSPECT);
376  selectMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
377  "&Select mode", "S", "Select elements.",
378  GUIIconSubSys::getIcon(GUIIcon::MODESELECT), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_S_MODES_SELECT);
379  connectMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
380  "&Connection mode", "C", "Edit connections between lanes.",
382  prohibitionMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
383  "Pro&hibition mode", "W", "Edit connection prohibitions.",
385  TLSMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
386  "&Traffic light mode", "T", "Edit traffic lights over junctions.",
387  GUIIconSubSys::getIcon(GUIIcon::MODETLS), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_T_MODES_TLS_VTYPE);
388  additionalMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
389  "&Additional mode", "A", "Create additional elements.",
391  crossingMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
392  "C&rossing mode", "R", "Create crossings between edges.",
394  TAZMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
395  "TA&Z mode", "Z", "Create Traffic Assignment Zones.",
396  GUIIconSubSys::getIcon(GUIIcon::MODETAZ), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_Z_MODES_TAZ_TAZREL);
397  shapeMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
398  "&POI-Poly mode", "P", "Create Points-Of-Interest and polygons.",
400  // build separator
401  myHorizontalSeparator = new FXMenuSeparator(editMenu);
402 }
403 
404 // ---------------------------------------------------------------------------
405 // GNEApplicationWindowHelper::EditMenuCommands::DemandMenuCommands - methods
406 // ---------------------------------------------------------------------------
407 
409  routeMode(nullptr),
410  vehicleMode(nullptr),
411  vehicleTypeMode(nullptr),
412  stopMode(nullptr),
413  personTypeMode(nullptr),
414  personMode(nullptr),
415  personPlanMode(nullptr),
416  myEditMenuCommandsParent(editMenuCommandsParent),
417  myHorizontalSeparator(nullptr) {
418 }
419 
420 
421 void
423  routeMode->show();
424  vehicleMode->show();
425  vehicleTypeMode->show();
426  stopMode->show();
427  personTypeMode->show();
428  personMode->show();
429  personPlanMode->show();
430  // also show separator
431  myHorizontalSeparator->show();
432 }
433 
434 
435 void
437  routeMode->hide();
438  vehicleMode->hide();
439  vehicleTypeMode->hide();
440  stopMode->hide();
441  personTypeMode->hide();
442  personMode->hide();
443  personPlanMode->hide();
444  // also hide separator
445  myHorizontalSeparator->hide();
446 }
447 
448 
449 void
451  // build every FXMenuCommand giving it a shortcut
452  routeMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
453  "Route mode", "R", "Create Routes.",
455  vehicleMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
456  "Vehicle mode", "V", "Create vehicles.",
457  GUIIconSubSys::getIcon(GUIIcon::MODEVEHICLE), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_V_MODES_VEHICLE);
458  vehicleTypeMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
459  "Vehicle type mode", "T", "Create vehicle types.",
461  stopMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
462  "Stop mode", "A", "Create stops.",
463  GUIIconSubSys::getIcon(GUIIcon::MODESTOP), myEditMenuCommandsParent->myGNEApp, MID_HOTKEY_A_MODES_ADDITIONAL_STOP);
464  personTypeMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
465  "Person type mode", "W", "Create person types.",
467  personMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
468  "Person mode", "P", "Create persons.",
470  personPlanMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
471  "Person plan mode", "C", "Create person plans.",
473  // build separator
474  myHorizontalSeparator = new FXMenuSeparator(editMenu);
475 }
476 
477 // ---------------------------------------------------------------------------
478 // GNEApplicationWindowHelper::EditMenuCommands::DataMenuCommands - methods
479 // ---------------------------------------------------------------------------
480 
482  edgeData(nullptr),
483  edgeRelData(nullptr),
484  TAZRelData(nullptr),
485  myEditMenuCommandsParent(editMenuCommandsParent),
486  myHorizontalSeparator(nullptr) {
487 }
488 
489 
490 void
492  edgeData->show();
493  edgeRelData->show();
494  TAZRelData->show();
495  // also show separator
496  myHorizontalSeparator->show();
497 }
498 
499 
500 void
502  edgeData->hide();
503  edgeRelData->hide();
504  TAZRelData->hide();
505  // also hide separator
506  myHorizontalSeparator->hide();
507 }
508 
509 
510 void
512  // build every FXMenuCommand giving it a shortcut
513  edgeData = GUIDesigns::buildFXMenuCommand(editMenu,
514  "EdgeData Mode\tE\tCreate edgeData elements.",
516  edgeRelData = GUIDesigns::buildFXMenuCommand(editMenu,
517  "EdgeRelation Mode\tR\tCreate edgeRelation elements.",
519  TAZRelData = GUIDesigns::buildFXMenuCommand(editMenu,
520  "TAZRelation Mode\tR\tCreate TAZRelation elements.",
522  // build separator
523  myHorizontalSeparator = new FXMenuSeparator(editMenu);
524 }
525 
526 // ---------------------------------------------------------------------------
527 // GNEApplicationWindowHelper::EditMenuCommands - methods
528 // ---------------------------------------------------------------------------
529 
531  myGNEApp(GNEApp),
532  networkMenuCommands(this),
533  demandMenuCommands(this),
534  dataMenuCommands(this),
535  undoLastChange(nullptr),
536  redoLastChange(nullptr),
537  editViewScheme(nullptr),
538  editViewPort(nullptr),
539  toogleGrid(nullptr),
540  clearFrontElement(nullptr),
541  loadAdditionalsInSUMOGUI(nullptr),
542  loadDemandInSUMOGUI(nullptr),
543  openInSUMOGUI(nullptr) {
544 }
545 
546 
547 void
549  // build Network modes commands and hide it
550  networkMenuCommands.buildNetworkMenuCommands(editMenu);
551  networkMenuCommands.hideNetworkMenuCommands();
552  // build Demand Modes commands
553  demandMenuCommands.buildDemandMenuCommands(editMenu);
554  demandMenuCommands.hideDemandMenuCommands();
555  // build Data Modes commands
556  dataMenuCommands.buildDataMenuCommands(editMenu);
557  dataMenuCommands.hideDataMenuCommands();
558  // build rest of menu commands
559  editViewScheme = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
560  "Edit Visualisation", "F9", "Opens a dialog for editing visualization settings.",
562  editViewPort = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
563  "Edit Viewport", "Ctrl+I", "Opens a dialog for editing viewing are, zoom and rotation.",
565  toogleGrid = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
566  "Toggle Grid", "Ctrl+G", "Toggles background grid (and snap-to-grid functionality).",
568  // add separator
569  new FXMenuSeparator(editMenu);
570  // add clear front element
571  clearFrontElement = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
572  "Clear front element", "F11", "Clear current front element",
574  // add separator
575  new FXMenuSeparator(editMenu);
576  // add open in sumo options
577  loadAdditionalsInSUMOGUI = new FXMenuCheck(editMenu,
578  "Load additionals in sumo-gui\t\tLoad additionals in sumo-gui.",
580  loadAdditionalsInSUMOGUI->setCheck(TRUE);
581  loadDemandInSUMOGUI = new FXMenuCheck(editMenu,
582  "Load demand in sumo-gui\t\tLoad demand in sumo-gui.",
584  loadDemandInSUMOGUI->setCheck(TRUE);
585  openInSUMOGUI = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
586  "Open in sumo-gui", "Ctrl+T", "Opens the sumo-gui application with the current network.",
588 }
589 
590 // ---------------------------------------------------------------------------
591 // GNEApplicationWindowHelper::ProcessingMenuCommands - methods
592 // ---------------------------------------------------------------------------
593 
595  computeNetwork(nullptr),
596  computeNetworkVolatile(nullptr),
597  cleanJunctions(nullptr),
598  joinJunctions(nullptr),
599  clearInvalidCrossings(nullptr),
600  computeDemand(nullptr),
601  cleanRoutes(nullptr),
602  joinRoutes(nullptr),
603  clearInvalidDemandElements(nullptr),
604  optionMenus(nullptr),
605  myGNEApp(GNEApp) {
606 }
607 
608 
609 void
611  // build network processing menu commands
612  computeNetwork = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
613  "Compute Junctions", "F5", "Compute junction shape and logic.",
615  computeNetworkVolatile = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
616  "Compute Junctions with volatile options", "Shift+F5", "Compute junction shape and logic using volatile junctions.",
618  cleanJunctions = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
619  "Clean Junctions", "F6", "Remove solitary junctions.",
621  joinJunctions = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
622  "Join Selected Junctions", "F7", "Join selected junctions into a single junction.",
624  clearInvalidCrossings = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
625  "Clean invalid crossings", "F8", "Clear invalid crossings.",
627  // build demand processing menu commands
628  computeDemand = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
629  "Compute demand", "F5", "Computes demand elements.",
631  cleanRoutes = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
632  "Clean routes", "F6", "Removes routes without vehicles.",
634  joinRoutes = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
635  "Join routes", "F7", "Joins routes with the same edges.",
637  clearInvalidDemandElements = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
638  "Clean invalid route elements", "F8", "Clear elements with an invalid path (routes, Trips, Flows...).",
640  // add separator (because optionsmenu is commmon for Network and Demand modes
641  new FXMenuSeparator(fileMenu);
642  optionMenus = GUIDesigns::buildFXMenuCommandShortcut(fileMenu,
643  "Options", "F10", "Configure Processing Options.",
645 }
646 
647 
648 void
650  // first enable menu commands
651  computeNetwork->enable();
652  computeNetworkVolatile->enable();
653  cleanJunctions->enable();
654  joinJunctions->enable();
655  clearInvalidCrossings->enable();
656  // now show it
657  computeNetwork->show();
658  computeNetworkVolatile->show();
659  cleanJunctions->show();
660  joinJunctions->show();
661  clearInvalidCrossings->show();
662 }
663 
664 
665 void
667  // first disable menu commands
668  computeNetwork->disable();
669  computeNetworkVolatile->disable();
670  cleanJunctions->disable();
671  joinJunctions->disable();
672  clearInvalidCrossings->disable();
673  // now hide it
674  computeNetwork->hide();
675  computeNetworkVolatile->hide();
676  cleanJunctions->hide();
677  joinJunctions->hide();
678  clearInvalidCrossings->hide();
679 }
680 
681 
682 void
684  // first enable menu commands
685  computeDemand->enable();
686  cleanRoutes->enable();
687  joinRoutes->enable();
688  clearInvalidDemandElements->enable();
689  // now show it
690  computeDemand->show();
691  cleanRoutes->show();
692  joinRoutes->show();
693  clearInvalidDemandElements->show();
694 }
695 
696 
697 void
699  // first disable menu commands
700  computeDemand->disable();
701  cleanRoutes->disable();
702  joinRoutes->disable();
703  clearInvalidDemandElements->disable();
704  // now hide it
705  computeDemand->hide();
706  cleanRoutes->hide();
707  joinRoutes->hide();
708  clearInvalidDemandElements->hide();
709 }
710 
711 
712 void
714 
715 }
716 
717 
718 void
720 
721 }
722 
723 // ---------------------------------------------------------------------------
724 // GNEApplicationWindowHelper::LocateMenuCommands - methods
725 // ---------------------------------------------------------------------------
726 
728  myGNEApp(GNEApp) {
729 }
730 
731 
732 void
734  // build locate menu commands
736  "Locate &Junctions", "Shift+J", "Open a dialog for locating a Junction.",
739  "Locate &Edges", "Shift+E", "Open a dialog for locating an Edge.",
742  "Locate &Vehicles", "Shift+V", "Open a dialog for locating a Vehicle.",
745  "Locate &Persons", "Shift+P", "Open a dialog for locating a Person.",
748  "Locate &Route", "Shift+R", "Open a dialog for locating a Route.",
751  "Locate &Stops", "Shift+S", "Open a dialog for locating a Stop.",
754  "Locate &TLS", "Shift+T", "Open a dialog for locating a Traffic Light.",
757  "Locate &Additional", "Shift+A", "Open a dialog for locating an Additional Structure.",
760  "Locate P&oI", "Shift+O", "Open a dialog for locating a Point of Interest.",
763  "Locate Po&lygon", "Shift+L", "Open a dialog for locating a Polygon.",
765 }
766 
767 // ---------------------------------------------------------------------------
768 // GNEApplicationWindowHelper::WindowsMenuCommands - methods
769 // ---------------------------------------------------------------------------
770 
772  myGNEApp(GNEApp) {
773 }
774 
775 
776 void
777 GNEApplicationWindowHelper::WindowsMenuCommands::buildWindowsMenuCommands(FXMenuPane* windowsMenu, FXStatusBar* statusbar, GUIMessageWindow* messageWindow) {
778  // build windows menu commands
780  "&Show Status Line", "", "Toggle this Status Bar on/off.",
781  nullptr, statusbar, FXWindow::ID_TOGGLESHOWN);
783  "Show &Message Window", "", "Toggle the Message Window on/off.",
784  nullptr, messageWindow, FXWindow::ID_TOGGLESHOWN);
786  "&Clear Message Window", "", "Clear the Message Window.",
787  nullptr, myGNEApp, MID_CLEARMESSAGEWINDOW);
788 }
789 
790 // ---------------------------------------------------------------------------
791 // GNEApplicationWindowHelper::NetworkCheckableButtons - methods
792 // ---------------------------------------------------------------------------
793 
795  networkMode(nullptr),
796  demandMode(nullptr),
797  dataMode(nullptr),
798  myGNEApp(GNEApp),
799  myHorizontalSeparator(nullptr) {
800 }
801 
802 
803 void
805  networkMode->show();
806  demandMode->show();
807  dataMode->show();
808  // also show separator
809  myHorizontalSeparator->show();
810 }
811 
812 
813 void
815  networkMode->hide();
816  demandMode->hide();
817  dataMode->hide();
818  // also hide separator
819  myHorizontalSeparator->hide();
820 }
821 
822 
823 void
825  // build supermode menu commands
826  networkMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
827  "&Network mode", "F2", "Select network mode.",
829  demandMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
830  "&Demand mode", "F3", "Select demand mode.",
832  dataMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
833  "&Data mode", "F4", "Select data mode.",
835  // build separator
836  myHorizontalSeparator = new FXMenuSeparator(editMenu);
837 }
838 
839 // ---------------------------------------------------------------------------
840 // GNEApplicationWindowHelper - methods
841 // ---------------------------------------------------------------------------
842 
843 bool
844 GNEApplicationWindowHelper::toogleEditOptionsNetwork(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, const int numericalKeyPressed, FXObject* obj, FXSelector sel) {
845  // finally function correspond to visibleMenuCommands[numericalKeyPressed]
846  if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowGrid) {
847  // Toogle menuCheckShowGrid
848  if (viewNet->getNetworkViewOptions().menuCheckShowGrid->amChecked() == TRUE) {
849  // show extra information for tests
850  WRITE_DEBUG("Disabled toogle show grid throught alt + " + toString(numericalKeyPressed + 1));
851  } else {
852  // show extra information for tests
853  WRITE_DEBUG("Enabled toogle show grid throught alt + " + toString(numericalKeyPressed + 1));
854  }
855  // Call manually onCmdToogleShowGrid
856  viewNet->onCmdToogleShowGrid(obj, sel, nullptr);
857  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckDrawSpreadVehicles) {
858  // Toogle menuCheckDrawSpreadVehicles
859  if (viewNet->getNetworkViewOptions().menuCheckDrawSpreadVehicles->amChecked() == TRUE) {
860  // show extra information for tests
861  WRITE_DEBUG("Disabled toogle draw spread vehicles throught alt + " + toString(numericalKeyPressed + 1));
862  } else {
863  // show extra information for tests
864  WRITE_DEBUG("Enabled toogle spread vehicles throught alt + " + toString(numericalKeyPressed + 1));
865  }
866  // Call manually onCmdToogleDrawSpreadVehicles
867  viewNet->onCmdToogleDrawSpreadVehicles(obj, sel, nullptr);
868  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowDemandElements) {
869  // Toogle menuCheckShowDemandElements
870  if (viewNet->getNetworkViewOptions().menuCheckShowDemandElements->amChecked() == TRUE) {
871  // show extra information for tests
872  WRITE_DEBUG("Disabled show demand elements throught alt + " + toString(numericalKeyPressed + 1));
873  } else {
874  // show extra information for tests
875  WRITE_DEBUG("Enabled show demand elements throught alt + " + toString(numericalKeyPressed + 1));
876  }
877  // Call manually onCmdToogleShowDemandElements
878  viewNet->onCmdToogleShowDemandElements(obj, sel, nullptr);
879  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckSelectEdges) {
880  // Toogle menuCheckSelectEdges
881  if (viewNet->getNetworkViewOptions().menuCheckSelectEdges->amChecked() == TRUE) {
882  // show extra information for tests
883  WRITE_DEBUG("Disabled select edges throught alt + " + toString(numericalKeyPressed + 1));
884  } else {
885  // show extra information for tests
886  WRITE_DEBUG("Enabled select edges throught alt + " + toString(numericalKeyPressed + 1));
887  }
888  // Call manually onCmdToogleSelectEdges
889  viewNet->onCmdToogleSelectEdges(obj, sel, nullptr);
890  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowConnections) {
891  // Toogle menuCheckShowConnections
892  if (viewNet->getNetworkViewOptions().menuCheckShowConnections->amChecked() == TRUE) {
893  // show extra information for tests
894  WRITE_DEBUG("Disabled show connections throught alt + " + toString(numericalKeyPressed + 1));
895  } else {
896  // show extra information for tests
897  WRITE_DEBUG("Enabled show connections throught alt + " + toString(numericalKeyPressed + 1));
898  }
899  // Call manually onCmdToogleShowConnections
900  viewNet->onCmdToogleShowConnections(obj, sel, nullptr);
901  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckHideConnections) {
902  // Toogle menuCheckHideConnections
903  if (viewNet->getNetworkViewOptions().menuCheckHideConnections->amChecked() == TRUE) {
904  // show extra information for tests
905  WRITE_DEBUG("Disabled hide connections throught alt + " + toString(numericalKeyPressed + 1));
906  } else {
907  // show extra information for tests
908  WRITE_DEBUG("Enabled hide connections throught alt + " + toString(numericalKeyPressed + 1));
909  }
910  // Call manually onCmdToogleHideConnections
911  viewNet->onCmdToogleHideConnections(obj, sel, nullptr);
912  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckExtendSelection) {
913  // Toogle menuCheckExtendSelection
914  if (viewNet->getNetworkViewOptions().menuCheckExtendSelection->amChecked() == TRUE) {
915  // show extra information for tests
916  WRITE_DEBUG("Disabled extend selection throught alt + " + toString(numericalKeyPressed + 1));
917  } else {
918  // show extra information for tests
919  WRITE_DEBUG("Enabled extend selection throught alt + " + toString(numericalKeyPressed + 1));
920  }
921  // Call manually onCmdToogleExtendSelection
922  viewNet->onCmdToogleExtendSelection(obj, sel, nullptr);
923  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChangeAllPhases) {
924  // Toogle menuCheckChangeAllPhases
925  if (viewNet->getNetworkViewOptions().menuCheckChangeAllPhases->amChecked() == TRUE) {
926  // show extra information for tests
927  WRITE_DEBUG("Disabled change all phases throught alt + " + toString(numericalKeyPressed + 1));
928  } else {
929  // show extra information for tests
930  WRITE_DEBUG("Enabled change all phases throught alt + " + toString(numericalKeyPressed + 1));
931  }
932  // Call manually onCmdToogleChangeAllPhases
933  viewNet->onCmdToogleChangeAllPhases(obj, sel, nullptr);
934  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckWarnAboutMerge) {
935  // Toogle menuCheckWarnAboutMerge
936  if (viewNet->getNetworkViewOptions().menuCheckWarnAboutMerge->amChecked() == TRUE) {
937  // show extra information for tests
938  WRITE_DEBUG("Disabled warn about merge throught alt + " + toString(numericalKeyPressed + 1));
939  } else {
940  // show extra information for tests
941  WRITE_DEBUG("Enabled warn about merge throught alt + " + toString(numericalKeyPressed + 1));
942  }
943  // Call manually onCmdToogleWarnAboutMerge
944  viewNet->onCmdToogleWarnAboutMerge(obj, sel, nullptr);
945  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowJunctionBubble) {
946  // Toogle menuCheckShowJunctionBubble
947  if (viewNet->getNetworkViewOptions().menuCheckShowJunctionBubble->amChecked() == TRUE) {
948  // show extra information for tests
949  WRITE_DEBUG("Disabled show junction as bubble throught alt + " + toString(numericalKeyPressed + 1));
950  } else {
951  // show extra information for tests
952  WRITE_DEBUG("Enabled show junction as bubble throught alt + " + toString(numericalKeyPressed + 1));
953  }
954  // Call manually onCmdToogleShowJunctionBubble
955  viewNet->onCmdToogleShowJunctionBubbles(obj, sel, nullptr);
956  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckMoveElevation) {
957  // Toogle menuCheckMoveElevation
958  if (viewNet->getNetworkViewOptions().menuCheckMoveElevation->amChecked() == TRUE) {
959  // show extra information for tests
960  WRITE_DEBUG("Disabled move elevation throught alt + " + toString(numericalKeyPressed + 1));
961  } else {
962  // show extra information for tests
963  WRITE_DEBUG("Enabled move elevation throught alt + " + toString(numericalKeyPressed + 1));
964  }
965  // Call manually onCmdToogleMoveElevation
966  viewNet->onCmdToogleMoveElevation(obj, sel, nullptr);
967  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChainEdges) {
968  // Toogle menuCheckChainEdges
969  if (viewNet->getNetworkViewOptions().menuCheckChainEdges->amChecked() == TRUE) {
970  // show extra information for tests
971  WRITE_DEBUG("Disabled chain edges throught alt + " + toString(numericalKeyPressed + 1));
972  } else {
973  // show extra information for tests
974  WRITE_DEBUG("Enabled chain edges throught alt + " + toString(numericalKeyPressed + 1));
975  }
976  // Call manually onCmdToogleChainEdges
977  viewNet->onCmdToogleChainEdges(obj, sel, nullptr);
978  } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckAutoOppositeEdge) {
979  // Toogle menuCheckAutoOppositeEdge
980  if (viewNet->getNetworkViewOptions().menuCheckAutoOppositeEdge->amChecked() == TRUE) {
981  // show extra information for tests
982  WRITE_DEBUG("Disabled auto opposite edge throught alt + " + toString(numericalKeyPressed + 1));
983  } else {
984  // show extra information for tests
985  WRITE_DEBUG("Enabled auto opposite edge throught alt + " + toString(numericalKeyPressed + 1));
986  }
987  // Call manually onCmdToogleAutoOppositeEdge
988  viewNet->onCmdToogleAutoOppositeEdge(obj, sel, nullptr);
989  } else {
990  return false;
991  }
992  return true;
993 }
994 
995 
996 bool
997 GNEApplicationWindowHelper::toogleEditOptionsDemand(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, const int numericalKeyPressed, FXObject* obj, FXSelector sel) {
998  if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowGrid) {
999  // Toogle menuCheckShowGrid
1000  if (viewNet->getDemandViewOptions().menuCheckShowGrid->amChecked() == TRUE) {
1001  // show extra information for tests
1002  WRITE_DEBUG("Disabled toogle show grid throught alt + " + toString(numericalKeyPressed + 1));
1003  } else {
1004  // show extra information for tests
1005  WRITE_DEBUG("Enabled toogle show grid throught alt + " + toString(numericalKeyPressed + 1));
1006  }
1007  // Call manually onCmdToogleShowGrid
1008  viewNet->onCmdToogleShowGrid(obj, sel, nullptr);
1009  } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckDrawSpreadVehicles) {
1010  // Toogle menuCheckDrawSpreadVehicles
1011  if (viewNet->getDemandViewOptions().menuCheckDrawSpreadVehicles->amChecked() == TRUE) {
1012  // show extra information for tests
1013  WRITE_DEBUG("Disabled toogle draw spread vehicles throught alt + " + toString(numericalKeyPressed + 1));
1014  } else {
1015  // show extra information for tests
1016  WRITE_DEBUG("Enabled toogle spread vehicles throught alt + " + toString(numericalKeyPressed + 1));
1017  }
1018  // Call manually onCmdToogleDrawSpreadVehicles
1019  viewNet->onCmdToogleDrawSpreadVehicles(obj, sel, nullptr);
1020  } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideShapes) {
1021  // Toogle menuCheckHideShapes
1022  if (viewNet->getDemandViewOptions().menuCheckHideShapes->amChecked() == TRUE) {
1023  // show extra information for tests
1024  WRITE_DEBUG("Disabled hide shapes throught alt + " + toString(numericalKeyPressed + 1));
1025  } else {
1026  // show extra information for tests
1027  WRITE_DEBUG("Enabled hide shapes throught alt + " + toString(numericalKeyPressed + 1));
1028  }
1029  // Call manually onCmdToogleHideNonInspecteDemandElements
1030  viewNet->onCmdToogleHideShapes(obj, sel, nullptr);
1031  } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideNonInspectedDemandElements) {
1032  // Toogle menuCheckHideNonInspectedDemandElements
1034  // show extra information for tests
1035  WRITE_DEBUG("Disabled hide non inspected demand elements throught alt + " + toString(numericalKeyPressed + 1));
1036  } else {
1037  // show extra information for tests
1038  WRITE_DEBUG("Enabled hide non inspected demand elements throught alt + " + toString(numericalKeyPressed + 1));
1039  }
1040  // Call manually onCmdToogleHideNonInspecteDemandElements
1041  viewNet->onCmdToogleHideNonInspecteDemandElements(obj, sel, nullptr);
1042  } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllPersonPlans) {
1043  // Toogle menuCheckShowAllPersonPlans
1044  if (viewNet->getDemandViewOptions().menuCheckShowAllPersonPlans->amChecked() == TRUE) {
1045  // show extra information for tests
1046  WRITE_DEBUG("Disabled show all person plans throught alt + " + toString(numericalKeyPressed + 1));
1047  } else {
1048  // show extra information for tests
1049  WRITE_DEBUG("Enabled show all person plans throught alt + " + toString(numericalKeyPressed + 1));
1050  }
1051  // Call manually onCmdToogleHideNonInspecteDemandElements
1052  viewNet->onCmdToogleHideNonInspecteDemandElements(obj, sel, nullptr);
1053  } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckLockPerson) {
1054  // Toogle menuCheckShowAllPersonPlans
1055  if (viewNet->getDemandViewOptions().menuCheckLockPerson->amChecked() == TRUE) {
1056  // show extra information for tests
1057  WRITE_DEBUG("Disabled lock person plan throught alt + " + toString(numericalKeyPressed + 1));
1058  } else {
1059  // show extra information for tests
1060  WRITE_DEBUG("Enabled lock person plan throught alt + " + toString(numericalKeyPressed + 1));
1061  }
1062  // Call manually onCmdToogleLockPerson
1063  viewNet->onCmdToogleLockPerson(obj, sel, nullptr);
1064  } else {
1065  return false;
1066  }
1067  return true;
1068 }
1069 
1070 
1071 bool
1072 GNEApplicationWindowHelper::toogleEditOptionsData(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, const int numericalKeyPressed, FXObject* obj, FXSelector sel) {
1073  if (menuCheck == viewNet->getDataViewOptions().menuCheckShowAdditionals) {
1074  // Toogle menuCheckHideShapes
1075  if (viewNet->getDataViewOptions().menuCheckShowAdditionals->amChecked() == TRUE) {
1076  // show extra information for tests
1077  WRITE_DEBUG("Disabled show additionals throught alt + " + toString(numericalKeyPressed + 1));
1078  } else {
1079  // show extra information for tests
1080  WRITE_DEBUG("Enabled show shapes throught alt + " + toString(numericalKeyPressed + 1));
1081  }
1082  // Call manually onCmdToogleShowAdditionals
1083  viewNet->onCmdToogleShowAdditionals(obj, sel, nullptr);
1084  } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowShapes) {
1085  // Toogle menuCheckHideShapes
1086  if (viewNet->getDataViewOptions().menuCheckShowShapes->amChecked() == TRUE) {
1087  // show extra information for tests
1088  WRITE_DEBUG("Disabled show shapes throught alt + " + toString(numericalKeyPressed + 1));
1089  } else {
1090  // show extra information for tests
1091  WRITE_DEBUG("Enabled show shapes throught alt + " + toString(numericalKeyPressed + 1));
1092  }
1093  // Call manually onCmdToogleShowShapes
1094  viewNet->onCmdToogleShowShapes(obj, sel, nullptr);
1095  } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowDemandElements) {
1096  // Toogle menuCheckShowDemandElements
1097  if (viewNet->getDataViewOptions().menuCheckShowDemandElements->amChecked() == TRUE) {
1098  // show extra information for tests
1099  WRITE_DEBUG("Disabled show demand elements throught alt + " + toString(numericalKeyPressed + 1));
1100  } else {
1101  // show extra information for tests
1102  WRITE_DEBUG("Enabled show demand elements throught alt + " + toString(numericalKeyPressed + 1));
1103  }
1104  // Call manually onCmdToogleShowDemandElements
1105  viewNet->onCmdToogleShowDemandElements(obj, sel, nullptr);
1106  } else {
1107  return false;
1108  }
1109  return true;
1110 }
1111 
1112 /****************************************************************************/
@ MID_GNE_TOOLBAREDIT_LOADADDITIONALS
load additionals in SUMO-GUI after press ctrl+T
Definition: GUIAppEnum.h:614
@ MID_HOTKEY_SHIFT_F5_COMPUTEJUNCTIONS_VOLATILE
compute junctions with volatile options
Definition: GUIAppEnum.h:214
@ MID_HOTKEY_CTRL_SHIFT_B_SAVEDATAELEMENTS
save Data Elements
Definition: GUIAppEnum.h:155
@ MID_HOTKEY_F3_SUPERMODE_DEMAND
select demand supermode in NETEDIT
Definition: GUIAppEnum.h:181
@ MID_LOCATEPERSON
Locate person - button.
Definition: GUIAppEnum.h:349
@ MID_HOTKEY_T_MODES_TLS_VTYPE
hotkey for mode editing TLS AND Vehicle Types
Definition: GUIAppEnum.h:61
@ MID_HOTKEY_CTRL_SHIFT_H_SAVEEDGETYPES
save Edge Types
Definition: GUIAppEnum.h:153
@ MID_HOTKEY_S_MODES_SELECT
hotkey for mode selecting objects
Definition: GUIAppEnum.h:57
@ MID_LOCATEJUNCTION
Locate junction - button.
Definition: GUIAppEnum.h:339
@ MID_GNE_TOOLBAREDIT_LOADDEMAND
load demand in SUMO-GUI after press ctrl+T
Definition: GUIAppEnum.h:616
@ MID_OPEN_CONFIG
Open configuration - ID.
Definition: GUIAppEnum.h:254
@ MID_HOTKEY_CTRL_W_CLOSESIMULATION
Close simulation - ID.
Definition: GUIAppEnum.h:109
@ MID_HOTKEY_F7_JOIN_SELECTEDJUNCTIONS_ROUTES
join selected junctions in network mode and normalice demand element ids in demand mode
Definition: GUIAppEnum.h:189
@ MID_HOTKEY_CTRL_D_SINGLESIMULATIONSTEP_OPENDEMANDELEMENTS
Perform a single simulation step in SUMO and open Demand Elements in NETEDIT.
Definition: GUIAppEnum.h:81
@ MID_HOTKEY_F5_COMPUTE_NETWORK_DEMAND
compute Network in network mode and Demand elements in demand mode
Definition: GUIAppEnum.h:185
@ MID_HOTKEY_V_MODES_VEHICLE
hotkey for mode create vehicles
Definition: GUIAppEnum.h:63
@ MID_HOTKEY_F9_EDIT_VIEWSCHEME
open edit scheme menu
Definition: GUIAppEnum.h:193
@ MID_HOTKEY_E_MODES_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
Definition: GUIAppEnum.h:49
@ MID_LOCATEPOLY
Locate polygons - button.
Definition: GUIAppEnum.h:359
@ MID_HOTKEY_CTRL_N_NEWNETWORK
create new empty newtork
Definition: GUIAppEnum.h:97
@ MID_HOTKEY_CTRL_SHIFT_S_SAVENETWORK_AS
save network as
Definition: GUIAppEnum.h:161
@ MID_GNE_TOOLBARFILE_OPENFOREIGN
open foreign network
Definition: GUIAppEnum.h:596
@ MID_HOTKEY_CTRL_B_EDITBREAKPOINT_OPENDATAELEMENTS
Edit simulation breakpoints in SUMO and open Data Elements in NETEDIT.
Definition: GUIAppEnum.h:77
@ MID_HOTKEY_CTRL_SHIFT_D_SAVEDEMANDELEMENTS
Save Demand Elements.
Definition: GUIAppEnum.h:157
@ MID_HOTKEY_CTRL_R_RELOAD
Reload the previously loaded simulation.
Definition: GUIAppEnum.h:103
@ MID_HOTKEY_CTRL_S_STOPSIMULATION_SAVENETWORK
Stop the simulation in SUMO and save network in NETEDIT.
Definition: GUIAppEnum.h:101
@ MID_HOTKEY_W_MODES_PROHIBITION_PERSONTYPE
hotkey for mode editing connection prohibitions AND person types
Definition: GUIAppEnum.h:65
@ MID_GNE_TOOLBARFILE_SAVEDATA_AS
save data elements as
Definition: GUIAppEnum.h:606
@ MID_HOTKEY_F10_OPTIONSMENU
open options menu
Definition: GUIAppEnum.h:195
@ MID_HOTKEY_F11_FRONTELEMENT
set/clear front element
Definition: GUIAppEnum.h:197
@ MID_HOTKEY_R_MODES_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
Definition: GUIAppEnum.h:59
@ MID_HOTKEY_F8_CLEANINVALID_CROSSINGS_DEMANDELEMENTS
clean invalid crossings in network mode and demand elements in demand mode
Definition: GUIAppEnum.h:191
@ MID_HOTKEY_I_MODES_INSPECT
hotkey for mode inspecting object attributes
Definition: GUIAppEnum.h:51
@ MID_LOCATEADD
Locate addtional structure - button.
Definition: GUIAppEnum.h:355
@ MID_LOCATEPOI
Locate poi - button.
Definition: GUIAppEnum.h:357
@ MID_HOTKEY_P_MODES_POLYGON_PERSON
hotkey for mode creating polygons
Definition: GUIAppEnum.h:55
@ MID_OPEN_NETWORK
Open network - ID.
Definition: GUIAppEnum.h:256
@ MID_GNE_TOOLBARFILE_SAVETLSPROGRAMS_AS
save TLS Programs as
Definition: GUIAppEnum.h:600
@ MID_HOTKEY_Z_MODES_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
Definition: GUIAppEnum.h:67
@ MID_HOTKEY_M_MODES_MOVE
hotkey for mode moving element
Definition: GUIAppEnum.h:53
@ MID_HOTKEY_CTRL_I_EDITVIEWPORT
Open viewport editor.
Definition: GUIAppEnum.h:87
@ MID_RECENTFILE
Loads a file previously loaded.
Definition: GUIAppEnum.h:262
@ MID_HOTKEY_CTRL_J_SAVEJOINEDJUNCTIONS
save joined junctions
Definition: GUIAppEnum.h:91
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in NETEDIT
Definition: GUIAppEnum.h:183
@ MID_HOTKEY_F6_CLEAN_SOLITARYJUNCTIONS_UNUSEDROUTES
clean junctions without edges in network mode and unused routes in demand mode
Definition: GUIAppEnum.h:187
@ MID_LOCATESTOP
Locate stop - button.
Definition: GUIAppEnum.h:347
@ MID_HOTKEY_CTRL_K_OPENTLSPROGRAMS
Load file with TLS Programs.
Definition: GUIAppEnum.h:93
@ MID_CLEARMESSAGEWINDOW
Clear simulation output.
Definition: GUIAppEnum.h:321
@ MID_HOTKEY_A_MODES_ADDITIONAL_STOP
hotkey for mode editing additionals AND stops
Definition: GUIAppEnum.h:43
@ MID_GNE_TOOLBARFILE_SAVEADDITIONALS_AS
save additionals as
Definition: GUIAppEnum.h:598
@ MID_GNE_TOOLBARFILE_SAVEEDGETYPES_AS
save edgeTypes as
Definition: GUIAppEnum.h:602
@ MID_HOTKEY_C_MODES_CONNECT_PERSONPLAN
hotkey for mode connecting lanes
Definition: GUIAppEnum.h:45
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALS
Save Additional Elements.
Definition: GUIAppEnum.h:151
@ MID_LOCATEEDGE
Locate edge - button.
Definition: GUIAppEnum.h:341
@ MID_HOTKEY_CTRL_A_STARTSIMULATION_OPENADDITIONALS
Start the simulation in SUMO and open Additionals Elemements in NETEDIT.
Definition: GUIAppEnum.h:75
@ MID_LOCATEVEHICLE
Locate vehicle - button.
Definition: GUIAppEnum.h:343
@ MID_LOCATETLS
Locate TLS - button.
Definition: GUIAppEnum.h:353
@ MID_GNE_TOOLBARFILE_SAVEDEMAND_AS
save demand elements as
Definition: GUIAppEnum.h:604
@ MID_HOTKEY_CTRL_SHIFT_K_SAVETLS
save TLS Programs
Definition: GUIAppEnum.h:159
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in NETEDIT
Definition: GUIAppEnum.h:179
@ MID_HOTKEY_D_MODES_DELETE
hotkey for mode deleting things
Definition: GUIAppEnum.h:47
@ MID_HOTKEY_CTRL_H_OPENEDGETYPES
open edge type files
Definition: GUIAppEnum.h:85
@ MID_HOTKEY_CTRL_G_GAMINGMODE_TOOGLEGRID
Toogle Gaming mode in SUMO and grid in NETEDIT.
Definition: GUIAppEnum.h:83
@ MID_LOCATEROUTE
Locate route - button.
Definition: GUIAppEnum.h:345
@ MID_HOTKEY_CTRL_L_SAVEASPLAINXML
save network as plain XML
Definition: GUIAppEnum.h:95
@ MID_HOTKEY_CTRL_T_OPENSUMONETEDIT
Open current network in SUMO or in NETEDIT.
Definition: GUIAppEnum.h:105
#define GUIDesignToolbarMenuBarNetedit
design for top toolbar (file, edit, processing...) used only in netedit (due supermodes buttons)
Definition: GUIDesigns.h:333
#define GUIDesignToolBarGrip
design for toolbar grip (used to change the position of toolbar with mouse)
Definition: GUIDesigns.h:348
#define GUIDesignToolBar
design for default toolbar
Definition: GUIDesigns.h:336
#define GUIDesignToolBarRaisedNext
design for first toolbar shell positioned in the next position of dock
Definition: GUIDesigns.h:342
#define GUIDesignToolBarRaisedSame
design for toolbar
Definition: GUIDesigns.h:339
@ CLEANJUNCTIONS
@ MODEVEHICLETYPE
@ MODEPERSONPLAN
@ MODECROSSING
@ MODEADDITIONAL
@ MODEEDGERELDATA
@ EDITVIEWPORT
@ SUPERMODEDEMAND
@ MODEPROHIBITION
@ OPEN_ADDITIONALS
@ COMPUTEJUNCTIONS
@ LOCATEVEHICLE
@ FRONTELEMENT
@ MODECREATEEDGE
@ LOCATEPERSON
@ SAVEDATAELEMENTS
@ MODEEDGEDATA
@ SUPERMODENETWORK
@ SAVEDEMANDELEMENTS
@ SUPERMODEDATA
@ SAVEADDITIONALELEMENTS
@ MODECONNECTION
@ LOCATEJUNCTION
@ COMPUTEDEMAND
@ MODEPERSONTYPE
@ OPEN_TLSPROGRAMS
@ JOINJUNCTIONS
@ MODETAZRELDATA
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:286
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:44
The main window of the Netedit.
const GNEViewNetHelper::DataViewOptions & getDataViewOptions() const
get data view options
Definition: GNEViewNet.cpp:491
long onCmdToogleShowJunctionBubbles(FXObject *, FXSelector, void *)
toogle show junction bubbles
long onCmdToogleChangeAllPhases(FXObject *, FXSelector, void *)
toogle change all phases
long onCmdToogleWarnAboutMerge(FXObject *, FXSelector, void *)
toogle warn for merge
long onCmdToogleLockPerson(FXObject *, FXSelector, void *)
toogle lock person in super mode demand
long onCmdToogleShowAdditionals(FXObject *, FXSelector, void *)
toogle show additionals in super mode data
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
Definition: GNEViewNet.cpp:479
long onCmdToogleSelectEdges(FXObject *, FXSelector, void *)
toogle select edges
long onCmdToogleHideShapes(FXObject *, FXSelector, void *)
toogle hide shapes in super mode demand
long onCmdToogleChainEdges(FXObject *, FXSelector, void *)
toogle chain edges
long onCmdToogleHideNonInspecteDemandElements(FXObject *, FXSelector, void *)
toogle hide non inspected demand elements
long onCmdToogleExtendSelection(FXObject *, FXSelector, void *)
toogle extend selection
long onCmdToogleAutoOppositeEdge(FXObject *, FXSelector, void *)
toogle autoOpposite edge
long onCmdToogleShowShapes(FXObject *, FXSelector, void *)
toogle show shapes in super mode data
long onCmdToogleShowGrid(FXObject *, FXSelector, void *)
toogle show grid
long onCmdToogleDrawSpreadVehicles(FXObject *, FXSelector, void *)
toogle draw vehicles in begin position or spread in lane
long onCmdToogleMoveElevation(FXObject *, FXSelector, void *)
toogle move elevation
const GNEViewNetHelper::DemandViewOptions & getDemandViewOptions() const
get demand view options
Definition: GNEViewNet.cpp:485
long onCmdToogleShowDemandElements(FXObject *, FXSelector, void *)
toogle show demand elements
long onCmdToogleShowConnections(FXObject *, FXSelector, void *)
toogle show connections
long onCmdToogleHideConnections(FXObject *, FXSelector, void *)
toogle hide connections
static FXMenuCommand * buildFXMenuCommandRecentFile(FXComposite *p, const std::string &text, FXObject *tgt, FXSelector sel)
build menu command (for recent files)
Definition: GUIDesigns.cpp:62
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu command
Definition: GUIDesigns.cpp:40
static FXMenuCommand * buildFXMenuCommandShortcut(FXComposite *p, const std::string &text, const std::string &shortcut, const std::string &info, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu command
Definition: GUIDesigns.cpp:51
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
A logging window for the gui.
bool amChecked() const
check if this MFXCheckableButton is checked
static OptionsCont & getOptions()
Retrieves the options.
Definition: OptionsCont.cpp:58
DataMenuCommands(const EditMenuCommands *editMenuCommandsParent)
constructor
DemandMenuCommands(const EditMenuCommands *editMenuCommandsParent)
constructor
NetworkMenuCommands(const EditMenuCommands *editMenuCommandsParent)
constructor
DataMenuCommands dataMenuCommands
Data Menu Commands.
EditMenuCommands(GNEApplicationWindow *GNEApp)
constructor
FXMenuCommand * openInSUMOGUI
FXMenuCommand for open in SUMO GUI.
FXMenuCommand * editViewScheme
FXMenuCommand for edit view scheme.
void buildEditMenuCommands(FXMenuPane *editMenu)
build edit menu commands
FXMenuCommand * toogleGrid
FXMenuCommand for toogle grid.
DemandMenuCommands demandMenuCommands
Demand Menu Commands.
GNEApplicationWindow * myGNEApp
pointer to current GNEApplicationWindows
FXMenuCheck * loadAdditionalsInSUMOGUI
menu check for load additionals in SUMO GUI
FXMenuCommand * undoLastChange
FXMenuCommand for undo last change.
FXMenuCheck * loadDemandInSUMOGUI
menu check for load demand in SUMO GUI
FXMenuCommand * redoLastChange
FXMenuCommand for redo last change.
NetworkMenuCommands networkMenuCommands
Network Menu Commands.
FXMenuCommand * editViewPort
FXMenuCommand for edit view port.
FXMenuCommand * clearFrontElement
FXMenuCommand for clear Front element.
FileMenuCommands(GNEApplicationWindow *GNEApp)
constructor
void buildFileMenuCommands(FXMenuPane *fileMenu, FXMenuPane *fileMenuTLS, FXMenuPane *fileMenuEdgeTypes, FXMenuPane *fileMenuAdditionals, FXMenuPane *fileMenuDemandElements, FXMenuPane *fileMenuDataElements)
build menu commands
void buildLocateMenuCommands(FXMenuPane *locateMenu)
build menu commands
LocateMenuCommands(GNEApplicationWindow *GNEApp)
constructor
void buildRecentFiles(FXMenuPane *fileMenu)
build recent files
MenuBarFile(GNEApplicationWindow *GNEApp)
constructor
void showDataProcessingMenuCommands()
show data processing menu commands
void showDemandProcessingMenuCommands()
show demand processing menu commands
void hideDemandProcessingMenuCommands()
show demand processing menu commands
void hideDataProcessingMenuCommands()
show data processing menu commands
void showNetworkProcessingMenuCommands()
show network processing menu commands
void buildProcessingMenuCommands(FXMenuPane *editMenu)
build menu commands
ProcessingMenuCommands(GNEApplicationWindow *GNEApp)
constructor
void hideNetworkProcessingMenuCommands()
show network processing menu commands
void buildSupermodeCommands(FXMenuPane *editMenu)
build menu commands
SupermodeCommands(GNEApplicationWindow *GNEApp)
constructor
void buildMenuToolbarsGrip()
build menu toolbar grips
ToolbarsGrip(GNEApplicationWindow *GNEApp)
constructor
WindowsMenuCommands(GNEApplicationWindow *GNEApp)
constructor
void buildWindowsMenuCommands(FXMenuPane *windowsMenu, FXStatusBar *statusbar, GUIMessageWindow *messageWindow)
build menu commands
static bool toogleEditOptionsNetwork(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, const int numericalKeyPressed, FXObject *obj, FXSelector sel)
toogle edit options Network menu commands (called in GNEApplicationWindow::onCmdToogleEditOptions)
static bool toogleEditOptionsData(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, const int numericalKeyPressed, FXObject *obj, FXSelector sel)
toogle edit options Data menu commands (called in GNEApplicationWindow::onCmdToogleEditOptions)
static bool toogleEditOptionsDemand(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, const int numericalKeyPressed, FXObject *obj, FXSelector sel)
toogle edit options Demand menu commands (called in GNEApplicationWindow::onCmdToogleEditOptions)
MFXCheckableButton * menuCheckShowAdditionals
menu check to show Additionals
MFXCheckableButton * menuCheckShowShapes
menu check to show Shapes
MFXCheckableButton * menuCheckShowDemandElements
menu check to show Demand Elements
MFXCheckableButton * menuCheckDrawSpreadVehicles
menu check to draw vehicles in begin position or spread in lane
MFXCheckableButton * menuCheckShowGrid
menu check to show grid button
MFXCheckableButton * menuCheckShowAllPersonPlans
show all person plans
MFXCheckableButton * menuCheckHideNonInspectedDemandElements
Hide non inspected demand elements.
MFXCheckableButton * menuCheckHideShapes
Hide shapes (Polygons and POIs)
MFXCheckableButton * menuCheckLockPerson
Lock Person.
MFXCheckableButton * menuCheckSelectEdges
checkable button to select only edges
MFXCheckableButton * menuCheckChainEdges
checkable button to the endpoint for a created edge should be set as the new source
MFXCheckableButton * menuCheckShowDemandElements
checkable button to show Demand Elements
MFXCheckableButton * menuCheckMoveElevation
checkable button to apply movement to elevation
MFXCheckableButton * menuCheckAutoOppositeEdge
check checkable to create auto create opposite edge
MFXCheckableButton * menuCheckDrawSpreadVehicles
checkable button to draw vehicles in begin position or spread in lane
MFXCheckableButton * menuCheckShowConnections
checkable button to show connections
MFXCheckableButton * menuCheckHideConnections
checkable button to hide connections in connect mode
MFXCheckableButton * menuCheckShowJunctionBubble
checkable button to show connection as buuble in "Move" mode.
MFXCheckableButton * menuCheckWarnAboutMerge
checkable button to we should warn about merging junctions
MFXCheckableButton * menuCheckShowGrid
checkable button to show grid button
MFXCheckableButton * menuCheckChangeAllPhases
checkable button to set change all phases
MFXCheckableButton * menuCheckExtendSelection
checkable button to extend to edge nodes