Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEApplicationWindowHelper.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2026 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 <config.h>
21
22#include <regex>
23
29#include <netedit/templates.h>
36#include <xercesc/parsers/SAXParser.hpp>
37#include <xercesc/sax/AttributeList.hpp>
38#include <xercesc/sax/HandlerBase.hpp>
39#include <xercesc/sax/SAXException.hpp>
40#include <xercesc/sax/SAXParseException.hpp>
41
43#include "GNEViewNet.h"
44#include "GNENet.h"
45
46// ===========================================================================
47// GNEApplicationWindowHelper::ToolbarsGrip method definitions
48// ===========================================================================
49
51 myApplicationWindow(applicationWindow) {
52}
53
54
55void
57 // build menu bar (for File, edit, processing...) using specify design
58 myPythonToolBarShellMenu = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
59 menu = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellMenu, GUIDesignToolbarMenuBarNetedit);
60 // declare toolbar grip for menu bar
61 new FXToolBarGrip(menu, menu, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
62}
63
64
65void
67 // build toolbar shells
68 myPythonToolBarShellSuperModes = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
69 myPythonToolBarShellSaveElements = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
70 myPythonToolBarShellTimeFormat = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
71 myPythonToolBarShellNavigation = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
72 myPythonToolBarShellModes = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
73 myPythonToolBarShellIntervalBar = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
74 // build menu bars
75 superModes = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellSuperModes, GUIDesignToolBarRaisedSupermodes);
76 saveElements = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellSaveElements, GUIDesignToolBarRaisedNext);
77 timeSwitch = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellTimeFormat, GUIDesignToolBarRaisedSame);
78 navigation = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellNavigation, GUIDesignToolBarRaisedSame);
79 if (OptionsCont::getOptions().getBool("gui-testing")) {
80 modes = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellModes, GUIDesignToolBarRaisedNext);
81 } else {
82 modes = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellModes, GUIDesignToolBarRaisedSame);
83 }
84 intervalBar = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellIntervalBar, GUIDesignToolBarRaisedNext);
85 // build FXToolBarGrip
86 new FXToolBarGrip(superModes, superModes, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
87 new FXToolBarGrip(saveElements, saveElements, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
88 new FXToolBarGrip(timeSwitch, timeSwitch, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
89 new FXToolBarGrip(navigation, navigation, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
90 new FXToolBarGrip(modes, modes, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
91 new FXToolBarGrip(intervalBar, intervalBar, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
92 // create menu bars
93 superModes->create();
94 saveElements->create();
95 timeSwitch->create();
96 navigation->create();
97 modes->create();
98 intervalBar->create();
99 // create toolbar shells
100 myPythonToolBarShellSuperModes->create();
101 myPythonToolBarShellSaveElements->create();
102 myPythonToolBarShellTimeFormat->create();
103 myPythonToolBarShellNavigation->create();
104 myPythonToolBarShellModes->create();
105 myPythonToolBarShellIntervalBar->create();
106 // recalc top dop after creating elements
107 myApplicationWindow->getTopDock()->recalc();
108}
109
110
111void
113 // delete Menu bars
114 delete superModes;
115 delete saveElements;
116 delete timeSwitch;
117 delete navigation;
118 delete modes;
119 delete intervalBar;
120 // also delete toolbar shells to avoid floating windows
121 delete myPythonToolBarShellSuperModes;
122 delete myPythonToolBarShellSaveElements;
123 delete myPythonToolBarShellTimeFormat;
124 delete myPythonToolBarShellNavigation;
125 delete myPythonToolBarShellModes;
126 delete myPythonToolBarShellIntervalBar;
127 // recalc top dop after deleting elements
128 myApplicationWindow->getTopDock()->recalc();
129}
130
131// ===========================================================================
132// GNEApplicationWindowHelper::MenuBarFile method definitions
133// ===========================================================================
134
136 myRecentNetworks(applicationWindow->getApp(), TL("nets")),
137 myRecentConfigs(applicationWindow->getApp(), TL("configs")),
138 myApplicationWindow(applicationWindow) {
139}
140
141
142void
143GNEApplicationWindowHelper::MenuBarFile::buildRecentNetworkFiles(FXMenuPane* fileMenu, FXMenuPane* fileMenuRecentNetworkFiles) {
144 // for whatever reason, sonar complains in the next line that sep1 may leak, but fox does the cleanup
145 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_1);
146 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_2);
147 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_3);
148 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_4);
149 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_5);
150 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_6);
151 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_7);
152 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_8);
153 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_9);
154 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_10);
155 new FXMenuSeparator(fileMenuRecentNetworkFiles); // NOSONAR, Fox does the cleanup
156 GUIDesigns::buildFXMenuCommand(fileMenuRecentNetworkFiles, TL("Cl&ear Recent Networks"), nullptr, &myRecentNetworks, FXRecentFiles::ID_CLEAR);
157 GUIDesigns::buildFXMenuCommand(fileMenuRecentNetworkFiles, TL("No Recent Networks"), nullptr, &myRecentNetworks, MFXRecentNetworks::ID_NOFILES);
158 // set target
159 myRecentNetworks.setTarget(myApplicationWindow);
160 myRecentNetworks.setSelector(MID_RECENTFILE);
161 new FXMenuCascade(fileMenu, TL("Recent Networks"), nullptr, fileMenuRecentNetworkFiles);
162}
163
164
165void
166GNEApplicationWindowHelper::MenuBarFile::buildRecentConfigFiles(FXMenuPane* fileMenu, FXMenuPane* fileMenuRecentConfigFiles) {
167 // for whatever reason, sonar complains in the next line that sep1 may leak, but fox does the cleanup
168 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_1);
169 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_2);
170 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_3);
171 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_4);
172 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_5);
173 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_6);
174 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_7);
175 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_8);
176 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_9);
177 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_10);
178 new FXMenuSeparator(fileMenuRecentConfigFiles); // NOSONAR, Fox does the cleanup
179 GUIDesigns::buildFXMenuCommand(fileMenuRecentConfigFiles, TL("Cl&ear Recent Configs"), nullptr, &myRecentConfigs, FXRecentFiles::ID_CLEAR);
180 GUIDesigns::buildFXMenuCommand(fileMenuRecentConfigFiles, TL("No Recent Configs"), nullptr, &myRecentConfigs, MFXRecentNetworks::ID_NOFILES);
181 // set target
182 myRecentConfigs.setTarget(myApplicationWindow);
183 myRecentConfigs.setSelector(MID_RECENTFILE);
184 new FXMenuCascade(fileMenu, TL("Recent Configs"), nullptr, fileMenuRecentConfigFiles);
185}
186
187// ---------------------------------------------------------------------------
188// GNEApplicationWindowHelper::FileMenuCommands - methods
189// ---------------------------------------------------------------------------
190
192 myApplicationWindow(applicationWindow) {
193}
194
195
196void
197GNEApplicationWindowHelper::FileMenuCommands::buildFileMenuCommands(FXMenuPane* fileMenu, FXMenuPane* fileMenuNeteditConfig,
198 FXMenuPane* fileMenuSumoConfig, FXMenuPane* fileMenuTLS, FXMenuPane* fileMenuEdgeTypes, FXMenuPane* fileMenuAdditionals,
199 FXMenuPane* fileMenuDemandElements, FXMenuPane* fileMenuDataElements, FXMenuPane* fileMenuMeanDataElements) {
200
202 TL("New Network"), "Ctrl+N", TL("Create a new network."),
204
206 TL("New Window"), "Ctrl+Shift+N", TL("Open a new netedit window."),
207 nullptr, myApplicationWindow, MID_HOTKEY_CTRL_SHIFT_N_NEWWINDOW);
208
210 TL("Generate Network"), "", TL("Create network using netgenerate."),
212
213 // load sumo/netedit configs
214 new FXMenuSeparator(fileMenu);
215
217 TL("Load Netedit config..."), "Ctrl+E", TL("Load a netedit configuration file."),
219
221 TL("Load Sumo config..."), "Ctrl+M", TL("Load a SUMO configuration file."),
223
224 // load networks
225 new FXMenuSeparator(fileMenu);
226
228 TL("Open Network..."), "Ctrl+O", TL("Open a SUMO network."),
230
232 TL("Open Netconvert Configuration..."), "Ctrl+Shift+O", TL("Open a configuration file with NETCONVERT options."),
234
236 TL("Import Foreign Network..."), "", TL("Import a foreign network such as OSM."),
238
239 // save networks
240 new FXMenuSeparator(fileMenu);
241
243 TL("Save Network"), "Ctrl+S", TL("Save the network."),
245
247 TL("Save Network As..."), "", TL("Save the network to another file."),
249
251 TL("Save Plain XML..."), "Ctrl+L", TL("Save a plain XML representation of the network."),
253
255 TL("Save Joined Junctions..."), "", TL("Save log of joined junctions (allows reproduction of joins)."),
257
258 // reload
259 new FXMenuSeparator(fileMenu);
260
262 TL("Reload"), "Ctrl+R", TL("Reload the network."),
264
266 TL("Reload Network"), "", TL("Reload the network."),
268
269 new FXMenuSeparator(fileMenu);
270
271 // create netedit config menu options
272 buildNeteditConfigSection(fileMenuNeteditConfig);
273 myNeteditConfigMenuCascade = new FXMenuCascade(fileMenu, TL("Netedit Config"), GUIIconSubSys::getIcon(GUIIcon::NETEDIT_MINI), fileMenuNeteditConfig);
274
275 // create SumoConfig menu options
276 buildSumoConfigSection(fileMenuSumoConfig);
277 mySumoConfigMenuCascade = new FXMenuCascade(fileMenu, TL("Sumo Config"), GUIIconSubSys::getIcon(GUIIcon::SUMO_MINI), fileMenuSumoConfig);
278
279 // create TLS menu options
280 buildTrafficLightSection(fileMenuTLS);
281 myTLSMenuCascade = new FXMenuCascade(fileMenu, TL("Traffic Lights"), GUIIconSubSys::getIcon(GUIIcon::MODETLS), fileMenuTLS);
282
283 // create edgeTypes menu options
284 buildEdgeTypeSection(fileMenuEdgeTypes);
285 myEdgeTypesMenuCascade = new FXMenuCascade(fileMenu, TL("Edge Types"), GUIIconSubSys::getIcon(GUIIcon::MODECREATEEDGE), fileMenuEdgeTypes);
286
287 // create Additionals menu options
288 buildAdditionalSection(fileMenuAdditionals);
289 myAdditionalMenuCascade = new FXMenuCascade(fileMenu, TL("Additionals and Shapes"), GUIIconSubSys::getIcon(GUIIcon::MODEADDITIONAL), fileMenuAdditionals);
290
291 // create DemandElements menu options
292 buildDemandSection(fileMenuDemandElements);
293 myDemandMenuCascade = new FXMenuCascade(fileMenu, TL("Demand Elements"), GUIIconSubSys::getIcon(GUIIcon::SUPERMODEDEMAND), fileMenuDemandElements);
294
295 // create DataElements menu options
296 buildDataSection(fileMenuDataElements);
297 myDataMenuCascade = new FXMenuCascade(fileMenu, TL("Data Elements"), GUIIconSubSys::getIcon(GUIIcon::SUPERMODEDATA), fileMenuDataElements);
298
299 // create MeanDatas menu options
300 buildMeanDataSection(fileMenuMeanDataElements);
301 myMeanDataMenuCascade = new FXMenuCascade(fileMenu, TL("MeanData Elements"), GUIIconSubSys::getIcon(GUIIcon::MODEMEANDATA), fileMenuMeanDataElements);
302
303 // add checkBox for quick load
304 new FXMenuSeparator(fileMenu);
305 menuCheckAllowUndoRedoLoading = GUIDesigns::buildFXMenuCheckbox(fileMenu,
306 TL("Allow undoing element loading"), TL("Allow to undo loading of elements (Slow if a lot of elements are loaded)"),
307 myApplicationWindow, MID_GNE_TOGGLE_UNDOREDO_LOADING);
308 // set default value
309 menuCheckAllowUndoRedoLoading->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "AllowUndoRedoLoading", true));
310
311 // close network
312 new FXMenuSeparator(fileMenu);
314 TL("Close"), "Ctrl+W", TL("Close the network."),
316}
317
318
319void
321 mySumoConfigMenuCascade->enable();
322 myNeteditConfigMenuCascade->enable();
323 myTLSMenuCascade->enable();
324 myEdgeTypesMenuCascade->enable();
325 myAdditionalMenuCascade->enable();
326 myDemandMenuCascade->enable();
327 myDataMenuCascade->enable();
328 myMeanDataMenuCascade->enable();
329}
330
331
332void
334 mySumoConfigMenuCascade->disable();
335 myNeteditConfigMenuCascade->disable();
336 myTLSMenuCascade->disable();
337 myEdgeTypesMenuCascade->disable();
338 myAdditionalMenuCascade->disable();
339 myDemandMenuCascade->disable();
340 myDataMenuCascade->disable();
341 myMeanDataMenuCascade->disable();
342}
343
344
345void
347 myTLSMenuCascade->show();
348 myDataMenuCascade->show();
349 myMeanDataMenuCascade->show();
350}
351
352
353void
355 myTLSMenuCascade->hide();
356 myDataMenuCascade->hide();
357 myMeanDataMenuCascade->hide();
358}
359
360
361void
364 TL("Save Netedit Config"), "Ctrl+Shift+E", TL("Save netedit configuration file."),
366
368 TL("Save Netedit Config As..."), "", TL("Save netedit configuration in a new file."),
370
371 new FXMenuSeparator(menuPane);
372
374 TL("Reload Netedit Config"), "", TL("Reload netedit configuration."),
376}
377
378
379void
382 TL("Save Sumo Config"), "Ctrl+Shift+S", TL("Save sumo configuration file."),
384
386 TL("Save Sumo Config As..."), "", TL("Save sumo configuration in a new file."),
388
389 new FXMenuSeparator(menuPane);
390
392 TL("Reload Sumo Config"), "", TL("Reload sumo configuration."),
394}
395
396
397void
400 TL("Load TLS Programs..."), "Ctrl+K", TL("Load programs for traffic lights in the current net."),
402
403 new FXMenuSeparator(menuPane);
404
406 TL("Save TLS Programs"), "Ctrl+Shift+K", TL("Save all traffic light programs of the current network."),
408
410 TL("Save TLS Programs As..."), "", TL("Save all traffic light programs of the current network to another file."),
412
413 new FXMenuSeparator(menuPane);
414
416 TL("Reload TLS Programs"), "", TL("Reload TLS Programs."),
418}
419
420
421void
424 TL("Load Edge Types..."), "Ctrl+H", TL("Load edge types in the current net."),
426
427 new FXMenuSeparator(menuPane);
428
430 TL("Save Edge Types"), "Ctrl+Shift+H", TL("Save edge types of the current net."),
432
434 TL("Save Edge Types As..."), "", TL("Save edge types of the current net to another file."),
436
437 new FXMenuSeparator(menuPane);
438
440 TL("Reload edge types"), "", TL("Reload edge types."),
442}
443
444
445void
448 TL("Load Additionals..."), "Ctrl+A", TL("Load additionals and shapes."),
450
451 new FXMenuSeparator(menuPane);
452
454 TL("Save Additionals"), "Ctrl+Shift+A", TL("Save additionals and shapes."),
456
458 TL("Save Additionals unified as..."), "", TL("Save all additional elements to the chosen file."),
460
462 TL("Save JuPedSim Elements as..."), "", TL("Save JuPedSim elements in a separated file."),
464
465 new FXMenuSeparator(menuPane);
466
468 TL("Reload Additionals"), "", TL("Reload additionals."),
470}
471
472
473void
476 TL("Load Demand Elements..."), "Ctrl+D", TL("Load demand elements."),
478
479 new FXMenuSeparator(menuPane);
480
482 TL("Save Demand Elements"), "Ctrl+Shift+D", TL("Save demand elements."),
484
486 TL("Save Demand Elements unified as..."), "", TL("Save all demand elements to the chosen file"),
488
489 new FXMenuSeparator(menuPane);
490
492 TL("Reload Demand Elements"), "", TL("Reload demand elements."),
494}
495
496
497void
500 TL("Load Data Elements..."), "Ctrl+B", TL("Load data elements."),
502
503 new FXMenuSeparator(menuPane);
504
506 TL("Save Data Elements"), "Ctrl+Shift+B", TL("Save data elements."),
508
510 TL("Save Data Elements unified as..."), "", TL("Save all data elements to the chosen file."),
512
513 new FXMenuSeparator(menuPane);
514
516 TL("Reload Data Elements"), "", TL("Reload data elements."),
518}
519
520
521void
524 TL("Load MeanDatas..."), "", TL("Load meanDatas and shapes."),
526
527 new FXMenuSeparator(menuPane);
528
530 TL("Save MeanDatas"), "", TL("Save meanDatas and shapes."),
532
534 TL("Save MeanDatas unified as..."), "Ctrl+Shift+M", TL("Save all meanData elements to the chosen file."),
536
537 new FXMenuSeparator(menuPane);
538
540 TL("Reload MeanDatas"), "", TL("Reload meanDatas."),
542}
543
544// ---------------------------------------------------------------------------
545// GNEApplicationWindowHelper::ModesMenuCommands::CommonMenuCommands - methods
546// ---------------------------------------------------------------------------
547
549 myModesMenuCommandsParent(modesMenuCommandsParent) {
550}
551
552
553void
555 // build every FXMenuCommand giving it a shortcut
556 inspectMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
557 TL("&Inspect"), "I", TL("Inspect elements and change their attributes."),
558 GUIIconSubSys::getIcon(GUIIcon::MODEINSPECT), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_I_MODE_INSPECT);
559 deleteMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
560 TL("&Delete"), "D", TL("Delete elements."),
561 GUIIconSubSys::getIcon(GUIIcon::MODEDELETE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE);
562 selectMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
563 TL("&Select"), "S", TL("Select elements."),
564 GUIIconSubSys::getIcon(GUIIcon::MODESELECT), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT);
565}
566
567// ---------------------------------------------------------------------------
568// GNEApplicationWindowHelper::ModesMenuCommands::NetworkMenuCommands - methods
569// ---------------------------------------------------------------------------
570
572 myModesMenuCommandsParent(modesMenuCommandsParent) {
573}
574
575
576void
578 createEdgeMode->show();
579 moveMode->show();
580 connectMode->show();
581 prohibitionMode->show();
582 TLSMode->show();
583 additionalMode->show();
584 crossingMode->show();
585 TAZMode->show();
586 shapeMode->show();
587 wireMode->show();
588 decalMode->show();
589}
590
591
592void
594 createEdgeMode->hide();
595 moveMode->hide();
596 connectMode->hide();
597 prohibitionMode->hide();
598 TLSMode->hide();
599 additionalMode->hide();
600 crossingMode->hide();
601 TAZMode->hide();
602 shapeMode->hide();
603 wireMode->hide();
604 decalMode->hide();
605}
606
607
608void
610 // build every FXMenuCommand giving it a shortcut
611 moveMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
612 TL("&Move"), "M", TL("Move elements."),
613 GUIIconSubSys::getIcon(GUIIcon::MODEMOVE), myModesMenuCommandsParent->myApplicationWindow,
615 createEdgeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
616 TL("&Edge"), "E", TL("Create junction and edges."),
617 GUIIconSubSys::getIcon(GUIIcon::MODECREATEEDGE), myModesMenuCommandsParent->myApplicationWindow,
619 TLSMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
620 TL("&Traffic light"), "T", TL("Modes traffic lights over junctions."),
621 GUIIconSubSys::getIcon(GUIIcon::MODETLS), myModesMenuCommandsParent->myApplicationWindow,
623 connectMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
624 TL("&Connection"), "C", TL("Modes connections between lanes."),
625 GUIIconSubSys::getIcon(GUIIcon::MODECONNECTION), myModesMenuCommandsParent->myApplicationWindow,
627 prohibitionMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
628 TL("Pro&hibition"), "H", TL("Modes connection prohibitions."),
629 GUIIconSubSys::getIcon(GUIIcon::MODEPROHIBITION), myModesMenuCommandsParent->myApplicationWindow,
631 crossingMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
632 TL("C&rossing"), "R", TL("Create crossings between edges."),
633 GUIIconSubSys::getIcon(GUIIcon::MODECROSSING), myModesMenuCommandsParent->myApplicationWindow,
635 additionalMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
636 TL("&Additional"), "A", TL("Create additional elements."),
637 GUIIconSubSys::getIcon(GUIIcon::MODEADDITIONAL), myModesMenuCommandsParent->myApplicationWindow,
639 wireMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
640 TL("&Wire"), "W", TL("Create wires."),
641 GUIIconSubSys::getIcon(GUIIcon::MODEWIRE), myModesMenuCommandsParent->myApplicationWindow,
643 TAZMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
644 TL("TA&Z"), "Z", TL("Create Traffic Assignment Zones."),
645 GUIIconSubSys::getIcon(GUIIcon::MODETAZ), myModesMenuCommandsParent->myApplicationWindow,
647 shapeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
648 TL("&POI-Poly"), "P", TL("Create Points-Of-Interest and polygons."),
649 GUIIconSubSys::getIcon(GUIIcon::MODESHAPE), myModesMenuCommandsParent->myApplicationWindow,
651 decalMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
652 TL("Deca&ls"), "U", TL("Create decals."),
653 GUIIconSubSys::getIcon(GUIIcon::MODEDECAL), myModesMenuCommandsParent->myApplicationWindow,
655}
656
657// ---------------------------------------------------------------------------
658// GNEApplicationWindowHelper::ModesMenuCommands::DemandMenuCommands - methods
659// ---------------------------------------------------------------------------
660
662 myModesMenuCommandsParent(modesMenuCommandsParent) {
663}
664
665
666void
668 moveMode->show();
669 routeMode->show();
670 routeDistributionMode->show();
671 vehicleMode->show();
672 typeMode->show();
673 typeDistributionMode->show();
674 stopMode->show();
675 personMode->show();
676 personPlanMode->show();
677 containerMode->show();
678 containerPlanMode->show();
679}
680
681
682void
684 moveMode->hide();
685 routeMode->hide();
686 routeDistributionMode->hide();
687 vehicleMode->hide();
688 typeMode->hide();
689 typeDistributionMode->hide();
690 stopMode->hide();
691 personMode->hide();
692 personPlanMode->hide();
693 containerMode->hide();
694 containerPlanMode->hide();
695}
696
697
698void
700 // build every FXMenuCommand giving it a shortcut
701 moveMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
702 TL("&Move"), "M", TL("Move elements."),
703 GUIIconSubSys::getIcon(GUIIcon::MODEMOVE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_M_MODE_MOVE_MEANDATA);
704 routeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
705 TL("Route"), "R", TL("Create Routes."),
706 GUIIconSubSys::getIcon(GUIIcon::MODEROUTE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_R_MODE_CROSSING_ROUTE_EDGERELDATA);
707 routeDistributionMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
708 TL("Route distribution"), "W", TL("Create and edit route distributions."),
709 GUIIconSubSys::getIcon(GUIIcon::MODEROUTEDISTRIBUTION), myModesMenuCommandsParent->myApplicationWindow,
711 vehicleMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
712 TL("Vehicle"), "V", TL("Create vehicles."),
713 GUIIconSubSys::getIcon(GUIIcon::MODEVEHICLE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_V_MODE_VEHICLE);
714 typeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
715 TL("Type"), "T", TL("Create types (vehicles, person and containers)."),
716 GUIIconSubSys::getIcon(GUIIcon::MODETYPE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_T_MODE_TLS_TYPE);
717 typeDistributionMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
718 TL("TypeDistribution"), "U", TL("Create and edit type distributions."),
720 stopMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
721 TL("Stop"), "A", TL("Create stops."),
723 personMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
724 TL("Person"), "P", TL("Create persons."),
725 GUIIconSubSys::getIcon(GUIIcon::MODEPERSON), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_P_MODE_POLYGON_PERSON);
726 personPlanMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
727 TL("Person plan"), "L", TL("Create person plans."),
728 GUIIconSubSys::getIcon(GUIIcon::MODEPERSONPLAN), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_L_MODE_PERSONPLAN);
729 containerMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
730 TL("Container"), "C", TL("Create containers."),
731 GUIIconSubSys::getIcon(GUIIcon::MODECONTAINER), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_C_MODE_CONNECT_CONTAINER);
732 containerPlanMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
733 TL("Container plan"), "H", TL("Create container plans."),
735}
736
737// ---------------------------------------------------------------------------
738// GNEApplicationWindowHelper::ModesMenuCommands::DataMenuCommands - methods
739// ---------------------------------------------------------------------------
740
742 myModesMenuCommandsParent(modesMenuCommandsParent) {
743}
744
745
746void
748 edgeData->show();
749 edgeRelData->show();
750 TAZRelData->show();
751 meanData->show();
752}
753
754
755void
757 edgeData->hide();
758 edgeRelData->hide();
759 TAZRelData->hide();
760 meanData->hide();
761}
762
763
764void
766 // build every FXMenuCommand giving it a shortcut
767 edgeData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
768 TL("&EdgeData"), "E", TL("Create edgeData elements."),
769 GUIIconSubSys::getIcon(GUIIcon::MODEEDGEDATA), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_E_MODE_EDGE_EDGEDATA);
770 edgeRelData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
771 TL("Edge&Relation"), "R", TL("Create edgeRelation elements."),
773 TAZRelData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
774 TL("TA&ZRelation"), "Z", TL("Create TAZRelation elements."),
775 GUIIconSubSys::getIcon(GUIIcon::MODETAZRELDATA), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_Z_MODE_TAZ_TAZREL);
776 meanData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
777 TL("&MeanData"), "M", TL("Create MeanData edge/lanes."),
778 GUIIconSubSys::getIcon(GUIIcon::MODEMEANDATA), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_M_MODE_MOVE_MEANDATA);
779}
780
781
782// ---------------------------------------------------------------------------
783// GNEApplicationWindowHelper::ModesMenuCommands - methods
784// ---------------------------------------------------------------------------
785#ifdef _MSC_VER
786#pragma warning(push)
787#pragma warning(disable: 4355) // mask warning about "this" in initializers
788#endif
796#ifdef _MSC_VER
797#pragma warning(pop)
798#endif
799
800
801void
803 commonMenuCommands.buildCommonMenuCommands(modesMenu);
804 // build Network modes commands and hide it
805 networkMenuCommands.buildNetworkMenuCommands(modesMenu);
806 networkMenuCommands.hideNetworkMenuCommands();
807 // build Demand Modes commands
808 demandMenuCommands.buildDemandMenuCommands(modesMenu);
809 demandMenuCommands.hideDemandMenuCommands();
810 // build Data Modes commands
811 dataMenuCommands.buildDataMenuCommands(modesMenu);
812 dataMenuCommands.hideDataMenuCommands();
813}
814
815
816void
818 if (supermode == Supermode::NETWORK) {
819 networkMenuCommands.showNetworkMenuCommands();
820 } else if (supermode == Supermode::DEMAND) {
821 demandMenuCommands.showDemandMenuCommands();
822 } else if (supermode == Supermode::DATA) {
823 dataMenuCommands.showDataMenuCommands();
824 }
825}
826
827
828void
830 if (supermode == Supermode::NETWORK) {
831 networkMenuCommands.connectMode->hide();
832 networkMenuCommands.TLSMode->hide();
833 networkMenuCommands.prohibitionMode->hide();
834 networkMenuCommands.wireMode->hide();
835 networkMenuCommands.decalMode->hide();
836 } else if (supermode == Supermode::DEMAND) {
837 demandMenuCommands.moveMode->hide();
838 demandMenuCommands.vehicleMode->hide();
839 demandMenuCommands.stopMode->hide();
840 demandMenuCommands.containerMode->hide();
841 demandMenuCommands.containerPlanMode->hide();
842 } else if (supermode == Supermode::DATA) {
843 dataMenuCommands.hideDataMenuCommands();
844 }
845}
846
847// ---------------------------------------------------------------------------
848// GNEApplicationWindowHelper::EditMenuCommands::NetworkViewOptions - methods
849// ---------------------------------------------------------------------------
850
852 myApplicationWindow(applicationWindow) {
853}
854
855
856void
858 // create menu checks
859 menuCheckToggleGrid = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
860 TL("Show grid"), "Ctrl+G or Alt+1", "",
863
864 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
865 TL("Hide junction shape"), "Ctrl+J or Alt+2", "",
868
869 menuCheckDrawSpreadVehicles = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
870 TL("Draw vehicles spread in lane or in depart position"), "Alt+3", "",
873
874 menuCheckShowDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
875 TL("Show demand elements"), "Alt+4", "",
878
879 menuCheckSelectEdges = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
880 TL("Clicking should target lanes"), "Alt+5", "",
883
884 menuCheckShowConnections = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
885 TL("Show connections over junctions"), "Alt+6", "",
888
889 menuCheckHideConnections = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
890 TL("Hide connections"), "Alt+7", "",
893
894 menuCheckShowAdditionalSubElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
895 TL("Show sub-additional elements"), "Alt+8", "",
898
899 menuCheckShowTAZElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
900 TL("Show TAZ elements"), "Alt+9", "",
903
904 menuCheckExtendSelection = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
905 TL("Selecting multiple edges automatically select their junctions"), "Alt+10", "",
908
909 menuCheckChangeAllPhases = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
910 TL("Clicking should apply state changes to all phases of TLS plan"), "Alt+5", "",
913
914 menuCheckMergeAutomatically = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
915 TL("Don't ask for confirmation before merging junction"), "Alt+5", "",
918
919 menuCheckChainEdges = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
920 TL("Create consecutive edges"), "Alt+5", "",
923
924 menuCheckAutoOppositeEdge = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
925 TL("Create an edge in the opposite direction"), "Alt+6", "",
928
929 menuCheckMoveElevation = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
930 TL("Apply mouse movement to elevation"), "Alt+7", "",
933
934 menuCheckShowJunctionBubble = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
935 TL("Show bubbles over junctions shapes"), "Alt+8", "",
938
939 // build separator
940 separator = new FXMenuSeparator(editMenu);
941}
942
943
944void
946 menuCheckToggleGrid->hide();
947 menuCheckToggleDrawJunctionShape->hide();
948 menuCheckDrawSpreadVehicles->hide();
949 menuCheckShowDemandElements->hide();
950 menuCheckSelectEdges->hide();
951 menuCheckShowConnections->hide();
952 menuCheckHideConnections->hide();
953 menuCheckShowAdditionalSubElements->hide();
954 menuCheckShowTAZElements->hide();
955 menuCheckExtendSelection->hide();
956 menuCheckChangeAllPhases->hide();
957 menuCheckMergeAutomatically->hide();
958 menuCheckShowJunctionBubble->hide();
959 menuCheckMoveElevation->hide();
960 menuCheckChainEdges->hide();
961 menuCheckAutoOppositeEdge->hide();
962 separator->hide();
963}
964
965
966void
968 int index = 2;
969 // update all accel text
970 if (menuCheckDrawSpreadVehicles->shown()) {
971 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
972 index++;
973 }
974 if (menuCheckDrawSpreadVehicles->shown()) {
975 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
976 index++;
977 }
978 if (menuCheckShowDemandElements->shown()) {
979 menuCheckShowDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
980 index++;
981 }
982 if (menuCheckSelectEdges->shown()) {
983 menuCheckSelectEdges->setAccelText(("Alt+" + toString(index)).c_str());
984 index++;
985 }
986 if (menuCheckShowConnections->shown()) {
987 menuCheckShowConnections->setAccelText(("Alt+" + toString(index)).c_str());
988 index++;
989 }
990 if (menuCheckHideConnections->shown()) {
991 menuCheckHideConnections->setAccelText(("Alt+" + toString(index)).c_str());
992 index++;
993 }
994 if (menuCheckShowAdditionalSubElements->shown()) {
995 menuCheckShowAdditionalSubElements->setAccelText(("Alt+" + toString(index)).c_str());
996 index++;
997 }
998 if (menuCheckShowTAZElements->shown()) {
999 menuCheckShowTAZElements->setAccelText(("Alt+" + toString(index)).c_str());
1000 index++;
1001 }
1002 if (menuCheckExtendSelection->shown()) {
1003 menuCheckExtendSelection->setAccelText(("Alt+" + toString(index)).c_str());
1004 index++;
1005 }
1006 if (menuCheckChangeAllPhases->shown()) {
1007 menuCheckChangeAllPhases->setAccelText(("Alt+" + toString(index)).c_str());
1008 index++;
1009 }
1010 if (menuCheckMergeAutomatically->shown()) {
1011 menuCheckMergeAutomatically->setAccelText(("Alt+" + toString(index)).c_str());
1012 index++;
1013 }
1014 if (menuCheckChainEdges->shown()) {
1015 menuCheckChainEdges->setAccelText(("Alt+" + toString(index)).c_str());
1016 index++;
1017 }
1018 if (menuCheckAutoOppositeEdge->shown()) {
1019 menuCheckAutoOppositeEdge->setAccelText(("Alt+" + toString(index)).c_str());
1020 index++;
1021 }
1022 if (menuCheckMoveElevation->shown()) {
1023 menuCheckMoveElevation->setAccelText(("Alt+" + toString(index)).c_str());
1024 index++;
1025 }
1026 if (menuCheckShowJunctionBubble->shown()) {
1027 menuCheckShowJunctionBubble->setAccelText(("Alt+" + toString(index)).c_str());
1028 index++;
1029 }
1030}
1031
1032// ---------------------------------------------------------------------------
1033// GNEApplicationWindowHelper::DemandViewOptions - methods
1034// ---------------------------------------------------------------------------
1035
1039
1040
1041void
1043 // create menu checks
1044 menuCheckToggleGrid = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1045 TL("Show grid"), "Ctrl+G or Alt+1", "",
1048
1049 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1050 TL("Hide junction shape"), "Ctrl+J or Alt+2", "",
1053
1054 menuCheckDrawSpreadVehicles = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1055 TL("Draw vehicles spread/depart position"), "Alt+3", "",
1058
1059 menuCheckHideShapes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1060 TL("Show shapes"), "Alt+4", "",
1063
1064 menuCheckShowAllTrips = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1065 TL("Show all trips"), "Alt+5", "",
1068
1069 menuCheckShowAllPersonPlans = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1070 TL("Show all person plans"), "Alt+6", "",
1073
1074 menuCheckLockPerson = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1075 TL("Lock selected person"), "Alt+7", "",
1078
1079 menuCheckShowAllContainerPlans = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1080 TL("Show all container plans"), "Alt+6", "",
1083
1084 menuCheckLockContainer = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1085 TL("Lock selected container"), "Alt+7", "",
1088
1089 menuCheckHideNonInspectedDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1090 TL("Show non-inspected demand elements"), "Alt+8", "",
1093
1094 menuCheckShowOverlappedRoutes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1095 TL("Show number of overlapped routes"), "Alt+9", "",
1098
1099 // build separator
1100 separator = new FXMenuSeparator(editMenu);
1101}
1102
1103
1104void
1106 menuCheckToggleGrid->hide();
1107 menuCheckToggleDrawJunctionShape->hide();
1108 menuCheckDrawSpreadVehicles->hide();
1109 menuCheckHideShapes->hide();
1110 menuCheckShowAllTrips->hide();
1111 menuCheckHideNonInspectedDemandElements->hide();
1112 menuCheckShowOverlappedRoutes->hide();
1113 menuCheckShowAllPersonPlans->hide();
1114 menuCheckLockPerson->hide();
1115 menuCheckShowAllContainerPlans->hide();
1116 menuCheckLockContainer->hide();
1117 separator->hide();
1118}
1119
1120
1121void
1123 int index = 2;
1124 // update all accel text
1125 if (menuCheckDrawSpreadVehicles->shown()) {
1126 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
1127 index++;
1128 }
1129 if (menuCheckHideShapes->shown()) {
1130 menuCheckHideShapes->setAccelText(("Alt+" + toString(index)).c_str());
1131 index++;
1132 }
1133 if (menuCheckShowAllTrips->shown()) {
1134 menuCheckShowAllTrips->setAccelText(("Alt+" + toString(index)).c_str());
1135 index++;
1136 }
1137 if (menuCheckHideNonInspectedDemandElements->shown()) {
1138 menuCheckHideNonInspectedDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
1139 index++;
1140 }
1141 if (menuCheckShowOverlappedRoutes->shown()) {
1142 menuCheckShowOverlappedRoutes->setAccelText(("Alt+" + toString(index)).c_str());
1143 index++;
1144 }
1145 if (menuCheckShowAllPersonPlans->shown()) {
1146 menuCheckShowAllPersonPlans->setAccelText(("Alt+" + toString(index)).c_str());
1147 index++;
1148 }
1149 if (menuCheckLockPerson->shown()) {
1150 menuCheckLockPerson->setAccelText(("Alt+" + toString(index)).c_str());
1151 index++;
1152 }
1153 if (menuCheckShowAllContainerPlans->shown()) {
1154 menuCheckShowAllContainerPlans->setAccelText(("Alt+" + toString(index)).c_str());
1155 index++;
1156 }
1157 if (menuCheckLockContainer->shown()) {
1158 menuCheckLockContainer->setAccelText(("Alt+" + toString(index)).c_str());
1159 index++;
1160 }
1161}
1162
1163// ---------------------------------------------------------------------------
1164// GNEApplicationWindowHelper::EditMenuCommands::DataViewOptions - methods
1165// ---------------------------------------------------------------------------
1166
1170
1171
1172void
1174 // create menu checks
1175 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1176 TL("Hide junction shape"), "Ctrl+J or Alt+1", "",
1179
1180 menuCheckShowAdditionals = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1181 TL("Show additionals"), "Alt+2", "",
1184
1185 menuCheckShowShapes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1186 TL("Show shapes"), "Alt+3", "",
1189
1190 menuCheckShowDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1191 TL("Show demand elements"), "Alt+4", "",
1194
1195 menuCheckToggleTAZRelDrawing = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1196 TL("Draw TAZRel from center"), "Alt+5", "",
1199
1200 menuCheckToggleTAZDrawFill = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1201 TL("Draw TAZ fill"), "Alt+6", "",
1204
1205 menuCheckToggleTAZRelOnlyFrom = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1206 TL("Only draw TAZRel from"), "Alt+6", "",
1209
1210 menuCheckToggleTAZRelOnlyTo = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1211 TL("Only draw TAZRel to"), "Alt+7", "",
1214 // build separator
1215 separator = new FXMenuSeparator(editMenu);
1216}
1217
1218
1219void
1221 menuCheckToggleDrawJunctionShape->hide();
1222 menuCheckShowAdditionals->hide();
1223 menuCheckShowShapes->hide();
1224 menuCheckShowDemandElements->hide();
1225 menuCheckToggleTAZRelDrawing->hide();
1226 menuCheckToggleTAZDrawFill->hide();
1227 menuCheckToggleTAZRelOnlyFrom->hide();
1228 menuCheckToggleTAZRelOnlyTo->hide();
1229 separator->hide();
1230}
1231
1232
1233void
1235 int index = 2;
1236 // update all accel text
1237 if (menuCheckShowAdditionals->shown()) {
1238 menuCheckShowAdditionals->setAccelText(("Alt+" + toString(index)).c_str());
1239 index++;
1240 }
1241 if (menuCheckShowShapes->shown()) {
1242 menuCheckShowShapes->setAccelText(("Alt+" + toString(index)).c_str());
1243 index++;
1244 }
1245 if (menuCheckShowDemandElements->shown()) {
1246 menuCheckShowDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
1247 index++;
1248 }
1249 if (menuCheckToggleTAZRelDrawing->shown()) {
1250 menuCheckToggleTAZRelDrawing->setAccelText(("Alt+" + toString(index)).c_str());
1251 index++;
1252 }
1253 if (menuCheckToggleTAZDrawFill->shown()) {
1254 menuCheckToggleTAZDrawFill->setAccelText(("Alt+" + toString(index)).c_str());
1255 index++;
1256 }
1257 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
1258 menuCheckToggleTAZRelOnlyFrom->setAccelText(("Alt+" + toString(index)).c_str());
1259 index++;
1260 }
1261 if (menuCheckToggleTAZRelOnlyTo->shown()) {
1262 menuCheckToggleTAZRelOnlyTo->setAccelText(("Alt+" + toString(index)).c_str());
1263 index++;
1264 }
1265}
1266
1267// ---------------------------------------------------------------------------
1268// GNEApplicationWindowHelper::EditMenuCommands - methods
1269// ---------------------------------------------------------------------------
1270
1272 networkViewOptions(applicationWindow),
1273 demandViewOptions(applicationWindow),
1274 dataViewOptions(applicationWindow),
1275 myApplicationWindow(applicationWindow) {
1276}
1277
1278
1279void
1281 // build undo/redo command
1282 undoLastChange = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1283 TL("Undo"), "Ctrl+Z", TL("Undo the last change."),
1285 redoLastChange = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1286 TL("Redo"), "Ctrl+Y", TL("Redo the last change."),
1288 openUndolistDialog = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1289 TL("Show undo/redo history"), "", TL("Open undo/redo history dialog."),
1291 // add checkBox for recomputing in data mode
1292 menuCheckAllowUndoRedo = GUIDesigns::buildFXMenuCheckbox(editMenu,
1293 TL("Allow undo-redo"), "",
1294 myApplicationWindow, MID_GNE_TOGGLE_UNDOREDO);
1295 menuCheckAllowUndoRedo->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "AllowUndoRedo", true));
1296}
1297
1298
1299void
1301 // build rest of menu commands
1302 editViewScheme = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1303 TL("Edit Visualisation"), "F9", TL("Opens a dialog for editing visualization settings."),
1305 editViewPort = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1306 TL("Edit Viewport"), "Ctrl+I", TL("Opens a dialog for editing viewing area, zoom and rotation."),
1308}
1309
1310
1311void
1313 // build toggle front element
1314 toggleFrontElement = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1315 TL("Front element"), "F11", TL("Mark current inspected element as front element"),
1317}
1318
1319
1320void
1322 // add open in sumo options
1323 loadAdditionalsInSUMOGUI = GUIDesigns::buildFXMenuCheckbox(editMenu,
1324 TL("Load additionals in sumo-gui"), TL("Load additionals in sumo-gui."),
1325 myApplicationWindow, MID_TOOLBAREDIT_LOADADDITIONALS);
1326 loadAdditionalsInSUMOGUI->setCheck(TRUE);
1327 loadDemandInSUMOGUI = GUIDesigns::buildFXMenuCheckbox(editMenu,
1328 TL("Load demand in sumo-gui"), TL("Load demand in sumo-gui."),
1329 myApplicationWindow, MID_TOOLBAREDIT_LOADDEMAND);
1330 loadDemandInSUMOGUI->setCheck(TRUE);
1331 openInSUMOGUI = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1332 TL("Open in sumo-gui"), "Ctrl+T", TL("Opens the sumo-gui application with the current network."),
1334}
1335
1336// ---------------------------------------------------------------------------
1337// GNEApplicationWindowHelper::LockMenuCommands - methods
1338// ---------------------------------------------------------------------------
1339
1341 myApplicationWindow(applicationWindow) {
1342}
1343
1344
1345void
1347 // network
1348 menuCheckLockJunctions = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1349 TL("&Junctions"), "", "",
1351 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1352
1353 menuCheckLockEdges = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1354 TL("&Edges"), "", "",
1356 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1357
1358 menuCheckLockLanes = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1359 TL("&Lanes"), "", "",
1361 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1362
1363 menuCheckLockConnections = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1364 TL("&Connections"), "", "",
1366 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1367
1368 menuCheckLockCrossings = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1369 TL("C&rossings"), "", "",
1371 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1372
1373 menuCheckLockWalkingAreas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1374 TL("Walkin&gAreas"), "", "",
1376 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1377
1378 menuCheckLockAdditionals = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1379 TL("&Additionals"), "", "",
1381 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1382
1383 menuCheckLockTAZs = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1384 TL("&TAZs"), "", "",
1386 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1387
1388 menuCheckLockWires = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1389 TL("&Wires"), "", "",
1391 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1392
1393 menuCheckLockPolygons = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1394 TL("&Polygons"), "", "",
1396 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1397
1398 menuCheckLockPOIs = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1399 TL("P&OIs"), "", "",
1401 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1402
1403 menuCheckLockJpsWalkableAreas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1404 TL("WalkableAreas"), "", "",
1406 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1407
1408 menuCheckLockJpsObstacles = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1409 TL("Obstacles"), "", "",
1411 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1412 // demand
1413 menuCheckLockRoutes = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1414 TL("&Routes"), "", "",
1416 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1417
1418 menuCheckLockVehicles = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1419 TL("&Vehicles"), "", "",
1421 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1422
1423 menuCheckLockPersons = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1424 TL("&Persons"), "", "",
1426 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1427
1428 menuCheckLockPersonTrips = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1429 TL("Person&Trips"), "", "",
1431 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1432
1433 menuCheckLockWalks = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1434 TL("&Walks"), "", "",
1436 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1437
1438 menuCheckLockRides = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1439 TL("Ri&des"), "", "",
1441 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1442
1443 menuCheckLockContainers = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1444 TL("&Containers"), "", "",
1446 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1447
1448 menuCheckLockTransports = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1449 TL("Tra&nsports"), "", "",
1451 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1452
1453 menuCheckLockTranships = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1454 TL("Trans&hips"), "", "",
1456 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1457
1458 menuCheckLockStops = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1459 TL("Stop&s"), "", "",
1461 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1462 // data
1463 menuCheckLockEdgeDatas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1464 TL("&EdgeDatas"), "", "",
1466 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1467
1468 menuCheckLockEdgeRelDatas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1469 TL("E&dgeRelDatas"), "", "",
1471 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1472
1473 menuCheckLockEdgeTAZRels = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1474 TL("Edge&TAZRel"), "", "",
1476 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1477
1478 // separator
1479 new FXMenuSeparator(fileMenu);
1480
1481 menuCheckLockSelectedElements = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1482 TL("Lock selected elements"), "", TL("selected elements"),
1484
1485 // separator
1486 new FXMenuSeparator(fileMenu);
1487
1489 TL("Lock all elements"), "", TL("all elements"),
1491
1493 TL("Unlock all elements"), "", TL("Unlock all elements"),
1495}
1496
1497
1498void
1500 // network
1501 menuCheckLockJunctions->remHotKey(parseHotKey('j'));
1502 menuCheckLockEdges->remHotKey(parseHotKey('e'));
1503 menuCheckLockLanes->remHotKey(parseHotKey('l'));
1504 menuCheckLockConnections->remHotKey(parseHotKey('c'));
1505 menuCheckLockCrossings->remHotKey(parseHotKey('r'));
1506 menuCheckLockWalkingAreas->remHotKey(parseHotKey('g'));
1507 menuCheckLockAdditionals->remHotKey(parseHotKey('a'));
1508 menuCheckLockTAZs->remHotKey(parseHotKey('t'));
1509 menuCheckLockWires->remHotKey(parseHotKey('w'));
1510 menuCheckLockPolygons->remHotKey(parseHotKey('p'));
1511 menuCheckLockPOIs->remHotKey(parseHotKey('o'));
1512 menuCheckLockJpsWalkableAreas->remHotKey(parseHotKey('n'));
1513 menuCheckLockJpsObstacles->remHotKey(parseHotKey('b'));
1514 // demand
1515 menuCheckLockRoutes->remHotKey(parseHotKey('r'));
1516 menuCheckLockVehicles->remHotKey(parseHotKey('v'));
1517 menuCheckLockPersons->remHotKey(parseHotKey('p'));
1518 menuCheckLockPersonTrips->remHotKey(parseHotKey('t'));
1519 menuCheckLockWalks->remHotKey(parseHotKey('w'));
1520 menuCheckLockRides->remHotKey(parseHotKey('d'));
1521 menuCheckLockContainers->remHotKey(parseHotKey('c'));
1522 menuCheckLockTransports->remHotKey(parseHotKey('n'));
1523 menuCheckLockTranships->remHotKey(parseHotKey('h'));
1524 menuCheckLockStops->remHotKey(parseHotKey('s'));
1525 // data
1526 menuCheckLockEdgeDatas->remHotKey(parseHotKey('e'));
1527 menuCheckLockEdgeRelDatas->remHotKey(parseHotKey('d'));
1528 menuCheckLockEdgeTAZRels->remHotKey(parseHotKey('t'));
1529}
1530
1531void
1533 // first enable menu commands
1534 menuCheckLockJunctions->enable();
1535 menuCheckLockEdges->enable();
1536 menuCheckLockLanes->enable();
1537 menuCheckLockConnections->enable();
1538 menuCheckLockCrossings->enable();
1539 menuCheckLockWalkingAreas->enable();
1540 menuCheckLockAdditionals->enable();
1541 menuCheckLockTAZs->enable();
1542 menuCheckLockWires->enable();
1543 menuCheckLockPolygons->enable();
1544 menuCheckLockPOIs->enable();
1545 menuCheckLockJpsWalkableAreas->enable();
1546 menuCheckLockJpsObstacles->enable();
1547 // set accels
1548 menuCheckLockJunctions->addHotKey(parseHotKey('j'));
1549 menuCheckLockEdges->addHotKey(parseHotKey('e'));
1550 menuCheckLockLanes->addHotKey(parseHotKey('l'));
1551 menuCheckLockConnections->addHotKey(parseHotKey('c'));
1552 menuCheckLockCrossings->addHotKey(parseHotKey('r'));
1553 menuCheckLockWalkingAreas->addHotKey(parseHotKey('g'));
1554 menuCheckLockAdditionals->addHotKey(parseHotKey('a'));
1555 menuCheckLockTAZs->addHotKey(parseHotKey('t'));
1556 menuCheckLockWires->addHotKey(parseHotKey('w'));
1557 menuCheckLockPolygons->addHotKey(parseHotKey('p'));
1558 menuCheckLockPOIs->addHotKey(parseHotKey('o'));
1559 menuCheckLockJpsWalkableAreas->addHotKey(parseHotKey('n'));
1560 menuCheckLockJpsObstacles->addHotKey(parseHotKey('b'));
1561 // now show it
1562 menuCheckLockJunctions->show();
1563 menuCheckLockEdges->show();
1564 menuCheckLockLanes->show();
1565 menuCheckLockConnections->show();
1566 menuCheckLockCrossings->show();
1567 menuCheckLockWalkingAreas->show();
1568 menuCheckLockAdditionals->show();
1569 menuCheckLockTAZs->show();
1570 menuCheckLockWires->show();
1571 menuCheckLockPolygons->show();
1572 menuCheckLockPOIs->show();
1573 menuCheckLockJpsWalkableAreas->show();
1574 menuCheckLockJpsObstacles->show();
1575}
1576
1577
1578void
1580 // first disable menu commands
1581 menuCheckLockJunctions->disable();
1582 menuCheckLockEdges->disable();
1583 menuCheckLockLanes->disable();
1584 menuCheckLockConnections->disable();
1585 menuCheckLockCrossings->disable();
1586 menuCheckLockWalkingAreas->disable();
1587 menuCheckLockAdditionals->disable();
1588 menuCheckLockTAZs->disable();
1589 menuCheckLockPolygons->disable();
1590 menuCheckLockPOIs->disable();
1591 menuCheckLockJpsWalkableAreas->disable();
1592 menuCheckLockJpsObstacles->disable();
1593 // now hide it
1594 menuCheckLockJunctions->hide();
1595 menuCheckLockEdges->hide();
1596 menuCheckLockLanes->hide();
1597 menuCheckLockConnections->hide();
1598 menuCheckLockCrossings->hide();
1599 menuCheckLockWalkingAreas->hide();
1600 menuCheckLockAdditionals->hide();
1601 menuCheckLockTAZs->hide();
1602 menuCheckLockWires->hide();
1603 menuCheckLockPolygons->hide();
1604 menuCheckLockPOIs->hide();
1605 menuCheckLockJpsWalkableAreas->hide();
1606 menuCheckLockJpsObstacles->hide();
1607}
1608
1609
1610void
1612 // first enable menu commands
1613 menuCheckLockRoutes->enable();
1614 menuCheckLockVehicles->enable();
1615 menuCheckLockPersons->enable();
1616 menuCheckLockPersonTrips->enable();
1617 menuCheckLockWalks->enable();
1618 menuCheckLockRides->enable();
1619 menuCheckLockContainers->enable();
1620 menuCheckLockTransports->enable();
1621 menuCheckLockTranships->enable();
1622 menuCheckLockStops->enable();
1623 // set accels
1624 menuCheckLockRoutes->addHotKey(parseHotKey('r'));
1625 menuCheckLockVehicles->addHotKey(parseHotKey('v'));
1626 menuCheckLockPersons->addHotKey(parseHotKey('p'));
1627 menuCheckLockPersonTrips->addHotKey(parseHotKey('t'));
1628 menuCheckLockWalks->addHotKey(parseHotKey('w'));
1629 menuCheckLockRides->addHotKey(parseHotKey('d'));
1630 menuCheckLockContainers->addHotKey(parseHotKey('c'));
1631 menuCheckLockTransports->addHotKey(parseHotKey('n'));
1632 menuCheckLockTranships->addHotKey(parseHotKey('h'));
1633 menuCheckLockStops->addHotKey(parseHotKey('s'));
1634 // now show it
1635 menuCheckLockRoutes->show();
1636 menuCheckLockVehicles->show();
1637 menuCheckLockPersons->show();
1638 menuCheckLockPersonTrips->show();
1639 menuCheckLockWalks->show();
1640 menuCheckLockRides->show();
1641 menuCheckLockContainers->show();
1642 menuCheckLockTransports->show();
1643 menuCheckLockTranships->show();
1644 menuCheckLockStops->show();
1645}
1646
1647
1648void
1650 // first disable menu commands
1651 menuCheckLockRoutes->disable();
1652 menuCheckLockVehicles->disable();
1653 menuCheckLockPersons->disable();
1654 menuCheckLockPersonTrips->disable();
1655 menuCheckLockWalks->disable();
1656 menuCheckLockRides->disable();
1657 menuCheckLockContainers->disable();
1658 menuCheckLockTransports->disable();
1659 menuCheckLockTranships->disable();
1660 menuCheckLockStops->disable();
1661 // now hide it
1662 menuCheckLockRoutes->hide();
1663 menuCheckLockVehicles->hide();
1664 menuCheckLockPersons->hide();
1665 menuCheckLockPersonTrips->hide();
1666 menuCheckLockWalks->hide();
1667 menuCheckLockRides->hide();
1668 menuCheckLockContainers->hide();
1669 menuCheckLockTransports->hide();
1670 menuCheckLockTranships->hide();
1671 menuCheckLockStops->hide();
1672}
1673
1674
1675void
1677 // first enable menu commands
1678 menuCheckLockEdgeDatas->enable();
1679 menuCheckLockEdgeRelDatas->enable();
1680 menuCheckLockEdgeTAZRels->enable();
1681 // set accels
1682 menuCheckLockEdgeDatas->addHotKey(parseHotKey('e'));
1683 menuCheckLockEdgeRelDatas->addHotKey(parseHotKey('d'));
1684 menuCheckLockEdgeTAZRels->addHotKey(parseHotKey('t'));
1685 // now show it
1686 menuCheckLockEdgeDatas->show();
1687 menuCheckLockEdgeRelDatas->show();
1688 menuCheckLockEdgeTAZRels->show();
1689}
1690
1691
1692void
1694 // first disable menu commands
1695 menuCheckLockEdgeDatas->disable();
1696 menuCheckLockEdgeRelDatas->disable();
1697 menuCheckLockEdgeTAZRels->disable();
1698 // now hide it
1699 menuCheckLockEdgeDatas->hide();
1700 menuCheckLockEdgeRelDatas->hide();
1701 menuCheckLockEdgeTAZRels->hide();
1702}
1703
1704
1705void
1707 menuCheckLockJunctions->setCheck(TRUE);
1708 menuCheckLockEdges->setCheck(TRUE);
1709 menuCheckLockLanes->setCheck(TRUE);
1710 menuCheckLockConnections->setCheck(TRUE);
1711 menuCheckLockCrossings->setCheck(TRUE);
1712 menuCheckLockWalkingAreas->setCheck(TRUE);
1713 menuCheckLockAdditionals->setCheck(TRUE);
1714 menuCheckLockTAZs->setCheck(TRUE);
1715 menuCheckLockWires->setCheck(TRUE);
1716 menuCheckLockPolygons->setCheck(TRUE);
1717 menuCheckLockPOIs->setCheck(TRUE);
1718 menuCheckLockJpsWalkableAreas->setCheck(TRUE);
1719 menuCheckLockJpsObstacles->setCheck(TRUE);
1720 menuCheckLockRoutes->setCheck(TRUE);
1721 menuCheckLockVehicles->setCheck(TRUE);
1722 menuCheckLockPersons->setCheck(TRUE);
1723 menuCheckLockPersonTrips->setCheck(TRUE);
1724 menuCheckLockWalks->setCheck(TRUE);
1725 menuCheckLockRides->setCheck(TRUE);
1726 menuCheckLockContainers->setCheck(TRUE);
1727 menuCheckLockTransports->setCheck(TRUE);
1728 menuCheckLockTranships->setCheck(TRUE);
1729 menuCheckLockStops->setCheck(TRUE);
1730 menuCheckLockEdgeDatas->setCheck(TRUE);
1731 menuCheckLockEdgeRelDatas->setCheck(TRUE);
1732 menuCheckLockEdgeTAZRels->setCheck(TRUE);
1733}
1734
1735
1736void
1738 menuCheckLockJunctions->setCheck(FALSE);
1739 menuCheckLockEdges->setCheck(FALSE);
1740 menuCheckLockLanes->setCheck(FALSE);
1741 menuCheckLockConnections->setCheck(FALSE);
1742 menuCheckLockCrossings->setCheck(FALSE);
1743 menuCheckLockWalkingAreas->setCheck(FALSE);
1744 menuCheckLockAdditionals->setCheck(FALSE);
1745 menuCheckLockTAZs->setCheck(FALSE);
1746 menuCheckLockWires->setCheck(FALSE);
1747 menuCheckLockPolygons->setCheck(FALSE);
1748 menuCheckLockPOIs->setCheck(FALSE);
1749 menuCheckLockJpsWalkableAreas->setCheck(FALSE);
1750 menuCheckLockJpsObstacles->setCheck(FALSE);
1751 menuCheckLockRoutes->setCheck(FALSE);
1752 menuCheckLockVehicles->setCheck(FALSE);
1753 menuCheckLockPersons->setCheck(FALSE);
1754 menuCheckLockPersonTrips->setCheck(FALSE);
1755 menuCheckLockWalks->setCheck(FALSE);
1756 menuCheckLockRides->setCheck(FALSE);
1757 menuCheckLockContainers->setCheck(FALSE);
1758 menuCheckLockTransports->setCheck(FALSE);
1759 menuCheckLockTranships->setCheck(FALSE);
1760 menuCheckLockStops->setCheck(FALSE);
1761 menuCheckLockEdgeDatas->setCheck(FALSE);
1762 menuCheckLockEdgeRelDatas->setCheck(FALSE);
1763 menuCheckLockEdgeTAZRels->setCheck(FALSE);
1764}
1765
1766
1767void
1769 // check elements
1770 if (AC->getTagProperty()->getTag() == SUMO_TAG_JUNCTION) {
1771 menuCheckLockJunctions->setCheck(value);
1772 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_EDGE) {
1773 menuCheckLockEdges->setCheck(value);
1774 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_LANE) {
1775 menuCheckLockLanes->setCheck(value);
1776 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_CONNECTION) {
1777 menuCheckLockConnections->setCheck(value);
1778 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_CROSSING) {
1779 menuCheckLockCrossings->setCheck(value);
1780 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_WALKINGAREA) {
1781 menuCheckLockWalkingAreas->setCheck(value);
1782 } else if (AC->getTagProperty()->isAdditionalElement()) {
1783 menuCheckLockAdditionals->setCheck(value);
1784 } else if (AC->getTagProperty()->isTAZElement()) {
1785 menuCheckLockTAZs->setCheck(value);
1786 } else if (AC->getTagProperty()->isWireElement()) {
1787 menuCheckLockWires->setCheck(value);
1788 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_POLY) {
1789 menuCheckLockPolygons->setCheck(value);
1790 } else if (AC->getTagProperty()->getTag() == GNE_TAG_JPS_WALKABLEAREA) {
1791 menuCheckLockJpsWalkableAreas->setCheck(value);
1792 } else if (AC->getTagProperty()->getTag() == GNE_TAG_JPS_OBSTACLE) {
1793 menuCheckLockJpsObstacles->setCheck(value);
1794 } else if ((AC->getTagProperty()->getTag() == SUMO_TAG_POI) ||
1795 (AC->getTagProperty()->getTag() == GNE_TAG_POILANE) ||
1796 (AC->getTagProperty()->getTag() == GNE_TAG_POIGEO)) {
1797 menuCheckLockPOIs->setCheck(value);
1798 } else if (AC->getTagProperty()->isRoute()) {
1799 menuCheckLockRoutes->setCheck(value);
1800 } else if (AC->getTagProperty()->isVehicle()) {
1801 menuCheckLockVehicles->setCheck(value);
1802 } else if (AC->getTagProperty()->isPerson()) {
1803 menuCheckLockPersons->setCheck(value);
1804 } else if (AC->getTagProperty()->isPlanPersonTrip()) {
1805 menuCheckLockPersonTrips->setCheck(value);
1806 } else if (AC->getTagProperty()->isPlanWalk()) {
1807 menuCheckLockWalks->setCheck(value);
1808 } else if (AC->getTagProperty()->isPlanRide()) {
1809 menuCheckLockRides->setCheck(value);
1810 } else if (AC->getTagProperty()->isContainer()) {
1811 menuCheckLockContainers->setCheck(value);
1812 } else if (AC->getTagProperty()->isPlanTransport()) {
1813 menuCheckLockTransports->setCheck(value);
1814 } else if (AC->getTagProperty()->isPlanTranship()) {
1815 menuCheckLockTranships->setCheck(value);
1816 } else if (AC->getTagProperty()->isVehicleStop() ||
1819 menuCheckLockStops->setCheck(value);
1820 } else if (AC->getTagProperty()->getTag() == GNE_TAG_EDGEREL_SINGLE) {
1821 menuCheckLockEdgeDatas->setCheck(value);
1822 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_EDGEREL) {
1823 menuCheckLockEdgeRelDatas->setCheck(value);
1824 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_TAZREL) {
1825 menuCheckLockEdgeTAZRels->setCheck(value);
1826 }
1827}
1828
1829
1830FXHotKey
1832 FXuint code = 0, mods = 0;
1833 if (Unicode::isAlphaNumeric(character)) {
1834 mods = ALTMASK;
1835 code = fxucs2keysym(Unicode::toLower(character));
1836 }
1837 return MKUINT(code, mods);
1838}
1839
1840// ---------------------------------------------------------------------------
1841// GNEApplicationWindowHelper::ProcessingMenuCommands - methods
1842// ---------------------------------------------------------------------------
1843
1845 myApplicationWindow(applicationWindow) {
1846}
1847
1848
1849void
1851 // build network processing menu commands
1852 computeNetwork = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1853 TL("Compute Junctions"), "F5", TL("Compute junction shape and logic."),
1855 computeNetworkVolatile = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1856 TL("Compute Junctions with volatile options"), "Shift+F5", TL("Compute junction shape and logic using volatile junctions."),
1858 cleanJunctions = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1859 TL("Clean Junctions"), "F6", TL("Remove solitary junctions."),
1861 joinJunctions = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1862 TL("Join Selected Junctions"), "F7", TL("Join selected junctions into a single junction."),
1864 clearInvalidCrossings = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1865 TL("Clean invalid crossings"), "F8", TL("Clear invalid crossings."),
1867 // add separator for checkBox
1868 mySeparatorCheckBox = new FXMenuSeparator(processingMenu);
1869 // add checkBox for recomputing in data mode
1870 menuCheckRecomputeDataMode = GUIDesigns::buildFXMenuCheckboxIcon(processingMenu,
1871 TL("Recompute Network in Data Mode"), "", "",
1873 // set default value
1874 menuCheckRecomputeDataMode->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "RecomputeData", true));
1875 // build demand processing menu commands
1876 computeDemand = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1877 TL("Compute demand"), "F5", TL("Computes demand elements."),
1879 cleanRoutes = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1880 TL("Clean routes"), "F6", TL("Removes routes without vehicles."),
1882 joinRoutes = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1883 TL("Join routes"), "F7", TL("Joins routes with the same edges."),
1885 adjustPersonPlans = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1886 TL("Adjust person plans"), "Shift+F7", TL("Adjust person plans (start/end positions, arrival positions, etc.)"),
1888 clearInvalidDemandElements = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1889 TL("Clean invalid route elements"), "F8", TL("Clear elements with an invalid path (routes, Trips, Flows...)."),
1891 // add separator
1892 myOptionsSeparator = new FXMenuSeparator(processingMenu);
1893 // create optionmenus
1894 optionMenus = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1895 TL("Sumo options"), "Shift+F10", TL("Configure sumo Options."),
1897 // add separator
1898 myOptionsSeparator = new FXMenuSeparator(processingMenu);
1899 // create optionmenus
1900 optionMenus = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1901 TL("Options"), "F10", TL("Configure netedit Options."),
1903}
1904
1905
1906void
1908 // first enable menu commands
1909 computeNetwork->enable();
1910 computeNetworkVolatile->enable();
1911 cleanJunctions->enable();
1912 joinJunctions->enable();
1913 clearInvalidCrossings->enable();
1914 mySeparatorCheckBox->enable();
1915 menuCheckRecomputeDataMode->enable();
1916 // now show it
1917 computeNetwork->show();
1918 computeNetworkVolatile->show();
1919 cleanJunctions->show();
1920 joinJunctions->show();
1921 clearInvalidCrossings->show();
1922 mySeparatorCheckBox->show();
1923 menuCheckRecomputeDataMode->show();
1924}
1925
1926
1927void
1929 // first disable menu commands
1930 computeNetwork->disable();
1931 computeNetworkVolatile->disable();
1932 cleanJunctions->disable();
1933 joinJunctions->disable();
1934 clearInvalidCrossings->disable();
1935 // now hide it
1936 computeNetwork->hide();
1937 computeNetworkVolatile->hide();
1938 cleanJunctions->hide();
1939 joinJunctions->hide();
1940 clearInvalidCrossings->hide();
1941}
1942
1943
1944void
1946 // first enable menu commands
1947 computeDemand->enable();
1948 cleanRoutes->enable();
1949 joinRoutes->enable();
1950 adjustPersonPlans->enable();
1951 clearInvalidDemandElements->enable();
1952 // now show it
1953 computeDemand->show();
1954 cleanRoutes->show();
1955 joinRoutes->show();
1956 adjustPersonPlans->show();
1957 clearInvalidDemandElements->show();
1958}
1959
1960
1961void
1963 // first disable menu commands
1964 computeDemand->disable();
1965 cleanRoutes->disable();
1966 joinRoutes->disable();
1967 adjustPersonPlans->disable();
1968 clearInvalidDemandElements->disable();
1969 // now hide it
1970 computeDemand->hide();
1971 cleanRoutes->hide();
1972 joinRoutes->hide();
1973 adjustPersonPlans->hide();
1974 clearInvalidDemandElements->hide();
1975}
1976
1977
1978void
1982
1983
1984void
1988
1989
1990void
1994
1995
1996void
2000
2001// ---------------------------------------------------------------------------
2002// GNEApplicationWindowHelper::LocateMenuCommands - methods
2003// ---------------------------------------------------------------------------
2004
2006 myApplicationWindow(applicationWindow) {
2007}
2008
2009
2010void
2012 // build locate menu commands
2014 TL("&Junctions"), "Shift+J", TL("Open a dialog for locating a Junction."),
2017 TL("&Edges"), "Shift+E", TL("Open a dialog for locating an Edge."),
2020 TL("&WalkingAreas"), "Shift+W", TL("Open a dialog for locating a Walking Area."),
2023 TL("&Vehicles"), "Shift+V", TL("Open a dialog for locating a Vehicle."),
2026 TL("&Persons"), "Shift+P", TL("Open a dialog for locating a Person."),
2029 TL("&Containers"), "Shift+C", TL("Open a dialog for locating a Container."),
2032 TL("&Route"), "Shift+R", TL("Open a dialog for locating a Route."),
2035 TL("&Stops"), "Shift+S", TL("Open a dialog for locating a Stop."),
2038 TL("&TLS"), "Shift+T", TL("Open a dialog for locating a Traffic Light."),
2041 TL("&Additional"), "Shift+A", TL("Open a dialog for locating an Additional Structure."),
2044 TL("P&oI"), "Shift+O", TL("Open a dialog for locating a Point of Interest."),
2047 TL("Po&lygon"), "Shift+L", TL("Open a dialog for locating a Polygon."),
2049}
2050
2051// ---------------------------------------------------------------------------
2052// GNEApplicationWindowHelper::ToolsMenuCommands - methods
2053// ---------------------------------------------------------------------------
2054
2056 myApplicationWindow(applicationWindow) {
2057}
2058
2059
2061 // delete all tools
2062 for (const auto& tool : myPythonTools) {
2063 delete tool;
2064 }
2065}
2066
2067
2068void
2070 const std::map<std::string, FXMenuPane*>& menuPaneToolMaps) {
2071 // build tools from template
2072 // the templateTools vector is imported from templates.h (which only exists in the cmake-build folder)
2073 for (const auto& templateTool : templateTools) {
2074 if (templateTool.name == "netdiff") {
2075 myPythonTools.push_back(new GNENetDiffTool(myApplicationWindow, templateTool.pythonPath,
2076 menuPaneToolMaps.at(templateTool.subfolder)));
2077 } else if (menuPaneToolMaps.count(templateTool.subfolder) > 0) {
2078 myPythonTools.push_back(new GNEPythonTool(myApplicationWindow, templateTool.pythonPath,
2079 templateTool.templateStr, menuPaneToolMaps.at(templateTool.subfolder)));
2080 } else {
2081 myPythonTools.push_back(new GNEPythonTool(myApplicationWindow, templateTool.pythonPath,
2082 templateTool.templateStr, toolsMenu));
2083 }
2084 }
2085}
2086
2087
2088long
2090 // iterate over all tools and find menu command
2091 for (const auto& tool : myPythonTools) {
2092 if (tool->getMenuCommand() == menuCommand) {
2093 GNEPythonToolDialog(myApplicationWindow, tool);
2094 return 1;
2095 }
2096 }
2097 return 0;
2098}
2099
2100
2101long
2103 // iterate over all tools and find menu command
2104 for (const auto& tool : myPythonTools) {
2105 if (tool->getMenuCommand() == menuCommand) {
2106 GNERunPythonToolDialog(myApplicationWindow, tool);
2107 return 1;
2108 }
2109 }
2110 return 0;
2111}
2112
2113
2114long
2116 // iterate over all tools and find menu command
2117 for (const auto& tool : myPythonTools) {
2118 if (tool->getMenuCommand() == menuCommand) {
2119 // execute postProcessing
2120 tool->postProcessing();
2121 return 1;
2122 }
2123 }
2124 return 0;
2125}
2126
2127// ---------------------------------------------------------------------------
2128// GNEApplicationWindowHelper::WindowsMenuCommands - methods
2129// ---------------------------------------------------------------------------
2130
2132 myApplicationWindow(applicationWindow) {
2133}
2134
2135
2136void
2138 FXStatusBar* statusbar, GUIMessageWindow* messageWindow) {
2139 // build windows menu commands
2141 TL("Show Status Line"), TL("Toggle this Status Bar on/off."),
2142 statusbar, FXWindow::ID_TOGGLESHOWN);
2144 TL("Show Message Window"), TL("Toggle the Message Window on/off."),
2145 messageWindow, FXWindow::ID_TOGGLESHOWN);
2146 new FXMenuSeparator(windowsMenu);
2148 TL("Clear Message Window"), "", TL("Clear the Message Window."),
2150}
2151
2152// ---------------------------------------------------------------------------
2153// GNEApplicationWindowHelper::WindowsMenuCommands - methods
2154// ---------------------------------------------------------------------------
2155
2157 myApplicationWindow(applicationWindow) {
2158}
2159
2160
2161void
2163 // build windows menu commands
2164 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Online Documentation"), "F1", TL("Open Online documentation."),
2165 nullptr, myApplicationWindow, MID_HOTKEY_F1_ONLINEDOCUMENTATION);
2166 new FXMenuSeparator(helpMenu);
2167 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Changelog"), "", TL("Open Changelog."),
2168 nullptr, myApplicationWindow, MID_CHANGELOG);
2169 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Hotkeys"), "", TL("Open Hotkeys."),
2170 nullptr, myApplicationWindow, MID_HOTKEYS);
2171 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Tutorial"), "", TL("Open Tutorial."),
2172 nullptr, myApplicationWindow, MID_TUTORIAL);
2173 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Feedback"), "", TL("Open feedback channels."),
2174 nullptr, myApplicationWindow, MID_FEEDBACK);
2175 new FXMenuSeparator(helpMenu);
2176 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("About"), "F12", TL("About netedit."),
2178}
2179
2180// ---------------------------------------------------------------------------
2181// GNEApplicationWindowHelper::NetworkCheckableButtons - methods
2182// ---------------------------------------------------------------------------
2183
2185 myApplicationWindow(applicationWindow) {
2186}
2187
2188
2189void
2191 networkMode->show();
2192 demandMode->show();
2193 dataMode->show();
2194}
2195
2196
2197void
2201
2202
2203void
2207
2208
2209void
2211 // build supermode menu commands
2212 networkMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2213 TL("&Network"), "F2", TL("Select network mode."),
2215 demandMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2216 TL("&Demand"), "F3", TL("Select demand mode."),
2218 dataMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2219 TL("&Data"), "F4", TL("Select data mode."),
2221}
2222
2223// ---------------------------------------------------------------------------
2224// GNESumoConfigHandler - methods
2225// ---------------------------------------------------------------------------
2226
2228 myApplicationWindow(applicationWindow),
2229 mySumoConfigFile(sumoConfigFile) {
2230}
2231
2232
2233bool
2235 // get options
2236 auto& neteditOptions = OptionsCont::getOptions();
2237 auto& sumoOptions = myApplicationWindow->getSumoOptions();
2238 // reset options
2239 sumoOptions.resetDefault();
2240 neteditOptions.resetDefault();
2241 // make all options writables
2242 sumoOptions.resetWritable();
2243 neteditOptions.resetWritable();
2244 // build parser
2245 XERCES_CPP_NAMESPACE::SAXParser parser;
2246 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2247 parser.setDisableDefaultEntityResolution(true);
2248 // start the parsing
2249 OptionsLoader handler(sumoOptions);
2250 try {
2251 parser.setDocumentHandler(&handler);
2252 parser.setErrorHandler(&handler);
2253 parser.parse(StringUtils::transcodeToLocal(mySumoConfigFile).c_str());
2254 // allow to load with invalid options
2255 if (handler.errorOccurred()) {
2256 WRITE_WARNING(TLF("There are invalid options in sumo configuration '%'.", mySumoConfigFile));
2257 }
2258 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2259 WRITE_ERROR(TLF("Could not load sumo configuration '%':\n %", mySumoConfigFile, StringUtils::transcode(e.getMessage())));
2260 return false;
2261 }
2262 // relocate files
2263 sumoOptions.relocateFiles(mySumoConfigFile);
2264 // configure files in bucket
2265 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::SUMO_CONFIG, mySumoConfigFile);
2266 // set load options in netedit
2267 neteditOptions.resetWritable();
2268 if (sumoOptions.getString("net-file").size() > 0) {
2269 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETWORK, sumoOptions.getString("net-file"));
2270 } else {
2271 WRITE_ERROR(TLF("No network defined in sumo configuration '%'.", mySumoConfigFile));
2272 return false;
2273 }
2274 neteditOptions.set("additional-files", sumoOptions.getString("additional-files"));
2275 neteditOptions.set("route-files", sumoOptions.getString("route-files"));
2276 return true;
2277}
2278
2279// ---------------------------------------------------------------------------
2280// GNENetconvertConfigHandler - methods
2281// ---------------------------------------------------------------------------
2282
2284 myNetconvertConfigFile(sumoConfigFile) {
2285}
2286
2287
2288bool
2290 // get options
2291 auto& neteditOptions = OptionsCont::getOptions();
2292 // reset options and mark all options as writables
2293 neteditOptions.resetDefault();
2294 neteditOptions.resetWritable();
2295 // build parser
2296 XERCES_CPP_NAMESPACE::SAXParser parser;
2297 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2298 parser.setDisableDefaultEntityResolution(true);
2299 // start the parsing
2300 OptionsLoader handler(neteditOptions);
2301 try {
2302 parser.setDocumentHandler(&handler);
2303 parser.setErrorHandler(&handler);
2304 parser.parse(StringUtils::transcodeToLocal(myNetconvertConfigFile).c_str());
2305 // allow to load with invalid options
2306 if (handler.errorOccurred()) {
2307 WRITE_WARNING(TLF("There are invalid options in netconvert configuration '%'.", myNetconvertConfigFile));
2308 }
2309 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2310 WRITE_ERROR(TLF("Could not load netconvert configuration '%':\n %", myNetconvertConfigFile, StringUtils::transcode(e.getMessage())));
2311 return false;
2312 }
2313 // relocate files
2314 neteditOptions.relocateFiles(myNetconvertConfigFile);
2315 // set load options in netdit
2316 neteditOptions.resetWritable();
2317 return true;
2318}
2319
2320
2321// ---------------------------------------------------------------------------
2322// GNENeteditConfigHandler - methods
2323// ---------------------------------------------------------------------------
2324
2326 myApplicationWindow(applicationWindow),
2327 myNeteditConfigFile(neteditConfigFile) {
2328}
2329
2330
2331bool
2333 // get options
2334 auto& neteditOptions = OptionsCont::getOptions();
2335 // before reset defaults, save ignore route and demand elements (because usually are loaded trought console)
2336 const bool ignoreAdditionalElements = neteditOptions.getBool("ignore.additionalelements");
2337 const bool ignoreRouteElements = neteditOptions.getBool("ignore.routeelements");
2338 // reset options
2339 neteditOptions.resetDefault();
2340 // make all options writables
2341 neteditOptions.resetWritable();
2342 // build parser
2343 XERCES_CPP_NAMESPACE::SAXParser parser;
2344 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2345 parser.setDisableDefaultEntityResolution(true);
2346 // start the parsing
2347 OptionsLoader handler(neteditOptions);
2348 try {
2349 parser.setDocumentHandler(&handler);
2350 parser.setErrorHandler(&handler);
2351 parser.parse(StringUtils::transcodeToLocal(myNeteditConfigFile).c_str());
2352 // allow to load with invalid options
2353 if (handler.errorOccurred()) {
2354 WRITE_WARNING(TLF("There are invalid options in netedit configuration '%'.", myNeteditConfigFile));
2355 }
2356 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2357 WRITE_ERROR(TLF("Could not load netedit configuration '%':\n %", myNeteditConfigFile, StringUtils::transcode(e.getMessage())));
2358 return false;
2359 }
2360 // relocate files
2361 neteditOptions.relocateFiles(myNeteditConfigFile);
2362 // configure files in bucket
2363 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETEDIT_CONFIG, myNeteditConfigFile);
2364 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::SUMO_CONFIG, neteditOptions.getString("sumocfg-file"));
2365 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETWORK, neteditOptions.getString("sumo-net-file"));
2366 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::TLS, neteditOptions.getString("tls-file"));
2367 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::EDGETYPE, neteditOptions.getString("edgetypes-file"));
2368 // restore ignores
2369 neteditOptions.resetWritable();
2370 // check if ignore additional or route files
2371 if (ignoreAdditionalElements) {
2372 neteditOptions.resetDefault("additional-files");
2373 }
2374 if (ignoreRouteElements) {
2375 neteditOptions.resetDefault("route-files");
2376 }
2377 return true;
2378}
2379
2380
2381// ---------------------------------------------------------------------------
2382// GNEApplicationWindowHelper::FileBucketHandler - methods
2383// ---------------------------------------------------------------------------
2384
2386 OptionsCont& neteditOptions, OptionsCont& sumoOptions) :
2387 myApplicationWindow(applicationWindow),
2388 myNeteditOptions(neteditOptions),
2389 mySumoOptions(sumoOptions) {
2390 // create default buckets
2391 for (const auto& type : FileBucket::types) {
2392 myBuckets[type].push_back(new FileBucket(type));
2393 }
2394 for (const auto& type : FileBucket::prefixes) {
2395 myBuckets[type].push_back(new FileBucket(type));
2396 }
2397}
2398
2399
2401 // delete buckets
2402 for (auto& bucketMap : myBuckets) {
2403 for (auto& bucket : bucketMap.second) {
2404 delete bucket;
2405 }
2406 }
2407}
2408
2409
2410void
2412 // insert element
2413 if (AC->getTagProperty()->saveInParentFile() == false) {
2414 // add element in bucket
2415 AC->getFileBucket()->addElement(false);
2416 }
2417}
2418
2419
2420void
2422 if (AC->getTagProperty()->saveInParentFile() == false) {
2423 // remove element from bucket
2424 AC->getFileBucket()->removeElement(false);
2425 }
2426}
2427
2428
2431 // check file properties
2432 if (AC->getTagProperty()->saveInParentFile()) {
2433 // elements with parent aren't saved in buckets
2434 return nullptr;
2435 } else if (AC->getTagProperty()->isNetworkElement()) {
2436 // network elements are saved in a single file
2437 return myBuckets.at(FileBucket::Type::NETWORK).front();
2438 } else {
2439 // remove element from bucket
2441 // iterate over all buckets to check if the given filename already exist
2442 for (const auto& type : FileBucket::types) {
2443 // get default bucket (secure because first bucket always exist)
2444 auto defaultBucket = getDefaultBucket(type);
2445 // check if this bucket type is compatible
2446 if (AC->getTagProperty()->isFileCompatible(defaultBucket->getType())) {
2447 // search bucket with this filename
2448 for (auto& bucket : myBuckets.at(type)) {
2449 if (bucket->getFilename() == filename) {
2450 // add element in bucket
2451 bucket->addElement(AC->isTemplate());
2452 // return the new bucket
2453 return bucket;
2454 }
2455 }
2456 }
2457 }
2458 // if we didn't found a bucket whit the given filename, create new
2459 for (const auto& type : FileBucket::types) {
2460 // this front() call is secure because every bucket group have always at least one default bucket)
2461 const auto bucketType = getDefaultBucket(type)->getType();
2462 // check compatibility
2463 if (AC->getTagProperty()->isFileCompatible(bucketType)) {
2464 // create new bucket with the given filename
2465 auto bucket = new FileBucket(bucketType, filename);
2466 myBuckets.at(bucketType).push_back(bucket);
2467 // add element in bucket
2468 bucket->addElement(AC->isTemplate());
2469 // update options (because we added a new bucket)
2470 updateOptions();
2471 // return the new bucket
2472 return bucket;
2473 }
2474 }
2475 // the AC was not updated, throw error
2476 throw ProcessError(TLF("Element '% cannot be updateAC in bucket '%'", AC->getID(), filename));
2477 }
2478}
2479
2480
2481bool
2483 // check file properties
2484 if (AC->getTagProperty()->saveInParentFile()) {
2485 // elements with parent aren't saved in buckets
2486 return false;
2487 } else {
2488 // iterate over all buckets to check if exist a bucket with this filename
2489 for (const auto& type : FileBucket::types) {
2490 for (auto& bucket : myBuckets.at(type)) {
2491 if (bucket->getFilename() == filename) {
2492 // check if the bucket is compatible with this file
2493 return AC->getTagProperty()->isFileCompatible(bucket->getType());
2494 }
2495 }
2496 }
2497 // the file will be saved in a new bucket
2498 return true;
2499 }
2500}
2501
2502
2503std::string
2505 for (const auto& type : FileBucket::prefixes) {
2506 if (isFilenameDefined(type)) {
2507 return getDefaultFolder(type);
2508 }
2509 }
2510 return "";
2511}
2512
2513
2514std::string
2516 for (const auto& type : FileBucket::prefixes) {
2517 if (isFilenameDefined(type)) {
2518 return getDefaultFilename(type) + sufix;
2519 }
2520 }
2521 return "";
2522}
2523
2524
2527 return myBuckets.at(type).front();
2528}
2529
2530
2532GNEApplicationWindowHelper::FileBucketHandler::getBucket(const FileBucket::Type type, const std::string& filename, const bool create) {
2533 // iterate over all buckets to check if the given filename already exist
2534 for (auto& bucketMap : myBuckets) {
2535 for (auto& bucket : bucketMap.second) {
2536 if ((bucket->getFilename() == filename) && (bucket->getType() == type)) {
2537 return bucket;
2538 }
2539 }
2540 }
2541 // on this point, we need to check if create a new bucket
2542 if (create) {
2543 // if the default bucket is empty, but not the filename, update the default bucket
2544 if (getDefaultFilename(type).empty() && (filename.size() > 0)) {
2545 setDefaultFilenameFile(type, filename);
2546 return getDefaultBucket(type);
2547 } else {
2548 // create new bucket
2549 auto bucket = new FileBucket(type, filename);
2550 myBuckets.at(type).push_back(bucket);
2551 return bucket;
2552 }
2553 } else {
2554 return nullptr;
2555 }
2556}
2557
2558
2559const std::vector<FileBucket*>&
2561 return myBuckets.at(type);
2562}
2563
2564
2565std::string
2567 return myBuckets.at(type).front()->getFilename();
2568}
2569
2570
2571std::string
2573 std::string prefix = getDefaultFilename(type);
2574 // remove until empty or trailing slash
2575 while (true) {
2576 if (prefix.empty()) {
2577 return prefix;
2578 } else if ((prefix.back() == '\'') ||
2579 (prefix.back() == '\\') ||
2580 (prefix.back() == '/')) {
2581 // remove last trailing slash
2582 prefix.pop_back();
2583 return prefix;
2584 } else {
2585 prefix.pop_back();
2586 }
2587 }
2588}
2589
2590
2591void
2593 myBuckets.at(type).front()->setFilename(filename);
2594 // update filename in options
2595 updateOptions();
2596}
2597
2598
2599bool
2601 return (myBuckets.at(type).front()->getFilename().size() > 0);
2602}
2603
2604
2605void
2607 for (const auto& bucketPair : myBuckets) {
2608 bucketPair.second.front()->setFilename("");
2609 }
2610 // update filename in options
2611 updateOptions();
2612}
2613
2614
2615void
2617 // get filenames
2618 const auto sumoconfig = parseFilenames({FileBucket::Type::SUMO_CONFIG});
2619 const auto neteditconfig = parseFilenames({FileBucket::Type::NETEDIT_CONFIG});
2620 const auto networkFile = parseFilenames({FileBucket::Type::NETWORK});
2621 const auto additional = parseFilenames({FileBucket::Type::ADDITIONAL});
2622 const auto demandFile = parseFilenames({FileBucket::Type::DEMAND});
2623 const auto data = parseFilenames({FileBucket::Type::DATA});
2624 const auto meanData = parseFilenames({FileBucket::Type::MEANDATA});
2625 const auto additionalMeanData = parseFilenames({FileBucket::Type::ADDITIONAL, FileBucket::Type::MEANDATA});
2626 const auto edgeType = parseFilenames({FileBucket::Type::EDGETYPE});
2627 const auto tls = parseFilenames({FileBucket::Type::TLS});
2628 // set default filename depending of type
2629 myNeteditOptions.resetWritable();
2630 mySumoOptions.resetWritable();
2631 // check if save sumo additionals
2632 const bool sumoAdditionals = (myApplicationWindow->getEditMenuCommands().loadAdditionalsInSUMOGUI->getCheck() == TRUE);
2633 const bool sumoDemandElements = (myApplicationWindow->getEditMenuCommands().loadDemandInSUMOGUI->getCheck() == TRUE);
2634 // sumo config (only netedit)
2635 if (sumoconfig.size() > 0) {
2636 myNeteditOptions.set("sumocfg-file", sumoconfig);
2637 } else {
2638 myNeteditOptions.resetDefault("sumocfg-file");
2639 }
2640 // netedit config (only netedit)
2641 if (neteditconfig.size() > 0) {
2642 myNeteditOptions.set("configuration-file", neteditconfig);
2643 } else {
2644 myNeteditOptions.resetDefault("configuration-file");
2645 }
2646 // network file (common)
2647 if (networkFile.size() > 0) {
2648 myNeteditOptions.set("sumo-net-file", networkFile);
2649 mySumoOptions.set("net-file", networkFile);
2650 } else {
2651 myNeteditOptions.resetDefault("sumo-net-file");
2652 mySumoOptions.resetDefault("net-file");
2653 }
2654 // additional file (only netedit)
2655 if (additional.size() > 0) {
2656 myNeteditOptions.set("additional-files", additional);
2657 } else {
2658 myNeteditOptions.resetDefault("additional-files");
2659 }
2660 // demand file (netedit)
2661 if (demandFile.size() > 0) {
2662 myNeteditOptions.set("route-files", demandFile);
2663 } else {
2664 myNeteditOptions.resetDefault("route-files");
2665 }
2666 // demand file (sumo)
2667 if (sumoDemandElements && (demandFile.size() > 0)) {
2668 mySumoOptions.set("route-files", demandFile);
2669 } else {
2670 mySumoOptions.resetDefault("route-files");
2671 }
2672 // data file (only netedit)
2673 if (data.size() > 0) {
2674 myNeteditOptions.set("data-files", data);
2675 } else {
2676 myNeteditOptions.resetDefault("data-files");
2677 }
2678 // meanData file (only netedit)
2679 if (meanData.size() > 0) {
2680 myNeteditOptions.set("meandata-files", meanData);
2681 } else {
2682 myNeteditOptions.resetDefault("meandata-files");
2683 }
2684 // additional + meanData files (only sumo)
2685 if (sumoAdditionals && (additionalMeanData.size() > 0)) {
2686 mySumoOptions.set("additional-files", additionalMeanData);
2687 } else {
2688 mySumoOptions.resetDefault("additional-files");
2689 }
2690 // edgeType (only netedit)
2691 if (edgeType.size() > 0) {
2692 myNeteditOptions.set("edgetypes-file", edgeType);
2693 } else {
2694 myNeteditOptions.resetDefault("edgetypes-file");
2695 }
2696 // TLS (only netedit)
2697 if (tls.size() > 0) {
2698 myNeteditOptions.set("tls-file", tls);
2699 } else {
2700 myNeteditOptions.resetDefault("tls-file");
2701 }
2702 // update prefixes
2703 myBuckets.at(FileBucket::Type::SUMO_PREFIX).front()->setFilename(getPrefix(FileBucket::Type::SUMO_CONFIG, {".sumocfg", ".xml"}));
2704 myBuckets.at(FileBucket::Type::NETEDIT_PREFIX).front()->setFilename(getPrefix(FileBucket::Type::NETEDIT_CONFIG, {".netecfg", ".xml"}));
2705 myBuckets.at(FileBucket::Type::NETCONVERT_PREFIX).front()->setFilename(getPrefix(FileBucket::Type::NETCONVERT_CONFIG, {".netccfg", ".edg.xml", ".nod.xml", ".con.xml", ".typ.xml", ".tll.xml", ".xml"}));
2706}
2707
2708
2709std::string
2710GNEApplicationWindowHelper::FileBucketHandler::parseFilenames(const std::vector<FileBucket::Type> types) const {
2711 std::string result;
2712 // group all saving files in a single string separated with comma
2713 for (const auto& type : types) {
2714 for (const auto& bucket : myBuckets.at(type)) {
2715 if ((bucket->getFilename().size() > 0) && (bucket->isDefaultBucket() || (bucket->getNumElements() > 0))) {
2716 result.append(bucket->getFilename() + ",");
2717 }
2718 }
2719 }
2720 // remove last ','
2721 if (result.size() > 0) {
2722 result.pop_back();
2723 }
2724 return result;
2725}
2726
2727
2728void
2730 // iterate over all buckets and remove empty buckets (except default buckets)
2731 for (auto type : FileBucket::types) {
2732 size_t bucketIndex = 0;
2733 while (bucketIndex < myBuckets.at(type).size()) {
2734 auto bucket = myBuckets.at(type).at(bucketIndex);
2735 if (bucket->isEmpty() && (bucket->isDefaultBucket() == false)) {
2736 delete bucket;
2737 myBuckets.at(type).erase(myBuckets.at(type).begin() + bucketIndex);
2738 } else {
2739 bucketIndex++;
2740 }
2741 }
2742 }
2743}
2744
2745
2746std::string
2747GNEApplicationWindowHelper::FileBucketHandler::getPrefix(FileBucket::Type type, const std::vector<std::string> invalidExtensions) const {
2748 std::string filename = getDefaultFilename(type);
2749 if (filename.size() > 0) {
2750 if (filename.back() == '.') {
2751 filename.pop_back();
2752 } else {
2753 for (const auto& invalidExtension : invalidExtensions) {
2754 filename = StringUtils::replace(filename, invalidExtension, "");
2755 }
2756 }
2757 }
2758 return filename;
2759}
2760
2761// ---------------------------------------------------------------------------
2762// GNEApplicationWindowHelper - methods
2763// ---------------------------------------------------------------------------
2764
2765bool
2766GNEApplicationWindowHelper::toggleEditOptionsNetwork(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2767 // finally function correspond to visibleMenuCommands[numericalKeyPressed]
2768 if (menuCheck == viewNet->getNetworkViewOptions().menuCheckToggleGrid) {
2769 // Call manually onCmdToggleShowGrid
2770 viewNet->onCmdToggleShowGrid(obj, sel, nullptr);
2771 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckToggleDrawJunctionShape) {
2772 // Call manually onCmdToggleDrawJunctionShape
2773 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2774 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckDrawSpreadVehicles) {
2775 // Call manually onCmdToggleDrawSpreadVehicles
2776 viewNet->onCmdToggleDrawSpreadVehicles(obj, sel, nullptr);
2777 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowDemandElements) {
2778 // Call manually onCmdToggleShowDemandElementsNetwork
2779 viewNet->onCmdToggleShowDemandElementsNetwork(obj, sel, nullptr);
2780 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckSelectEdges) {
2781 // Call manually onCmdToggleSelectEdges
2782 viewNet->onCmdToggleSelectEdges(obj, sel, nullptr);
2783 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowConnections) {
2784 // Call manually onCmdToggleShowConnections
2785 viewNet->onCmdToggleShowConnections(obj, sel, nullptr);
2786 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckHideConnections) {
2787 // Call manually onCmdToggleHideConnections
2788 viewNet->onCmdToggleHideConnections(obj, sel, nullptr);
2789 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowAdditionalSubElements) {
2790 // Call manually onCmdToggleShowAdditionalSubElements
2791 viewNet->onCmdToggleShowAdditionalSubElements(obj, sel, nullptr);
2792 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowTAZElements) {
2793 // Call manually onCmdToggleShowTAZElements
2794 viewNet->onCmdToggleShowTAZElements(obj, sel, nullptr);
2795 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckExtendSelection) {
2796 // Call manually onCmdToggleExtendSelection
2797 viewNet->onCmdToggleExtendSelection(obj, sel, nullptr);
2798 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChangeAllPhases) {
2799 // Call manually onCmdToggleChangeAllPhases
2800 viewNet->onCmdToggleChangeAllPhases(obj, sel, nullptr);
2801 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckMergeAutomatically) {
2802 // Call manually onCmdToggleMergeAutomatically
2803 viewNet->onCmdToggleMergeAutomatically(obj, sel, nullptr);
2804 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckMoveElevation) {
2805 // Call manually onCmdToggleMoveElevation
2806 viewNet->onCmdToggleMoveElevation(obj, sel, nullptr);
2807 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChainEdges) {
2808 // Call manually onCmdToggleChainEdges
2809 viewNet->onCmdToggleChainEdges(obj, sel, nullptr);
2810 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckAutoOppositeEdge) {
2811 // Call manually onCmdToggleAutoOppositeEdge
2812 viewNet->onCmdToggleAutoOppositeEdge(obj, sel, nullptr);
2813 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowJunctionBubble) {
2814 // Call manually onCmdToggleShowJunctionBubble
2815 viewNet->onCmdToggleShowJunctionBubbles(obj, sel, nullptr);
2816 } else {
2817 return false;
2818 }
2819 return true;
2820}
2821
2822
2823bool
2824GNEApplicationWindowHelper::toggleEditOptionsDemand(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2825 if (menuCheck == viewNet->getDemandViewOptions().menuCheckToggleGrid) {
2826 // Call manually onCmdToggleShowGrid
2827 viewNet->onCmdToggleShowGrid(obj, sel, nullptr);
2828 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckToggleDrawJunctionShape) {
2829 // Call manually onCmdToggleDrawJunctionShape
2830 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2831 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckDrawSpreadVehicles) {
2832 // Call manually onCmdToggleDrawSpreadVehicles
2833 viewNet->onCmdToggleDrawSpreadVehicles(obj, sel, nullptr);
2834 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideShapes) {
2835 // Call manually onCmdToggleHideShapes
2836 viewNet->onCmdToggleHideShapes(obj, sel, nullptr);
2837 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllTrips) {
2838 // Call manually onCmdToggleShowTrips
2839 viewNet->onCmdToggleShowTrips(obj, sel, nullptr);
2840 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllPersonPlans) {
2841 // Call manually onCmdToggleShowAllPersonPlans
2842 viewNet->onCmdToggleShowAllPersonPlans(obj, sel, nullptr);
2843 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckLockPerson) {
2844 // Call manually onCmdToggleLockPerson
2845 viewNet->onCmdToggleLockPerson(obj, sel, nullptr);
2846 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllContainerPlans) {
2847 // Call manually onCmdToggleShowAllContainerPlans
2848 viewNet->onCmdToggleShowAllContainerPlans(obj, sel, nullptr);
2849 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckLockContainer) {
2850 // Call manually onCmdToggleLockContainer
2851 viewNet->onCmdToggleLockContainer(obj, sel, nullptr);
2852 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideNonInspectedDemandElements) {
2853 // Call manually onCmdToggleHideNonInspecteDemandElements
2854 viewNet->onCmdToggleHideNonInspecteDemandElements(obj, sel, nullptr);
2855 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowOverlappedRoutes) {
2856 // Call manually onCmdToggleHideNonInspecteDemandElements
2857 viewNet->onCmdToggleShowOverlappedRoutes(obj, sel, nullptr);
2858 } else {
2859 return false;
2860 }
2861 return true;
2862}
2863
2864
2865bool
2866GNEApplicationWindowHelper::toggleEditOptionsData(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2867 if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleDrawJunctionShape) {
2868 // Call manually onCmdToggleDrawJunctionShape
2869 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2870 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowAdditionals) {
2871 // Call manually onCmdToggleShowAdditionals
2872 viewNet->onCmdToggleShowAdditionals(obj, sel, nullptr);
2873 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowShapes) {
2874 // Call manually onCmdToggleShowShapes
2875 viewNet->onCmdToggleShowShapes(obj, sel, nullptr);
2876 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowDemandElements) {
2877 // Call manually onCmdToggleShowDemandElementsData
2878 viewNet->onCmdToggleShowDemandElementsData(obj, sel, nullptr);
2879 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelDrawing) {
2880 // Call manually onCmdToggleTAZRelDrawing
2881 viewNet->onCmdToggleTAZRelDrawing(obj, sel, nullptr);
2882 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZDrawFill) {
2883 // Call manually onCmdToggleTAZDrawFill
2884 viewNet->onCmdToggleTAZDrawFill(obj, sel, nullptr);
2885 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelOnlyFrom) {
2886 // Call manually onCmdToggleTAZRelOnlyFrom
2887 viewNet->onCmdToggleTAZRelOnlyFrom(obj, sel, nullptr);
2888 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelOnlyTo) {
2889 // Call manually onCmdToggleTAZRelOnlyTo
2890 viewNet->onCmdToggleTAZRelOnlyTo(obj, sel, nullptr);
2891 } else {
2892 return false;
2893 }
2894 return true;
2895}
2896
2897
2898bool
2899GNEApplicationWindowHelper::stringEndsWith(const std::string& str, const std::string& suffix) {
2900 if (str.length() < suffix.length()) {
2901 return false;
2902 } else {
2903 return str.compare(str.length() - suffix.length(), suffix.length(), suffix) == 0;
2904 }
2905}
2906
2907/****************************************************************************/
Supermode
@brie enum for supermodes
@ NETWORK
Network mode (Edges, junctions, etc..)
@ DATA
Data mode (edgeData, LaneData etc..)
@ DEMAND
Demand mode (Routes, Vehicles etc..)
@ MID_GNE_NETWORKVIEWOPTIONS_AUTOOPPOSITEEDGES
automatically create opposite edge
Definition GUIAppEnum.h:857
@ MID_GNE_NETGENERATE
netgenerate dialog
Definition GUIAppEnum.h:771
@ MID_HOTKEY_SHIFT_F10_SUMOOPTIONSMENU
open SUMO options menu (used in netedit)
Definition GUIAppEnum.h:274
@ MID_HOTKEY_SHIFT_F7_ADJUST_PERSON_PLANS
Adjust person plans (start und end positions, arrival positions, etc.)
Definition GUIAppEnum.h:272
@ MID_HOTKEY_SHIFT_F5_COMPUTEJUNCTIONS_VOLATILE
compute junctions with volatile options
Definition GUIAppEnum.h:270
@ MID_HOTKEY_CTRL_SHIFT_B_SAVEDATAELEMENTS
save Data Elements
Definition GUIAppEnum.h:204
@ MID_HOTKEY_F3_SUPERMODE_DEMAND
select demand supermode in netedit
Definition GUIAppEnum.h:236
@ MID_GNE_UNDOLISTDIALOG
open undo list dialog
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLPERSONPLANS
show all person plans
Definition GUIAppEnum.h:941
@ MID_GNE_UNLOCK_ALLELEMENTS
unlock all element
Definition GUIAppEnum.h:919
@ MID_HOTKEY_SHIFT_S_LOCATESTOP
Locate stop - button.
Definition GUIAppEnum.h:188
@ MID_HOTKEY_CTRL_T_OPENNETEDIT_OPENSUMO
Open current SUMO simulation/network in netedit, or current netedit simulation/network in SUMO.
Definition GUIAppEnum.h:123
@ MID_GNE_DATAVIEWOPTIONS_TAZRELDRAWING
toggle TAZRel drawing
Definition GUIAppEnum.h:965
@ MID_GNE_TOGGLE_COMPUTE_NETWORK_DATA
enable/disable computing after switchin between supermodes
Definition GUIAppEnum.h:805
@ MID_GNE_TOOLBARFILE_SAVEADDITIONALELEMENTS_UNIFIED
save additionals unified
Definition GUIAppEnum.h:725
@ MID_TOOLBAREDIT_LOADADDITIONALS
load additionals in sumo-gui/netedit after press ctrl+T
Definition GUIAppEnum.h:683
@ MID_HOTKEY_U_MODE_DECAL_TYPEDISTRIBUTION
hotkey for mode decal AND type distribution
Definition GUIAppEnum.h:69
@ MID_GNE_NETWORKVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
Definition GUIAppEnum.h:831
@ MID_HOTKEY_CTRL_Y_REDO
Undo.
Definition GUIAppEnum.h:133
@ MID_HOTKEY_CTRL_SHIFT_H_SAVEEDGETYPES
save Edge Types
Definition GUIAppEnum.h:212
@ MID_GNE_NETWORKVIEWOPTIONS_MOVEELEVATION
move elevation instead of x,y
Definition GUIAppEnum.h:853
@ MID_GNE_TOOLBARFILE_RELOAD_EDGETYPES
reload edge types
Definition GUIAppEnum.h:737
@ MID_GNE_NETWORKVIEWOPTIONS_HIDECONNECTIONS
hide connections
Definition GUIAppEnum.h:839
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWCONNECTIONS
show connections
Definition GUIAppEnum.h:837
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toggle draw TAZRel only to
Definition GUIAppEnum.h:971
@ MID_HOTKEY_CTRL_W_CLOSESIMULATION
Close simulation - ID.
Definition GUIAppEnum.h:129
@ MID_GNE_LOCK_ALLELEMENTS
lock all element
Definition GUIAppEnum.h:917
@ MID_HOTKEY_F7_JOIN_SELECTEDJUNCTIONS_ROUTES
join selected junctions in network mode and normalice demand element ids in demand mode
Definition GUIAppEnum.h:244
@ MID_HOTKEY_CTRL_D_SINGLESIMULATIONSTEP_OPENDEMANDELEMENTS
Perform a single simulation step in SUMO and open Demand Elements in netedit.
Definition GUIAppEnum.h:89
@ MID_HOTKEY_F5_COMPUTE_NETWORK_DEMAND
compute Network in network mode and Demand elements in demand mode
Definition GUIAppEnum.h:240
@ MID_HOTKEY_CTRL_O_OPENSIMULATION_OPENNETWORK
Open simulation in SUMO and open network in netedit.
Definition GUIAppEnum.h:111
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWTAZELEMENTS
show TAZ elements
Definition GUIAppEnum.h:843
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKPERSON
lock person
Definition GUIAppEnum.h:943
@ MID_HOTKEY_Z_MODE_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
Definition GUIAppEnum.h:75
@ MID_HOTKEY_F9_EDIT_VIEWSCHEME
open edit scheme menu
Definition GUIAppEnum.h:248
@ MID_GNE_DEMANDVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
Definition GUIAppEnum.h:931
@ MID_GNE_LOCK_SELECTEDELEMENTS
lock selected element
Definition GUIAppEnum.h:921
@ MID_GNE_TOOLBARFILE_SAVESUMOCONFIG_AS
save SUMOConfig as
Definition GUIAppEnum.h:719
@ MID_GNE_TOOLBARFILE_RELOAD_TLSPROGRAMS
reload TLS Programs
Definition GUIAppEnum.h:733
@ MID_HOTKEY_A_MODE_STARTSIMULATION_ADDITIONALS_STOPS
hotkey for start simulation in SUMO and set editing mode additionals AND stops in netedit
Definition GUIAppEnum.h:43
@ MID_GNE_TOOLBARFILE_OPENMEANDATAELEMENTS
open meanData file
Definition GUIAppEnum.h:751
@ MID_CHANGELOG
changelog button
Definition GUIAppEnum.h:657
@ MID_GNE_TOOLBARFILE_OPENFOREIGN
open foreign network
Definition GUIAppEnum.h:709
@ MID_GNE_TOOLBARFILE_RELOAD_NETEDITCONFIG
reload neteditConfig
Definition GUIAppEnum.h:713
@ MID_HOTKEY_CTRL_B_EDITBREAKPOINT_OPENDATAELEMENTS
Edit simulation breakpoints in SUMO and open Data Elements in netedit.
Definition GUIAppEnum.h:85
@ MID_TOOLBAREDIT_LOADDEMAND
load demand in sumo-gui/netedit after press ctrl+T
Definition GUIAppEnum.h:685
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWGRID
show grid
Definition GUIAppEnum.h:929
@ MID_HOTKEY_F1_ONLINEDOCUMENTATION
open online documentation
Definition GUIAppEnum.h:232
@ MID_HOTKEY_CTRL_SHIFT_D_SAVEDEMANDELEMENTS
Save Demand Elements.
Definition GUIAppEnum.h:208
@ MID_HOTKEY_CTRL_R_RELOAD
Reload the previously loaded simulation.
Definition GUIAppEnum.h:119
@ MID_HOTKEY_CTRL_S_STOPSIMULATION_SAVENETWORK
Stop the simulation in SUMO and save network in netedit.
Definition GUIAppEnum.h:117
@ MID_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE
hotkey for perform a single simulation step in SUMO and set delete mode in netedit
Definition GUIAppEnum.h:49
@ MID_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
Definition GUIAppEnum.h:855
@ MID_HOTKEY_F10_OPTIONSMENU
open options menu
Definition GUIAppEnum.h:250
@ MID_HOTKEY_F11_FRONTELEMENT
set/clear front element
Definition GUIAppEnum.h:252
@ MID_HOTKEY_F8_CLEANINVALID_CROSSINGS_DEMANDELEMENTS
clean invalid crossings in network mode and demand elements in demand mode
Definition GUIAppEnum.h:246
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
Definition GUIAppEnum.h:963
@ MID_GNE_TOOLBARFILE_RELOAD_MEANDATAELEMENTS
reload meanDatas
Definition GUIAppEnum.h:757
@ MID_GNE_TOOLBARFILE_SAVEMEANDATAELEMENTS_UNIFIED
save meanDatas unified
Definition GUIAppEnum.h:755
@ MID_HOTKEY_CTRL_A_STARTSIMULATION_OPENADDITIONALELEMENTS
Start the simulation in SUMO and open Additionals Elements in netedit.
Definition GUIAppEnum.h:83
@ MID_HOTKEY_C_MODE_CONNECT_CONTAINER
hotkey for mode connecting lanes AND container
Definition GUIAppEnum.h:45
@ MID_HOTKEY_H_MODE_PROHIBITION_CONTAINERPLAN
hotkey for mode prohibition AND container plan
Definition GUIAppEnum.h:53
@ MID_HOTKEY_SHIFT_O_LOCATEPOI
Locate poi - button.
Definition GUIAppEnum.h:182
@ MID_HOTKEY_W_MODE_WIRE_ROUTEDISTRIBUTION
hotkey for mode editing overhead wires AND route distributions
Definition GUIAppEnum.h:73
@ MID_HOTKEY_T_MODE_TLS_TYPE
hotkey for mode editing TLS AND Vehicle Types
Definition GUIAppEnum.h:67
@ MID_GNE_DEMANDVIEWOPTIONS_HIDESHAPES
hide shapes
Definition GUIAppEnum.h:937
@ MID_GNE_TOGGLE_UNDOREDO
enable/disable undo-redo
Definition GUIAppEnum.h:807
@ MID_HOTKEY_SHIFT_A_LOCATEADDITIONAL
Locate additional structure - button.
Definition GUIAppEnum.h:172
@ MID_GNE_TOOLBARFILE_SAVETLSPROGRAMS_AS
save TLS Programs as
Definition GUIAppEnum.h:731
@ MID_GNE_DATAVIEWOPTIONS_SHOWADDITIONALS
show additionals
Definition GUIAppEnum.h:959
@ MID_HOTKEY_SHIFT_R_LOCATEROUTE
Locate route - button.
Definition GUIAppEnum.h:186
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWBUBBLES
show junctions as bubbles
Definition GUIAppEnum.h:851
@ MID_HOTKEY_SHIFT_W_LOCATEWALKINGAREA
Locate edge - button.
Definition GUIAppEnum.h:194
@ MID_GNE_TOOLBARFILE_RELOAD_DEMANDELEMENTS
reload demand elements
Definition GUIAppEnum.h:743
@ MID_GNE_NETWORKVIEWOPTIONS_EXTENDSELECTION
extend selection
Definition GUIAppEnum.h:845
@ MID_HOTKEY_CTRL_I_EDITVIEWPORT
Open viewport editor.
Definition GUIAppEnum.h:99
@ MID_RECENTFILE
Loads a file previously loaded.
Definition GUIAppEnum.h:320
@ MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT
hotkey for stop simulation in SUMO and set select mode in netedit
Definition GUIAppEnum.h:63
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWSUBADDITIONALS
show sub-additionals
Definition GUIAppEnum.h:841
@ MID_HOTKEY_SHIFT_C_LOCATECONTAINER
Locate container - button.
Definition GUIAppEnum.h:174
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLCONTAINERPLANS
show all container plans
Definition GUIAppEnum.h:945
@ MID_HOTKEY_CTRL_SHIFT_N_NEWWINDOW
open a new window (SUMO AND netedit)
Definition GUIAppEnum.h:218
@ MID_HOTKEY_SHIFT_V_LOCATEVEHICLE
Locate vehicle - button.
Definition GUIAppEnum.h:192
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in netedit
Definition GUIAppEnum.h:238
@ MID_HOTKEY_SHIFT_L_LOCATEPOLY
Locate polygons - button.
Definition GUIAppEnum.h:180
@ MID_HOTKEY_F6_CLEAN_SOLITARYJUNCTIONS_UNUSEDROUTES
clean junctions without edges in network mode and unused routes in demand mode
Definition GUIAppEnum.h:242
@ MID_HOTKEY_CTRL_K_OPENTLSPROGRAMS
Load file with TLS Programs.
Definition GUIAppEnum.h:103
@ MID_GNE_LOCK_ELEMENT
lock element (general, used if we press directly the menuCommand in the toolbar)
Definition GUIAppEnum.h:863
@ MID_GNE_TOOLBARFILE_SAVENETEDITCONFIG_AS
save neteditConfig as
Definition GUIAppEnum.h:715
@ MID_HOTKEY_SHIFT_E_LOCATEEDGE
Locate edge - button.
Definition GUIAppEnum.h:176
@ MID_CLEARMESSAGEWINDOW
Clear simulation output.
Definition GUIAppEnum.h:369
@ MID_HOTKEY_R_MODE_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
Definition GUIAppEnum.h:65
@ MID_TUTORIAL
tutorial button
Definition GUIAppEnum.h:661
@ MID_GNE_TOGGLE_UNDOREDO_LOADING
enable/disable undo-redo during loading
Definition GUIAppEnum.h:809
@ MID_GNE_DATAVIEWOPTIONS_TAZDRAWFILL
toggle draw TAZ fill
Definition GUIAppEnum.h:967
@ MID_HOTKEY_L_MODE_PERSONPLAN
hotkey for mode person plan
Definition GUIAppEnum.h:57
@ MID_HOTKEY_V_MODE_VEHICLE
hotkey for mode create vehicles
Definition GUIAppEnum.h:71
@ MID_HOTKEY_SHIFT_P_LOCATEPERSON
Locate person - button.
Definition GUIAppEnum.h:184
@ MID_GNE_TOOLBARFILE_SAVEDATAELEMENTS_UNIFIED
save data elements unified
Definition GUIAppEnum.h:747
@ MID_HOTKEY_I_MODE_INSPECT
hotkey for mode inspecting object attributes
Definition GUIAppEnum.h:55
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
Definition GUIAppEnum.h:833
@ MID_HOTKEY_SHIFT_J_LOCATEJUNCTION
Locate junction - button.
Definition GUIAppEnum.h:178
@ MID_HOTKEY_CTRL_SHIFT_E_SAVENETEDITCONFIG
save netedit Config
Definition GUIAppEnum.h:210
@ MID_GNE_TOOLBARFILE_SAVEEDGETYPES_AS
save edgeTypes as
Definition GUIAppEnum.h:735
@ MID_HOTKEYS
hotkeys button
Definition GUIAppEnum.h:659
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
Definition GUIAppEnum.h:935
@ MID_GNE_TOOLBARFILE_RELOADNETWORK
reload only network
Definition GUIAppEnum.h:707
@ MID_GNE_NETWORKVIEWOPTIONS_MERGEAUTOMATICALLY
don't ask before merging junctions
Definition GUIAppEnum.h:849
@ MID_HOTKEY_CTRL_SHIFT_M_SAVEMEANDATAELEMENTS
save Mean Datas
Definition GUIAppEnum.h:216
@ MID_GNE_NETWORKVIEWOPTIONS_CHANGEALLPHASES
change all phases
Definition GUIAppEnum.h:847
@ MID_GNE_DATAVIEWOPTIONS_SHOWSHAPES
show shapes
Definition GUIAppEnum.h:961
@ MID_HOTKEY_E_MODE_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
Definition GUIAppEnum.h:51
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYFROM
toggle draw TAZRel only from
Definition GUIAppEnum.h:969
@ MID_GNE_TOOLBARFILE_RELOAD_SUMOCONFIG
reload SUMOConfig
Definition GUIAppEnum.h:717
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
Definition GUIAppEnum.h:829
@ MID_HOTKEY_CTRL_SHIFT_O_OPENNETCONVERTFILE
open Netconvert file
Definition GUIAppEnum.h:220
@ MID_HOTKEY_CTRL_M_OPENSUMOCONFIG
open sumo config
Definition GUIAppEnum.h:107
@ MID_GNE_TOOLBARFILE_SAVENETWORK_AS
save network as
Definition GUIAppEnum.h:721
@ MID_GNE_DEMANDVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
Definition GUIAppEnum.h:933
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
Definition GUIAppEnum.h:949
@ MID_HOTKEY_CTRL_Z_UNDO
Redo.
Definition GUIAppEnum.h:135
@ MID_GNE_TOOLBARFILE_SAVEDEMANDELEMENTS_UNIFIED
save demand elements unified
Definition GUIAppEnum.h:741
@ MID_FEEDBACK
feedback button
Definition GUIAppEnum.h:663
@ MID_HOTKEY_CTRL_H_APPSETTINGS_OPENEDGETYPES
open app setting dialog in SUMO and open edge type files in netedit
Definition GUIAppEnum.h:97
@ MID_HOTKEY_CTRL_SHIFT_S_SAVESUMOCONFIG
save SUMOConfig (SUMO AND netedit)
Definition GUIAppEnum.h:222
@ MID_HOTKEY_F12_ABOUT
open about dialog
Definition GUIAppEnum.h:256
@ MID_HOTKEY_CTRL_E_EDITSELECTION_LOADNETEDITCONFIG
Edit selection in SUMO and load neteditConfig in netedit.
Definition GUIAppEnum.h:91
@ MID_GNE_TOOLBARFILE_RELOAD_DATAELEMENTS
reload data elements
Definition GUIAppEnum.h:749
@ MID_HOTKEY_CTRL_SHIFT_K_SAVETLS
save TLS Programs
Definition GUIAppEnum.h:214
@ MID_HOTKEY_SHIFT_T_LOCATETLS
Locate TLS - button.
Definition GUIAppEnum.h:190
@ MID_HOTKEY_M_MODE_MOVE_MEANDATA
hotkey for mode moving element AND mean data
Definition GUIAppEnum.h:59
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in netedit
Definition GUIAppEnum.h:234
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
Definition GUIAppEnum.h:947
@ MID_HOTKEY_CTRL_N_OPENNETWORK_NEWNETWORK
open network in SUMO and create new empty network in netedit
Definition GUIAppEnum.h:109
@ MID_GNE_TOOLBARFILE_RELOAD_ADDITIONALELEMENTS
reload additionals
Definition GUIAppEnum.h:729
@ MID_GNE_NETWORKVIEWOPTIONS_SELECTEDGES
select edges
Definition GUIAppEnum.h:835
@ MID_GNE_SAVEJOINEDJUNCTIONS
save joined junctions
Definition GUIAppEnum.h:711
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWTRIPS
show all trips
Definition GUIAppEnum.h:939
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEGRID
show grid
Definition GUIAppEnum.h:827
@ MID_GNE_TOOLBARFILE_SAVEJUPEDSIMELEMENTS_AS
save JuPedSim as
Definition GUIAppEnum.h:727
@ MID_HOTKEY_P_MODE_POLYGON_PERSON
hotkey for mode creating polygons
Definition GUIAppEnum.h:61
@ MID_HOTKEY_CTRL_L_SAVEASPLAINXML
save network as plain XML
Definition GUIAppEnum.h:105
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALELEMENTS
Save Additional Elements.
Definition GUIAppEnum.h:202
#define GUIDesignToolbarMenuBarNetedit
design for top toolbar (file, edit, processing...) used only in netedit (due supermodes buttons)
Definition GUIDesigns.h:462
#define GUIDesignToolBarGrip
design for toolbar grip (used to change the position of toolbar with mouse)
Definition GUIDesigns.h:480
#define GUIDesignToolBar
design for default toolbar
Definition GUIDesigns.h:465
#define GUIDesignToolBarRaisedNext
design for first toolbar shell positioned in the next position of dock
Definition GUIDesigns.h:474
#define GUIDesignToolBarRaisedSupermodes
design for toolbar supermodes (grip + buttons)
Definition GUIDesigns.h:471
#define GUIDesignToolBarRaisedSame
design for toolbar
Definition GUIDesigns.h:468
@ CLEANJUNCTIONS
@ DATAMODE_CHECKBOX_SHOWADDITIONALS
@ SAVE_NETEDITCONFIG
@ SAVE_DATAELEMENTS
@ NETWORKMODE_CHECKBOX_BUBBLES
@ SAVE_NETWORKELEMENTS
@ DATAMODE_CHECKBOX_TAZRELONLYFROM
@ MODEPERSONPLAN
@ MODECROSSING
@ MODEMEANDATA
@ MODEADDITIONAL
@ MODEEDGERELDATA
@ EDITVIEWPORT
@ SUPERMODEDEMAND
@ CLEARMESSAGEWINDOW
@ MODEPROHIBITION
@ SAVE_ADDITIONALELEMENTS
@ DEMANDMODE_CHECKBOX_HIDENONINSPECTEDDEMANDELEMENTS
@ NETWORKMODE_CHECKBOX_HIDECONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWTRIPS
@ OPEN_ADDITIONALS
@ COMMONMODE_CHECKBOX_TOGGLEDRAWJUNCTIONSHAPE
@ NETEDIT_MINI
@ DATAMODE_CHECKBOX_SHOWSHAPES
@ NETWORKMODE_CHECKBOX_SELECTEDGES
@ COMMONMODE_CHECKBOX_SHOWDEMANDELEMENTS
@ COMPUTEJUNCTIONS
@ DEMANDMODE_CHECKBOX_LOCKPERSON
@ LOCATEVEHICLE
@ NETWORKMODE_CHECKBOX_MERGEAUTOMATICALLY
@ FRONTELEMENT
@ NETWORKMODE_CHECKBOX_APPLYTOALLPHASES
@ MODECREATEEDGE
@ LOCATEWALKINGAREA
@ DATAMODE_CHECKBOX_TAZRELONLYTO
@ NETWORKMODE_CHECKBOX_AUTOSELECTJUNCTIONS
@ OPEN_MEANDATAS
@ LOCATEPERSON
@ SAVE_MEANDATAELEMENTS
@ DATAMODE_CHECKBOX_TAZRELDRAWING
@ NETWORKMODE_CHECKBOX_SHOWCONNECTIONS
@ TRANSHIP_EDGE
@ LOCK_SELECTED
@ DEMANDMODE_CHECKBOX_SHOWPERSONPLANS
@ MODECONTAINER
@ DEMANDMODE_CHECKBOX_HIDESHAPES
@ JPS_WALKABLEAREA
@ DATAMODE_CHECKBOX_TAZDRAWFILL
@ MODEEDGEDATA
@ TRANSPORT_EDGE
@ NETWORKMODE_CHECKBOX_ELEVATION
@ SUPERMODENETWORK
@ JPS_OBSTACLE
@ COMMONMODE_CHECKBOX_SPREADVEHICLE
@ SAVE_DEMANDELEMENTS
@ OPEN
open icons
@ ADJUSTPERSONPLANS
@ DEMANDMODE_CHECKBOX_LOCKCONTAINER
@ NETWORKMODE_CHECKBOX_SHOWSUBADDITIONALS
@ SAVE_JUPEDSIMELEMENTS
@ LOCATECONTAINER
@ NETWORKMODE_CHECKBOX_SHOWTAZELEMENTS
@ SUPERMODEDATA
@ MODECONNECTION
@ LOCATEJUNCTION
@ MODECONTAINERPLAN
@ NETWORKMODE_CHECKBOX_CHAIN
@ COMPUTEDEMAND
@ OPEN_NETEDITCONFIG
@ DEMANDMODE_CHECKBOX_SHOWOVERLAPPEDROUTES
@ SAVE_SUMOCONFIG
@ MODETYPEDISTRIBUTION
@ OVERHEADWIRE
@ COMMONMODE_CHECKBOX_TOGGLEGRID
@ OPEN_TLSPROGRAMS
@ JOINJUNCTIONS
@ MODEROUTEDISTRIBUTION
@ PERSONTRIP_EDGE
@ MODETAZRELDATA
@ OPEN_SUMOCONFIG
@ SAVE
save icons
@ DEMANDMODE_CHECKBOX_SHOWCONTAINERPLANS
@ NETWORKMODE_CHECKBOX_TWOWAY
#define WRITE_ERROR(msg)
Definition MsgHandler.h:295
#define WRITE_WARNING(msg)
Definition MsgHandler.h:286
#define TL(string)
Definition MsgHandler.h:304
#define TLF(string,...)
Definition MsgHandler.h:306
@ SUMO_TAG_EDGEREL
a relation between two edges
@ GNE_TAG_EDGEREL_SINGLE
@ SUMO_TAG_POI
begin/end of the description of a Point of interest
@ GNE_TAG_POIGEO
Point of interest over view with GEO attributes.
@ SUMO_TAG_CONNECTION
connectioon between two lanes
@ SUMO_TAG_WALKINGAREA
walking area for pedestrians
@ SUMO_TAG_JUNCTION
begin/end of the description of a junction
@ SUMO_TAG_CROSSING
crossing between edges for pedestrians
@ SUMO_TAG_POLY
begin/end of the description of a polygon
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ GNE_TAG_POILANE
Point of interest over Lane.
@ GNE_TAG_JPS_OBSTACLE
polygon used for draw juPedSim obstacles
@ SUMO_TAG_TAZREL
a relation between two TAZs
@ GNE_TAG_JPS_WALKABLEAREA
polygon used for draw juPedSim walkable areas
@ SUMO_TAG_EDGE
begin/end of the description of an edge
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition ToString.h:49
void removeElement(const bool isTemplate)
remove element
void addElement(const bool isTemplate)
function related with Elements
Type
Files that this bucket can save.
Definition FileBucket.h:34
static const std::vector< FileBucket::Type > types
vector with all types managed in this get bucket handler
Definition FileBucket.h:28
static const std::vector< FileBucket::Type > prefixes
vector with all types and prefixes managed in this get bucket handler
Definition FileBucket.h:41
std::string parseFilenames(const std::vector< FileBucket::Type > types) const
parse filenames
std::string getConfigDirectory() const
get current config directory (if we defined a netedit, sumo or netconvert config)
void resetDefaultFilenames()
brief set default files for all buckets
std::string getDefaultFilename(const FileBucket::Type type) const
functions related with filenames
const std::vector< FileBucket * > & getFileBuckets(const FileBucket::Type type) const
get vector with all fileBuckets related with the given file type
std::map< FileBucket::Type, std::vector< FileBucket * > > myBuckets
map with the buckets
bool isFilenameDefined(const FileBucket::Type type) const
check if at least we have an additional file defined
void unregisterAC(const GNEAttributeCarrier *AC)
delete AC
std::string getConfigFilePrefix(const std::string &sufix) const
get current config patter (if we defined a netedit, sumo or netconvert config)
std::string getDefaultFolder(const FileBucket::Type type) const
get default folder associated with the given tipe
FileBucket * getDefaultBucket(const FileBucket::Type type) const
functions related with buckets
std::string getPrefix(FileBucket::Type type, const std::vector< std::string > invalidExtensions) const
get prefix of the given filename
void registerAC(const GNEAttributeCarrier *AC)
register AC
FileBucket * updateAC(const GNEAttributeCarrier *AC, const std::string &filename)
update filename vinculated with this AC
bool checkFilename(const GNEAttributeCarrier *AC, const std::string &filename) const
check if the given filename can be assigned to the given AC
FileBucketHandler(GNEApplicationWindow *applicationWindow, OptionsCont &neteditOptions, OptionsCont &sumoOptions)
constructor
FileBucket * getBucket(const FileBucket::Type type, const std::string &filename, const bool create)
get bucket
void setDefaultFilenameFile(const FileBucket::Type type, const std::string &filename)
brief set default additional file
GNENeteditConfigHandler(GNEApplicationWindow *applicationWindow, const std::string &neteditConfigFile)
Constructor.
GNESumoConfigHandler(GNEApplicationWindow *applicationWindow, const std::string &sumoConfigFile)
Constructor.
virtual FileBucket * getFileBucket() const =0
get reference to fileBucket in which save this AC
const std::string getID() const override
get ID (all Attribute Carriers have one)
bool isTemplate() const
check if this AC is template
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
bool isPlanTransport() const
return true if tag correspond to a transport
bool isContainer() const
return true if tag correspond to a container element
bool isTAZElement() const
return true if tag correspond to a TAZ element
bool isNetworkElement() const
network elements
bool isRoute() const
return true if tag correspond to a route element
bool isVehicle() const
return true if tag correspond to a vehicle element
bool isPlanStopContainer() const
return true if tag correspond to a container stop plan
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
bool isPlanPersonTrip() const
return true if tag correspond to a person trip plan
bool isFileCompatible(FileBucket::Type file) const
file
bool isWireElement() const
return true if tag correspond to a Wire element
bool saveInParentFile() const
element is saved in the parent file
bool isPlanRide() const
return true if tag correspond to a ride plan
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)
bool isPlanStopPerson() const
return true if tag correspond to a person stop plan
bool isVehicleStop() const
return true if tag correspond to a vehicle stop element
bool isPerson() const
return true if tag correspond to a person element
bool isPlanWalk() const
return true if tag correspond to a walk plan
bool isPlanTranship() const
return true if tag correspond to a tranship
long onCmdToggleShowDemandElementsNetwork(FXObject *, FXSelector, void *)
toggle show demand elements (network)
const GNEViewNetHelper::DataViewOptions & getDataViewOptions() const
get data view options
long onCmdToggleShowDemandElementsData(FXObject *, FXSelector, void *)
toggle show demand elements (data)
long onCmdToggleTAZDrawFill(FXObject *, FXSelector, void *)
toggle TAZdrawFill
long onCmdToggleDrawSpreadVehicles(FXObject *, FXSelector, void *)
toggle draw vehicles in begin position or spread in lane
long onCmdToggleShowConnections(FXObject *, FXSelector, void *)
toggle show connections
long onCmdToggleShowTAZElements(FXObject *, FXSelector, void *)
toggle show TAZ elements
long onCmdToggleMoveElevation(FXObject *, FXSelector, void *)
toggle move elevation
long onCmdToggleShowAllPersonPlans(FXObject *, FXSelector, void *)
toggle show all person plans in super mode demand
long onCmdToggleTAZRelOnlyTo(FXObject *, FXSelector, void *)
toggle TAZRez only to
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
long onCmdToggleChainEdges(FXObject *, FXSelector, void *)
toggle chain edges
long onCmdToggleLockContainer(FXObject *, FXSelector, void *)
toggle lock container in super mode demand
long onCmdToggleShowGrid(FXObject *, FXSelector, void *)
toggle show grid
long onCmdToggleHideNonInspecteDemandElements(FXObject *, FXSelector, void *)
toggle hide non inspected demand elements
long onCmdToggleDrawJunctionShape(FXObject *, FXSelector, void *)
toggle draw junction shape
long onCmdToggleShowShapes(FXObject *, FXSelector, void *)
toggle show shapes in super mode data
long onCmdToggleMergeAutomatically(FXObject *, FXSelector, void *)
toggle warn for merge
long onCmdToggleExtendSelection(FXObject *, FXSelector, void *)
toggle extend selection
long onCmdToggleShowOverlappedRoutes(FXObject *, FXSelector, void *)
toggle hide non inspected demand elements
long onCmdToggleAutoOppositeEdge(FXObject *, FXSelector, void *)
toggle autoOpposite edge
long onCmdToggleChangeAllPhases(FXObject *, FXSelector, void *)
toggle change all phases
long onCmdToggleTAZRelDrawing(FXObject *, FXSelector, void *)
toggle TAZRel drawing
long onCmdToggleShowJunctionBubbles(FXObject *, FXSelector, void *)
toggle show junction bubbles
long onCmdToggleShowAdditionalSubElements(FXObject *, FXSelector, void *)
toggle show additional sub-elements
long onCmdToggleShowAllContainerPlans(FXObject *, FXSelector, void *)
toggle show all container plans in super mode demand
long onCmdToggleTAZRelOnlyFrom(FXObject *, FXSelector, void *)
toggle TAZRez only from
long onCmdToggleShowAdditionals(FXObject *, FXSelector, void *)
toggle show additionals in super mode data
long onCmdToggleLockPerson(FXObject *, FXSelector, void *)
toggle lock person in super mode demand
long onCmdToggleSelectEdges(FXObject *, FXSelector, void *)
toggle select edges
long onCmdToggleShowTrips(FXObject *, FXSelector, void *)
toggle show all trips in super mode demand
long onCmdToggleHideShapes(FXObject *, FXSelector, void *)
toggle hide shapes in super mode demand
const GNEViewNetHelper::DemandViewOptions & getDemandViewOptions() const
get demand view options
long onCmdToggleHideConnections(FXObject *, FXSelector, void *)
toggle hide connections
static MFXMenuCheckIcon * buildFXMenuCheckboxIcon(FXComposite *p, const std::string &text, const std::string &shortcut, const std::string &info, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu checkbox with icon
static FXMenuCommand * buildFXMenuCommandRecentFile(FXComposite *p, const std::string &text, FXObject *tgt, FXSelector sel)
build menu command (for recent files)
static FXMenuCheck * buildFXMenuCheckbox(FXComposite *p, const std::string &text, const std::string &info, FXObject *tgt, FXSelector sel)
build menu checkbox
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel, const bool disable=false)
build menu command
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
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
A logging window for the gui.
A storage for options typed value containers)
Definition OptionsCont.h:89
static OptionsCont & getOptions()
Retrieves the options.
A SAX-Handler for loading options.
bool errorOccurred() const
Returns the information whether an error occurred.
static std::string replace(std::string str, const std::string &what, const std::string &by)
Replaces all occurrences of the second string by the third string within the first string.
static std::string transcode(const XMLCh *const data)
converts a 0-terminated XMLCh* array (usually UTF-16, stemming from Xerces) into std::string in UTF-8
static std::string transcodeToLocal(const std::string &utf8String)
convert a string from UTF-8 to the local codepage
DataViewOptions(GNEApplicationWindow *applicationWindow)
default constructor
DemandViewOptions(GNEApplicationWindow *applicationWindow)
default constructor
NetworkViewOptions(GNEApplicationWindow *applicationWindow)
default constructor
EditMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
DemandViewOptions demandViewOptions
demand view options
NetworkViewOptions networkViewOptions
network view options
void buildUndoRedoMenuCommands(FXMenuPane *editMenu)
build undo-redo menu commands
void buildViewMenuCommands(FXMenuPane *editMenu)
build view menu commands
void buildOpenSUMOMenuCommands(FXMenuPane *editMenu)
build open sumo menu commands
void buildFrontElementMenuCommand(FXMenuPane *editMenu)
build front element commands
GNEApplicationWindow * myApplicationWindow
pointer to current GNEApplicationWindow
void buildEdgeTypeSection(FXMenuPane *menuPane)
build edge type section
void buildDemandSection(FXMenuPane *menuPane)
build demand section
void buildFileMenuCommands(FXMenuPane *fileMenu, FXMenuPane *fileMenuNEEDITConfig, FXMenuPane *fileMenuSumoConfig, FXMenuPane *fileMenuTLS, FXMenuPane *fileMenuEdgeTypes, FXMenuPane *fileMenuAdditionals, FXMenuPane *fileMenuDemandElements, FXMenuPane *fileMenuDataElements, FXMenuPane *fileMenuMeanDataElements)
build menu commands
FileMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
void buildDataSection(FXMenuPane *menuPane)
build data section
void buildTrafficLightSection(FXMenuPane *menuPane)
build traffic light section
void buildAdditionalSection(FXMenuPane *menuPane)
build additional section
void buildMeanDataSection(FXMenuPane *menuPane)
build meanData section
void buildNeteditConfigSection(FXMenuPane *menuPane)
build netedit config section
void buildSumoConfigSection(FXMenuPane *menuPane)
build SUMO Config section
void buildHelpMenuCommands(FXMenuPane *helpMenu)
build menu commands
HelpMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
void buildLocateMenuCommands(FXMenuPane *locateMenu)
build menu commands
LocateMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
void buildLockMenuCommands(FXMenuPane *editMenu)
build menu commands
void hideNetworkLockMenuCommands()
show network processing menu commands
void hideDemandLockMenuCommands()
show demand processing menu commands
void hideDataLockMenuCommands()
show data processing menu commands
void showDataLockMenuCommands()
show data processing menu commands
void showNetworkLockMenuCommands()
show network processing menu commands
FXHotKey parseHotKey(const FXwchar character)
Parse hot key from string.
void showDemandLockMenuCommands()
show demand processing menu commands
LockMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
void editLocking(const GNEAttributeCarrier *AC, const FXbool value)
lock or unlock object based in a tag property
void buildRecentConfigFiles(FXMenuPane *fileMenu, FXMenuPane *fileMenuRecentConfigFiles)
build recent config
void buildRecentNetworkFiles(FXMenuPane *fileMenu, FXMenuPane *fileMenuRecentNetworkFiles)
build recent network
MenuBarFile(GNEApplicationWindow *applicationWindow)
constructor
CommonMenuCommands(const ModesMenuCommands *modesMenuCommandsParent)
constructor
DataMenuCommands(const ModesMenuCommands *modesMenuCommandsParent)
constructor
DemandMenuCommands(const ModesMenuCommands *modesMenuCommandsParent)
constructor
NetworkMenuCommands(const ModesMenuCommands *modesMenuCommandsParent)
constructor
CommonMenuCommands commonMenuCommands
Common Menu Commands.
ModesMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
void buildModesMenuCommands(FXMenuPane *modesMenu)
build modes menu commands
DemandMenuCommands demandMenuCommands
Demand Menu Commands.
void setDefaultView(Supermode supermode)
set default view
GNEApplicationWindow * myApplicationWindow
pointer to current GNEApplicationWindow
void setJuPedSimView(Supermode supermode)
set JuPedSim view
NetworkMenuCommands networkMenuCommands
Network Menu Commands.
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 buildProcessingMenuCommands(FXMenuPane *processingMenu)
build menu commands
ProcessingMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
void showNetworkProcessingMenuCommands()
show network processing menu commands
void hideNetworkProcessingMenuCommands()
show network processing menu commands
SupermodeCommands(GNEApplicationWindow *applicationWindow)
constructor
void buildSupermodeCommands(FXMenuPane *editMenu)
build menu commands
ToolbarsGrip(GNEApplicationWindow *applicationWindow)
constructor
long postProcessing(FXObject *menuCommand) const
run postprocessing
void buildTools(FXMenuPane *toolsMenu, const std::map< std::string, FXMenuPane * > &menuPaneToolMaps)
build tools (and menu commands)
ToolsMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
long runToolDialog(FXObject *menuCommand) const
run tool dialog
WindowsMenuCommands(GNEApplicationWindow *applicationWindow)
constructor
void buildWindowsMenuCommands(FXMenuPane *windowsMenu, FXStatusBar *statusbar, GUIMessageWindow *messageWindow)
build menu commands
static bool toggleEditOptionsDemand(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, FXObject *obj, FXSelector sel)
toggle edit options Demand menu commands (called in GNEApplicationWindow::onCmdToggleEditOptions)
static bool toggleEditOptionsData(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, FXObject *obj, FXSelector sel)
toggle edit options Data menu commands (called in GNEApplicationWindow::onCmdToggleEditOptions)
static bool stringEndsWith(const std::string &str, const std::string &suffix)
check if a string ends with another string
static bool toggleEditOptionsNetwork(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, FXObject *obj, FXSelector sel)
toggle edit options Network menu commands (called in GNEApplicationWindow::onCmdToggleEditOptions)
MFXCheckableButton * menuCheckToggleTAZDrawFill
menu check to toggle TAZ draw fill
MFXCheckableButton * menuCheckShowAdditionals
menu check to show Additionals
MFXCheckableButton * menuCheckShowShapes
menu check to show Shapes
MFXCheckableButton * menuCheckToggleTAZRelOnlyFrom
menu check to toggle TAZRel only from
MFXCheckableButton * menuCheckToggleDrawJunctionShape
checkable button to show junction shapes
MFXCheckableButton * menuCheckToggleTAZRelDrawing
menu check to toggle TAZ Rel drawing
MFXCheckableButton * menuCheckShowDemandElements
menu check to show Demand Elements
MFXCheckableButton * menuCheckToggleTAZRelOnlyTo
menu check to toggle TAZRel only to
MFXCheckableButton * menuCheckShowAllTrips
show all trips
MFXCheckableButton * menuCheckToggleGrid
menu check to show grid button
MFXCheckableButton * menuCheckToggleDrawJunctionShape
checkable button to show junction shapes
MFXCheckableButton * menuCheckDrawSpreadVehicles
menu check to draw vehicles in begin position or spread in lane
MFXCheckableButton * menuCheckShowOverlappedRoutes
show overlapped routes
MFXCheckableButton * menuCheckShowAllPersonPlans
show all person plans
MFXCheckableButton * menuCheckShowAllContainerPlans
show all container plans
MFXCheckableButton * menuCheckHideNonInspectedDemandElements
Hide non inspected demand elements.
MFXCheckableButton * menuCheckHideShapes
Hide shapes (Polygons and POIs)
MFXCheckableButton * menuCheckLockPerson
Lock Person.
MFXCheckableButton * menuCheckLockContainer
Lock Container.
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 * menuCheckShowTAZElements
checkable button to show TAZ elements
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 * menuCheckToggleDrawJunctionShape
checkable button to show junction shapes
MFXCheckableButton * menuCheckToggleGrid
checkable button to show grid button
MFXCheckableButton * menuCheckMergeAutomatically
checkable button to we should't warn about merging junctions
MFXCheckableButton * menuCheckShowJunctionBubble
checkable button to show connection as bubble in "Move" mode.
MFXCheckableButton * menuCheckShowAdditionalSubElements
checkable button to show additional sub-elements
MFXCheckableButton * menuCheckChangeAllPhases
checkable button to set change all phases
MFXCheckableButton * menuCheckExtendSelection
checkable button to extend to edge nodes