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#include <utils/xml/XMLSubSys.h>
22
23#include <regex>
24
30#include <netedit/templates.h>
37#include <xercesc/parsers/SAXParser.hpp>
38#include <xercesc/sax/AttributeList.hpp>
39#include <xercesc/sax/HandlerBase.hpp>
40#include <xercesc/sax/SAXException.hpp>
41#include <xercesc/sax/SAXParseException.hpp>
42
44#include "GNEViewNet.h"
45#include "GNENet.h"
46
47// ===========================================================================
48// GNEApplicationWindowHelper::ToolbarsGrip method definitions
49// ===========================================================================
50
52 myApplicationWindow(applicationWindow) {
53}
54
55
56void
58 // build menu bar (for File, edit, processing...) using specify design
59 myPythonToolBarShellMenu = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
60 menu = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellMenu, GUIDesignToolbarMenuBarNetedit);
61 // declare toolbar grip for menu bar
62 new FXToolBarGrip(menu, menu, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
63}
64
65
66void
68 // build toolbar shells
69 myPythonToolBarShellSuperModes = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
70 myPythonToolBarShellSaveElements = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
71 myPythonToolBarShellTimeFormat = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
72 myPythonToolBarShellNavigation = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
73 myPythonToolBarShellModes = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
74 myPythonToolBarShellIntervalBar = new FXToolBarShell(myApplicationWindow, GUIDesignToolBar);
75 // build menu bars
76 superModes = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellSuperModes, GUIDesignToolBarRaisedSupermodes);
77 saveElements = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellSaveElements, GUIDesignToolBarRaisedNext);
78 timeSwitch = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellTimeFormat, GUIDesignToolBarRaisedSame);
79 navigation = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellNavigation, GUIDesignToolBarRaisedSame);
80 if (OptionsCont::getOptions().getBool("gui-testing")) {
81 modes = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellModes, GUIDesignToolBarRaisedNext);
82 } else {
83 modes = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellModes, GUIDesignToolBarRaisedSame);
84 }
85 intervalBar = new FXMenuBar(myApplicationWindow->getTopDock(), myPythonToolBarShellIntervalBar, GUIDesignToolBarRaisedNext);
86 // build FXToolBarGrip
87 new FXToolBarGrip(superModes, superModes, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
88 new FXToolBarGrip(saveElements, saveElements, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
89 new FXToolBarGrip(timeSwitch, timeSwitch, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
90 new FXToolBarGrip(navigation, navigation, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
91 new FXToolBarGrip(modes, modes, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
92 new FXToolBarGrip(intervalBar, intervalBar, FXMenuBar::ID_TOOLBARGRIP, GUIDesignToolBarGrip);
93 // create menu bars
94 superModes->create();
95 saveElements->create();
96 timeSwitch->create();
97 navigation->create();
98 modes->create();
99 intervalBar->create();
100 // create toolbar shells
101 myPythonToolBarShellSuperModes->create();
102 myPythonToolBarShellSaveElements->create();
103 myPythonToolBarShellTimeFormat->create();
104 myPythonToolBarShellNavigation->create();
105 myPythonToolBarShellModes->create();
106 myPythonToolBarShellIntervalBar->create();
107 // recalc top dop after creating elements
108 myApplicationWindow->getTopDock()->recalc();
109}
110
111
112void
114 // delete Menu bars
115 delete superModes;
116 delete saveElements;
117 delete timeSwitch;
118 delete navigation;
119 delete modes;
120 delete intervalBar;
121 // also delete toolbar shells to avoid floating windows
122 delete myPythonToolBarShellSuperModes;
123 delete myPythonToolBarShellSaveElements;
124 delete myPythonToolBarShellTimeFormat;
125 delete myPythonToolBarShellNavigation;
126 delete myPythonToolBarShellModes;
127 delete myPythonToolBarShellIntervalBar;
128 // recalc top dop after deleting elements
129 myApplicationWindow->getTopDock()->recalc();
130}
131
132// ===========================================================================
133// GNEApplicationWindowHelper::MenuBarFile method definitions
134// ===========================================================================
135
137 myRecentNetworks(applicationWindow->getApp(), TL("nets")),
138 myRecentConfigs(applicationWindow->getApp(), TL("configs")),
139 myApplicationWindow(applicationWindow) {
140}
141
142
143void
144GNEApplicationWindowHelper::MenuBarFile::buildRecentNetworkFiles(FXMenuPane* fileMenu, FXMenuPane* fileMenuRecentNetworkFiles) {
145 // for whatever reason, sonar complains in the next line that sep1 may leak, but fox does the cleanup
146 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_1);
147 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_2);
148 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_3);
149 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_4);
150 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_5);
151 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_6);
152 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_7);
153 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_8);
154 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_9);
155 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentNetworkFiles, "", &myRecentNetworks, FXRecentFiles::ID_FILE_10);
156 new FXMenuSeparator(fileMenuRecentNetworkFiles); // NOSONAR, Fox does the cleanup
157 GUIDesigns::buildFXMenuCommand(fileMenuRecentNetworkFiles, TL("Cl&ear Recent Networks"), nullptr, &myRecentNetworks, FXRecentFiles::ID_CLEAR);
158 GUIDesigns::buildFXMenuCommand(fileMenuRecentNetworkFiles, TL("No Recent Networks"), nullptr, &myRecentNetworks, MFXRecentNetworks::ID_NOFILES);
159 // set target
160 myRecentNetworks.setTarget(myApplicationWindow);
161 myRecentNetworks.setSelector(MID_RECENTFILE);
162 new FXMenuCascade(fileMenu, TL("Recent Networks"), nullptr, fileMenuRecentNetworkFiles);
163}
164
165
166void
167GNEApplicationWindowHelper::MenuBarFile::buildRecentConfigFiles(FXMenuPane* fileMenu, FXMenuPane* fileMenuRecentConfigFiles) {
168 // for whatever reason, sonar complains in the next line that sep1 may leak, but fox does the cleanup
169 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_1);
170 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_2);
171 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_3);
172 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_4);
173 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_5);
174 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_6);
175 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_7);
176 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_8);
177 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_9);
178 GUIDesigns::buildFXMenuCommandRecentFile(fileMenuRecentConfigFiles, "", &myRecentConfigs, FXRecentFiles::ID_FILE_10);
179 new FXMenuSeparator(fileMenuRecentConfigFiles); // NOSONAR, Fox does the cleanup
180 GUIDesigns::buildFXMenuCommand(fileMenuRecentConfigFiles, TL("Cl&ear Recent Configs"), nullptr, &myRecentConfigs, FXRecentFiles::ID_CLEAR);
181 GUIDesigns::buildFXMenuCommand(fileMenuRecentConfigFiles, TL("No Recent Configs"), nullptr, &myRecentConfigs, MFXRecentNetworks::ID_NOFILES);
182 // set target
183 myRecentConfigs.setTarget(myApplicationWindow);
184 myRecentConfigs.setSelector(MID_RECENTFILE);
185 new FXMenuCascade(fileMenu, TL("Recent Configs"), nullptr, fileMenuRecentConfigFiles);
186}
187
188// ---------------------------------------------------------------------------
189// GNEApplicationWindowHelper::FileMenuCommands - methods
190// ---------------------------------------------------------------------------
191
193 myApplicationWindow(applicationWindow) {
194}
195
196
197void
198GNEApplicationWindowHelper::FileMenuCommands::buildFileMenuCommands(FXMenuPane* fileMenu, FXMenuPane* fileMenuNeteditConfig,
199 FXMenuPane* fileMenuSumoConfig, FXMenuPane* fileMenuTLS, FXMenuPane* fileMenuEdgeTypes, FXMenuPane* fileMenuAdditionals,
200 FXMenuPane* fileMenuDemandElements, FXMenuPane* fileMenuDataElements, FXMenuPane* fileMenuMeanDataElements) {
201
203 TL("New Network"), "Ctrl+N", TL("Create a new network."),
205
207 TL("New Window"), "Ctrl+Shift+N", TL("Open a new netedit window."),
208 nullptr, myApplicationWindow, MID_HOTKEY_CTRL_SHIFT_N_NEWWINDOW);
209
211 TL("Generate Network"), "", TL("Create network using netgenerate."),
213
214 // load sumo/netedit configs
215 new FXMenuSeparator(fileMenu);
216
218 TL("Load Netedit config..."), "Ctrl+E", TL("Load a netedit configuration file."),
220
222 TL("Load Sumo config..."), "Ctrl+M", TL("Load a SUMO configuration file."),
224
225 // load networks
226 new FXMenuSeparator(fileMenu);
227
229 TL("Open Network..."), "Ctrl+O", TL("Open a SUMO network."),
231
233 TL("Open Netconvert Configuration..."), "Ctrl+Shift+O", TL("Open a configuration file with NETCONVERT options."),
235
237 TL("Import Foreign Network..."), "", TL("Import a foreign network such as OSM."),
239
240 // save networks
241 new FXMenuSeparator(fileMenu);
242
244 TL("Save Network"), "Ctrl+S", TL("Save the network."),
246
248 TL("Save Network As..."), "", TL("Save the network to another file."),
250
252 TL("Save Plain XML..."), "Ctrl+L", TL("Save a plain XML representation of the network."),
254
256 TL("Save Joined Junctions..."), "", TL("Save log of joined junctions (allows reproduction of joins)."),
258
259 // reload
260 new FXMenuSeparator(fileMenu);
261
263 TL("Reload"), "Ctrl+R", TL("Reload the network."),
265
267 TL("Reload Network"), "", TL("Reload the network."),
269
270 new FXMenuSeparator(fileMenu);
271
272 // create netedit config menu options
273 buildNeteditConfigSection(fileMenuNeteditConfig);
274 myNeteditConfigMenuCascade = new FXMenuCascade(fileMenu, TL("Netedit Config"), GUIIconSubSys::getIcon(GUIIcon::NETEDIT_MINI), fileMenuNeteditConfig);
275
276 // create SumoConfig menu options
277 buildSumoConfigSection(fileMenuSumoConfig);
278 mySumoConfigMenuCascade = new FXMenuCascade(fileMenu, TL("Sumo Config"), GUIIconSubSys::getIcon(GUIIcon::SUMO_MINI), fileMenuSumoConfig);
279
280 // create TLS menu options
281 buildTrafficLightSection(fileMenuTLS);
282 myTLSMenuCascade = new FXMenuCascade(fileMenu, TL("Traffic Lights"), GUIIconSubSys::getIcon(GUIIcon::MODETLS), fileMenuTLS);
283
284 // create edgeTypes menu options
285 buildEdgeTypeSection(fileMenuEdgeTypes);
286 myEdgeTypesMenuCascade = new FXMenuCascade(fileMenu, TL("Edge Types"), GUIIconSubSys::getIcon(GUIIcon::MODECREATEEDGE), fileMenuEdgeTypes);
287
288 // create Additionals menu options
289 buildAdditionalSection(fileMenuAdditionals);
290 myAdditionalMenuCascade = new FXMenuCascade(fileMenu, TL("Additionals and Shapes"), GUIIconSubSys::getIcon(GUIIcon::MODEADDITIONAL), fileMenuAdditionals);
291
292 // create DemandElements menu options
293 buildDemandSection(fileMenuDemandElements);
294 myDemandMenuCascade = new FXMenuCascade(fileMenu, TL("Demand Elements"), GUIIconSubSys::getIcon(GUIIcon::SUPERMODEDEMAND), fileMenuDemandElements);
295
296 // create DataElements menu options
297 buildDataSection(fileMenuDataElements);
298 myDataMenuCascade = new FXMenuCascade(fileMenu, TL("Data Elements"), GUIIconSubSys::getIcon(GUIIcon::SUPERMODEDATA), fileMenuDataElements);
299
300 // create MeanDatas menu options
301 buildMeanDataSection(fileMenuMeanDataElements);
302 myMeanDataMenuCascade = new FXMenuCascade(fileMenu, TL("MeanData Elements"), GUIIconSubSys::getIcon(GUIIcon::MODEMEANDATA), fileMenuMeanDataElements);
303
304 // add checkBox for quick load
305 new FXMenuSeparator(fileMenu);
306 menuCheckAllowUndoRedoLoading = GUIDesigns::buildFXMenuCheckbox(fileMenu,
307 TL("Allow undoing element loading"), TL("Allow to undo loading of elements (Slow if a lot of elements are loaded)"),
308 myApplicationWindow, MID_GNE_TOGGLE_UNDOREDO_LOADING);
309 // set default value
310 menuCheckAllowUndoRedoLoading->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "AllowUndoRedoLoading", true));
311
312 // close network
313 new FXMenuSeparator(fileMenu);
315 TL("Close"), "Ctrl+W", TL("Close the network."),
317}
318
319
320void
322 mySumoConfigMenuCascade->enable();
323 myNeteditConfigMenuCascade->enable();
324 myTLSMenuCascade->enable();
325 myEdgeTypesMenuCascade->enable();
326 myAdditionalMenuCascade->enable();
327 myDemandMenuCascade->enable();
328 myDataMenuCascade->enable();
329 myMeanDataMenuCascade->enable();
330}
331
332
333void
335 mySumoConfigMenuCascade->disable();
336 myNeteditConfigMenuCascade->disable();
337 myTLSMenuCascade->disable();
338 myEdgeTypesMenuCascade->disable();
339 myAdditionalMenuCascade->disable();
340 myDemandMenuCascade->disable();
341 myDataMenuCascade->disable();
342 myMeanDataMenuCascade->disable();
343}
344
345
346void
348 myTLSMenuCascade->show();
349 myDataMenuCascade->show();
350 myMeanDataMenuCascade->show();
351}
352
353
354void
356 myTLSMenuCascade->hide();
357 myDataMenuCascade->hide();
358 myMeanDataMenuCascade->hide();
359}
360
361
362void
365 TL("Save Netedit Config"), "Ctrl+Shift+E", TL("Save netedit configuration file."),
367
369 TL("Save Netedit Config As..."), "", TL("Save netedit configuration in a new file."),
371
372 new FXMenuSeparator(menuPane);
373
375 TL("Reload Netedit Config"), "", TL("Reload netedit configuration."),
377}
378
379
380void
383 TL("Save Sumo Config"), "Ctrl+Shift+S", TL("Save sumo configuration file."),
385
387 TL("Save Sumo Config As..."), "", TL("Save sumo configuration in a new file."),
389
390 new FXMenuSeparator(menuPane);
391
393 TL("Reload Sumo Config"), "", TL("Reload sumo configuration."),
395}
396
397
398void
401 TL("Load TLS Programs..."), "Ctrl+K", TL("Load programs for traffic lights in the current net."),
403
404 new FXMenuSeparator(menuPane);
405
407 TL("Save TLS Programs"), "Ctrl+Shift+K", TL("Save all traffic light programs of the current network."),
409
411 TL("Save TLS Programs As..."), "", TL("Save all traffic light programs of the current network to another file."),
413
414 new FXMenuSeparator(menuPane);
415
417 TL("Reload TLS Programs"), "", TL("Reload TLS Programs."),
419}
420
421
422void
425 TL("Load Edge Types..."), "Ctrl+H", TL("Load edge types in the current net."),
427
428 new FXMenuSeparator(menuPane);
429
431 TL("Save Edge Types"), "Ctrl+Shift+H", TL("Save edge types of the current net."),
433
435 TL("Save Edge Types As..."), "", TL("Save edge types of the current net to another file."),
437
438 new FXMenuSeparator(menuPane);
439
441 TL("Reload edge types"), "", TL("Reload edge types."),
443}
444
445
446void
449 TL("Load Additionals..."), "Ctrl+A", TL("Load additionals and shapes."),
451
452 new FXMenuSeparator(menuPane);
453
455 TL("Save Additionals"), "Ctrl+Shift+A", TL("Save additionals and shapes."),
457
459 TL("Save Additionals unified as..."), "", TL("Save all additional elements to the chosen file."),
461
463 TL("Save JuPedSim Elements as..."), "", TL("Save JuPedSim elements in a separated file."),
465
466 new FXMenuSeparator(menuPane);
467
469 TL("Reload Additionals"), "", TL("Reload additionals."),
471}
472
473
474void
477 TL("Load Demand Elements..."), "Ctrl+D", TL("Load demand elements."),
479
480 new FXMenuSeparator(menuPane);
481
483 TL("Save Demand Elements"), "Ctrl+Shift+D", TL("Save demand elements."),
485
487 TL("Save Demand Elements unified as..."), "", TL("Save all demand elements to the chosen file"),
489
490 new FXMenuSeparator(menuPane);
491
493 TL("Reload Demand Elements"), "", TL("Reload demand elements."),
495}
496
497
498void
501 TL("Load Data Elements..."), "Ctrl+B", TL("Load data elements."),
503
504 new FXMenuSeparator(menuPane);
505
507 TL("Save Data Elements"), "Ctrl+Shift+B", TL("Save data elements."),
509
511 TL("Save Data Elements unified as..."), "", TL("Save all data elements to the chosen file."),
513
514 new FXMenuSeparator(menuPane);
515
517 TL("Reload Data Elements"), "", TL("Reload data elements."),
519}
520
521
522void
525 TL("Load MeanDatas..."), "", TL("Load meanDatas and shapes."),
527
528 new FXMenuSeparator(menuPane);
529
531 TL("Save MeanDatas"), "", TL("Save meanDatas and shapes."),
533
535 TL("Save MeanDatas unified as..."), "Ctrl+Shift+M", TL("Save all meanData elements to the chosen file."),
537
538 new FXMenuSeparator(menuPane);
539
541 TL("Reload MeanDatas"), "", TL("Reload meanDatas."),
543}
544
545// ---------------------------------------------------------------------------
546// GNEApplicationWindowHelper::ModesMenuCommands::CommonMenuCommands - methods
547// ---------------------------------------------------------------------------
548
550 myModesMenuCommandsParent(modesMenuCommandsParent) {
551}
552
553
554void
556 // build every FXMenuCommand giving it a shortcut
557 inspectMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
558 TL("&Inspect"), "I", TL("Inspect elements and change their attributes."),
559 GUIIconSubSys::getIcon(GUIIcon::MODEINSPECT), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_I_MODE_INSPECT);
560 deleteMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
561 TL("&Delete"), "D", TL("Delete elements."),
562 GUIIconSubSys::getIcon(GUIIcon::MODEDELETE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE);
563 selectMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
564 TL("&Select"), "S", TL("Select elements."),
565 GUIIconSubSys::getIcon(GUIIcon::MODESELECT), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT);
566}
567
568// ---------------------------------------------------------------------------
569// GNEApplicationWindowHelper::ModesMenuCommands::NetworkMenuCommands - methods
570// ---------------------------------------------------------------------------
571
573 myModesMenuCommandsParent(modesMenuCommandsParent) {
574}
575
576
577void
579 createEdgeMode->show();
580 moveMode->show();
581 connectMode->show();
582 prohibitionMode->show();
583 TLSMode->show();
584 additionalMode->show();
585 crossingMode->show();
586 TAZMode->show();
587 shapeMode->show();
588 wireMode->show();
589 decalMode->show();
590}
591
592
593void
595 createEdgeMode->hide();
596 moveMode->hide();
597 connectMode->hide();
598 prohibitionMode->hide();
599 TLSMode->hide();
600 additionalMode->hide();
601 crossingMode->hide();
602 TAZMode->hide();
603 shapeMode->hide();
604 wireMode->hide();
605 decalMode->hide();
606}
607
608
609void
611 // build every FXMenuCommand giving it a shortcut
612 moveMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
613 TL("&Move"), "M", TL("Move elements."),
614 GUIIconSubSys::getIcon(GUIIcon::MODEMOVE), myModesMenuCommandsParent->myApplicationWindow,
616 createEdgeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
617 TL("&Edge"), "E", TL("Create junction and edges."),
618 GUIIconSubSys::getIcon(GUIIcon::MODECREATEEDGE), myModesMenuCommandsParent->myApplicationWindow,
620 TLSMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
621 TL("&Traffic light"), "T", TL("Modes traffic lights over junctions."),
622 GUIIconSubSys::getIcon(GUIIcon::MODETLS), myModesMenuCommandsParent->myApplicationWindow,
624 connectMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
625 TL("&Connection"), "C", TL("Modes connections between lanes."),
626 GUIIconSubSys::getIcon(GUIIcon::MODECONNECTION), myModesMenuCommandsParent->myApplicationWindow,
628 prohibitionMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
629 TL("Pro&hibition"), "H", TL("Modes connection prohibitions."),
630 GUIIconSubSys::getIcon(GUIIcon::MODEPROHIBITION), myModesMenuCommandsParent->myApplicationWindow,
632 crossingMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
633 TL("C&rossing"), "R", TL("Create crossings between edges."),
634 GUIIconSubSys::getIcon(GUIIcon::MODECROSSING), myModesMenuCommandsParent->myApplicationWindow,
636 additionalMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
637 TL("&Additional"), "A", TL("Create additional elements."),
638 GUIIconSubSys::getIcon(GUIIcon::MODEADDITIONAL), myModesMenuCommandsParent->myApplicationWindow,
640 wireMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
641 TL("&Wire"), "W", TL("Create wires."),
642 GUIIconSubSys::getIcon(GUIIcon::MODEWIRE), myModesMenuCommandsParent->myApplicationWindow,
644 TAZMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
645 TL("TA&Z"), "Z", TL("Create Traffic Assignment Zones."),
646 GUIIconSubSys::getIcon(GUIIcon::MODETAZ), myModesMenuCommandsParent->myApplicationWindow,
648 shapeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
649 TL("&POI-Poly"), "P", TL("Create Points-Of-Interest and polygons."),
650 GUIIconSubSys::getIcon(GUIIcon::MODESHAPE), myModesMenuCommandsParent->myApplicationWindow,
652 decalMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
653 TL("Deca&ls"), "U", TL("Create decals."),
654 GUIIconSubSys::getIcon(GUIIcon::MODEDECAL), myModesMenuCommandsParent->myApplicationWindow,
656}
657
658// ---------------------------------------------------------------------------
659// GNEApplicationWindowHelper::ModesMenuCommands::DemandMenuCommands - methods
660// ---------------------------------------------------------------------------
661
663 myModesMenuCommandsParent(modesMenuCommandsParent) {
664}
665
666
667void
669 moveMode->show();
670 routeMode->show();
671 routeDistributionMode->show();
672 vehicleMode->show();
673 typeMode->show();
674 typeDistributionMode->show();
675 stopMode->show();
676 personMode->show();
677 personPlanMode->show();
678 containerMode->show();
679 containerPlanMode->show();
680}
681
682
683void
685 moveMode->hide();
686 routeMode->hide();
687 routeDistributionMode->hide();
688 vehicleMode->hide();
689 typeMode->hide();
690 typeDistributionMode->hide();
691 stopMode->hide();
692 personMode->hide();
693 personPlanMode->hide();
694 containerMode->hide();
695 containerPlanMode->hide();
696}
697
698
699void
701 // build every FXMenuCommand giving it a shortcut
702 moveMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
703 TL("&Move"), "M", TL("Move elements."),
704 GUIIconSubSys::getIcon(GUIIcon::MODEMOVE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_M_MODE_MOVE_MEANDATA);
705 routeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
706 TL("Route"), "R", TL("Create Routes."),
707 GUIIconSubSys::getIcon(GUIIcon::MODEROUTE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_R_MODE_CROSSING_ROUTE_EDGERELDATA);
708 routeDistributionMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
709 TL("Route distribution"), "W", TL("Create and edit route distributions."),
710 GUIIconSubSys::getIcon(GUIIcon::MODEROUTEDISTRIBUTION), myModesMenuCommandsParent->myApplicationWindow,
712 vehicleMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
713 TL("Vehicle"), "V", TL("Create vehicles."),
714 GUIIconSubSys::getIcon(GUIIcon::MODEVEHICLE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_V_MODE_VEHICLE);
715 typeMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
716 TL("Type"), "T", TL("Create types (vehicles, person and containers)."),
717 GUIIconSubSys::getIcon(GUIIcon::MODETYPE), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_T_MODE_TLS_TYPE);
718 typeDistributionMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
719 TL("TypeDistribution"), "U", TL("Create and edit type distributions."),
721 stopMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
722 TL("Stop"), "A", TL("Create stops."),
724 personMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
725 TL("Person"), "P", TL("Create persons."),
726 GUIIconSubSys::getIcon(GUIIcon::MODEPERSON), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_P_MODE_POLYGON_PERSON);
727 personPlanMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
728 TL("Person plan"), "L", TL("Create person plans."),
729 GUIIconSubSys::getIcon(GUIIcon::MODEPERSONPLAN), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_L_MODE_PERSONPLAN);
730 containerMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
731 TL("Container"), "C", TL("Create containers."),
732 GUIIconSubSys::getIcon(GUIIcon::MODECONTAINER), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_C_MODE_CONNECT_CONTAINER);
733 containerPlanMode = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
734 TL("Container plan"), "H", TL("Create container plans."),
736}
737
738// ---------------------------------------------------------------------------
739// GNEApplicationWindowHelper::ModesMenuCommands::DataMenuCommands - methods
740// ---------------------------------------------------------------------------
741
743 myModesMenuCommandsParent(modesMenuCommandsParent) {
744}
745
746
747void
749 edgeData->show();
750 edgeRelData->show();
751 TAZRelData->show();
752 meanData->show();
753}
754
755
756void
758 edgeData->hide();
759 edgeRelData->hide();
760 TAZRelData->hide();
761 meanData->hide();
762}
763
764
765void
767 // build every FXMenuCommand giving it a shortcut
768 edgeData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
769 TL("&EdgeData"), "E", TL("Create edgeData elements."),
770 GUIIconSubSys::getIcon(GUIIcon::MODEEDGEDATA), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_E_MODE_EDGE_EDGEDATA);
771 edgeRelData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
772 TL("Edge&Relation"), "R", TL("Create edgeRelation elements."),
774 TAZRelData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
775 TL("TA&ZRelation"), "Z", TL("Create TAZRelation elements."),
776 GUIIconSubSys::getIcon(GUIIcon::MODETAZRELDATA), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_Z_MODE_TAZ_TAZREL);
777 meanData = GUIDesigns::buildFXMenuCommandShortcut(modesMenu,
778 TL("&MeanData"), "M", TL("Create MeanData edge/lanes."),
779 GUIIconSubSys::getIcon(GUIIcon::MODEMEANDATA), myModesMenuCommandsParent->myApplicationWindow, MID_HOTKEY_M_MODE_MOVE_MEANDATA);
780}
781
782
783// ---------------------------------------------------------------------------
784// GNEApplicationWindowHelper::ModesMenuCommands - methods
785// ---------------------------------------------------------------------------
786#ifdef _MSC_VER
787#pragma warning(push)
788#pragma warning(disable: 4355) // mask warning about "this" in initializers
789#endif
797#ifdef _MSC_VER
798#pragma warning(pop)
799#endif
800
801
802void
804 commonMenuCommands.buildCommonMenuCommands(modesMenu);
805 // build Network modes commands and hide it
806 networkMenuCommands.buildNetworkMenuCommands(modesMenu);
807 networkMenuCommands.hideNetworkMenuCommands();
808 // build Demand Modes commands
809 demandMenuCommands.buildDemandMenuCommands(modesMenu);
810 demandMenuCommands.hideDemandMenuCommands();
811 // build Data Modes commands
812 dataMenuCommands.buildDataMenuCommands(modesMenu);
813 dataMenuCommands.hideDataMenuCommands();
814}
815
816
817void
819 if (supermode == Supermode::NETWORK) {
820 networkMenuCommands.showNetworkMenuCommands();
821 } else if (supermode == Supermode::DEMAND) {
822 demandMenuCommands.showDemandMenuCommands();
823 } else if (supermode == Supermode::DATA) {
824 dataMenuCommands.showDataMenuCommands();
825 }
826}
827
828
829void
831 if (supermode == Supermode::NETWORK) {
832 networkMenuCommands.connectMode->hide();
833 networkMenuCommands.TLSMode->hide();
834 networkMenuCommands.prohibitionMode->hide();
835 networkMenuCommands.wireMode->hide();
836 networkMenuCommands.decalMode->hide();
837 } else if (supermode == Supermode::DEMAND) {
838 demandMenuCommands.moveMode->hide();
839 demandMenuCommands.vehicleMode->hide();
840 demandMenuCommands.stopMode->hide();
841 demandMenuCommands.containerMode->hide();
842 demandMenuCommands.containerPlanMode->hide();
843 } else if (supermode == Supermode::DATA) {
844 dataMenuCommands.hideDataMenuCommands();
845 }
846}
847
848// ---------------------------------------------------------------------------
849// GNEApplicationWindowHelper::EditMenuCommands::NetworkViewOptions - methods
850// ---------------------------------------------------------------------------
851
853 myApplicationWindow(applicationWindow) {
854}
855
856
857void
859 // create menu checks
860 menuCheckToggleGrid = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
861 TL("Show grid"), "Ctrl+G or Alt+1", "",
864
865 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
866 TL("Hide junction shape"), "Ctrl+J or Alt+2", "",
869
870 menuCheckDrawSpreadVehicles = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
871 TL("Draw vehicles spread in lane or in depart position"), "Alt+3", "",
874
875 menuCheckShowDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
876 TL("Show demand elements"), "Alt+4", "",
879
880 menuCheckSelectEdges = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
881 TL("Clicking should target lanes"), "Alt+5", "",
884
885 menuCheckShowConnections = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
886 TL("Show connections over junctions"), "Alt+6", "",
889
890 menuCheckHideConnections = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
891 TL("Hide connections"), "Alt+7", "",
894
895 menuCheckShowAdditionalSubElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
896 TL("Show sub-additional elements"), "Alt+8", "",
899
900 menuCheckShowTAZElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
901 TL("Show TAZ elements"), "Alt+9", "",
904
905 menuCheckExtendSelection = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
906 TL("Selecting multiple edges automatically select their junctions"), "Alt+10", "",
909
910 menuCheckChangeAllPhases = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
911 TL("Clicking should apply state changes to all phases of TLS plan"), "Alt+5", "",
914
915 menuCheckMergeAutomatically = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
916 TL("Don't ask for confirmation before merging junction"), "Alt+5", "",
919
920 menuCheckChainEdges = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
921 TL("Create consecutive edges"), "Alt+5", "",
924
925 menuCheckAutoOppositeEdge = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
926 TL("Create an edge in the opposite direction"), "Alt+6", "",
929
930 menuCheckMoveElevation = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
931 TL("Apply mouse movement to elevation"), "Alt+7", "",
934
935 menuCheckShowJunctionBubble = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
936 TL("Show bubbles over junctions shapes"), "Alt+8", "",
939
940 menuCheckShowPolygonSymbols = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
941 TL("Show polygon symbols"), "Alt+9", "",
944 menuCheckShowPolygonSymbols->setCheck(TRUE);
945
946 // build separator
947 separator = new FXMenuSeparator(editMenu);
948}
949
950
951void
953 menuCheckToggleGrid->hide();
954 menuCheckToggleDrawJunctionShape->hide();
955 menuCheckDrawSpreadVehicles->hide();
956 menuCheckShowDemandElements->hide();
957 menuCheckSelectEdges->hide();
958 menuCheckShowConnections->hide();
959 menuCheckHideConnections->hide();
960 menuCheckShowAdditionalSubElements->hide();
961 menuCheckShowTAZElements->hide();
962 menuCheckExtendSelection->hide();
963 menuCheckChangeAllPhases->hide();
964 menuCheckMergeAutomatically->hide();
965 menuCheckShowJunctionBubble->hide();
966 menuCheckMoveElevation->hide();
967 menuCheckChainEdges->hide();
968 menuCheckAutoOppositeEdge->hide();
969 menuCheckShowPolygonSymbols->hide();
970 separator->hide();
971}
972
973
974void
976 int index = 2;
977 // update all accel text
978 if (menuCheckDrawSpreadVehicles->shown()) {
979 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
980 index++;
981 }
982 if (menuCheckDrawSpreadVehicles->shown()) {
983 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
984 index++;
985 }
986 if (menuCheckShowDemandElements->shown()) {
987 menuCheckShowDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
988 index++;
989 }
990 if (menuCheckSelectEdges->shown()) {
991 menuCheckSelectEdges->setAccelText(("Alt+" + toString(index)).c_str());
992 index++;
993 }
994 if (menuCheckShowConnections->shown()) {
995 menuCheckShowConnections->setAccelText(("Alt+" + toString(index)).c_str());
996 index++;
997 }
998 if (menuCheckHideConnections->shown()) {
999 menuCheckHideConnections->setAccelText(("Alt+" + toString(index)).c_str());
1000 index++;
1001 }
1002 if (menuCheckShowAdditionalSubElements->shown()) {
1003 menuCheckShowAdditionalSubElements->setAccelText(("Alt+" + toString(index)).c_str());
1004 index++;
1005 }
1006 if (menuCheckShowTAZElements->shown()) {
1007 menuCheckShowTAZElements->setAccelText(("Alt+" + toString(index)).c_str());
1008 index++;
1009 }
1010 if (menuCheckExtendSelection->shown()) {
1011 menuCheckExtendSelection->setAccelText(("Alt+" + toString(index)).c_str());
1012 index++;
1013 }
1014 if (menuCheckChangeAllPhases->shown()) {
1015 menuCheckChangeAllPhases->setAccelText(("Alt+" + toString(index)).c_str());
1016 index++;
1017 }
1018 if (menuCheckMergeAutomatically->shown()) {
1019 menuCheckMergeAutomatically->setAccelText(("Alt+" + toString(index)).c_str());
1020 index++;
1021 }
1022 if (menuCheckChainEdges->shown()) {
1023 menuCheckChainEdges->setAccelText(("Alt+" + toString(index)).c_str());
1024 index++;
1025 }
1026 if (menuCheckAutoOppositeEdge->shown()) {
1027 menuCheckAutoOppositeEdge->setAccelText(("Alt+" + toString(index)).c_str());
1028 index++;
1029 }
1030 if (menuCheckMoveElevation->shown()) {
1031 menuCheckMoveElevation->setAccelText(("Alt+" + toString(index)).c_str());
1032 index++;
1033 }
1034 if (menuCheckShowJunctionBubble->shown()) {
1035 menuCheckShowJunctionBubble->setAccelText(("Alt+" + toString(index)).c_str());
1036 index++;
1037 }
1038 if (menuCheckShowPolygonSymbols->shown()) {
1039 menuCheckShowPolygonSymbols->setAccelText(("Alt+" + toString(index)).c_str());
1040 index++;
1041 }
1042}
1043
1044// ---------------------------------------------------------------------------
1045// GNEApplicationWindowHelper::DemandViewOptions - methods
1046// ---------------------------------------------------------------------------
1047
1051
1052
1053void
1055 // create menu checks
1056 menuCheckToggleGrid = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1057 TL("Show grid"), "Ctrl+G or Alt+1", "",
1060
1061 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1062 TL("Hide junction shape"), "Ctrl+J or Alt+2", "",
1065
1066 menuCheckDrawSpreadVehicles = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1067 TL("Draw vehicles spread/depart position"), "Alt+3", "",
1070
1071 menuCheckHideShapes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1072 TL("Show shapes"), "Alt+4", "",
1075
1076 menuCheckShowAllTrips = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1077 TL("Show all trips"), "Alt+5", "",
1080
1081 menuCheckShowAllPersonPlans = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1082 TL("Show all person plans"), "Alt+6", "",
1085
1086 menuCheckLockPerson = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1087 TL("Lock selected person"), "Alt+7", "",
1090
1091 menuCheckShowAllContainerPlans = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1092 TL("Show all container plans"), "Alt+6", "",
1095
1096 menuCheckLockContainer = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1097 TL("Lock selected container"), "Alt+7", "",
1100
1101 menuCheckHideNonInspectedDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1102 TL("Show non-inspected demand elements"), "Alt+8", "",
1105
1106 menuCheckShowOverlappedRoutes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1107 TL("Show number of overlapped routes"), "Alt+9", "",
1110
1111 // build separator
1112 separator = new FXMenuSeparator(editMenu);
1113}
1114
1115
1116void
1118 menuCheckToggleGrid->hide();
1119 menuCheckToggleDrawJunctionShape->hide();
1120 menuCheckDrawSpreadVehicles->hide();
1121 menuCheckHideShapes->hide();
1122 menuCheckShowAllTrips->hide();
1123 menuCheckHideNonInspectedDemandElements->hide();
1124 menuCheckShowOverlappedRoutes->hide();
1125 menuCheckShowAllPersonPlans->hide();
1126 menuCheckLockPerson->hide();
1127 menuCheckShowAllContainerPlans->hide();
1128 menuCheckLockContainer->hide();
1129 separator->hide();
1130}
1131
1132
1133void
1135 int index = 2;
1136 // update all accel text
1137 if (menuCheckDrawSpreadVehicles->shown()) {
1138 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
1139 index++;
1140 }
1141 if (menuCheckHideShapes->shown()) {
1142 menuCheckHideShapes->setAccelText(("Alt+" + toString(index)).c_str());
1143 index++;
1144 }
1145 if (menuCheckShowAllTrips->shown()) {
1146 menuCheckShowAllTrips->setAccelText(("Alt+" + toString(index)).c_str());
1147 index++;
1148 }
1149 if (menuCheckHideNonInspectedDemandElements->shown()) {
1150 menuCheckHideNonInspectedDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
1151 index++;
1152 }
1153 if (menuCheckShowOverlappedRoutes->shown()) {
1154 menuCheckShowOverlappedRoutes->setAccelText(("Alt+" + toString(index)).c_str());
1155 index++;
1156 }
1157 if (menuCheckShowAllPersonPlans->shown()) {
1158 menuCheckShowAllPersonPlans->setAccelText(("Alt+" + toString(index)).c_str());
1159 index++;
1160 }
1161 if (menuCheckLockPerson->shown()) {
1162 menuCheckLockPerson->setAccelText(("Alt+" + toString(index)).c_str());
1163 index++;
1164 }
1165 if (menuCheckShowAllContainerPlans->shown()) {
1166 menuCheckShowAllContainerPlans->setAccelText(("Alt+" + toString(index)).c_str());
1167 index++;
1168 }
1169 if (menuCheckLockContainer->shown()) {
1170 menuCheckLockContainer->setAccelText(("Alt+" + toString(index)).c_str());
1171 index++;
1172 }
1173}
1174
1175// ---------------------------------------------------------------------------
1176// GNEApplicationWindowHelper::EditMenuCommands::DataViewOptions - methods
1177// ---------------------------------------------------------------------------
1178
1182
1183
1184void
1186 // create menu checks
1187 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1188 TL("Hide junction shape"), "Ctrl+J or Alt+1", "",
1191
1192 menuCheckShowAdditionals = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1193 TL("Show additionals"), "Alt+2", "",
1196
1197 menuCheckShowShapes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1198 TL("Show shapes"), "Alt+3", "",
1201
1202 menuCheckShowDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1203 TL("Show demand elements"), "Alt+4", "",
1206
1207 menuCheckToggleTAZRelDrawing = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1208 TL("Draw TAZRel from center"), "Alt+5", "",
1211
1212 menuCheckToggleTAZDrawFill = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1213 TL("Draw TAZ fill"), "Alt+6", "",
1216
1217 menuCheckToggleTAZRelOnlyFrom = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1218 TL("Only draw TAZRel from"), "Alt+6", "",
1221
1222 menuCheckToggleTAZRelOnlyTo = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1223 TL("Only draw TAZRel to"), "Alt+7", "",
1226 // build separator
1227 separator = new FXMenuSeparator(editMenu);
1228}
1229
1230
1231void
1233 menuCheckToggleDrawJunctionShape->hide();
1234 menuCheckShowAdditionals->hide();
1235 menuCheckShowShapes->hide();
1236 menuCheckShowDemandElements->hide();
1237 menuCheckToggleTAZRelDrawing->hide();
1238 menuCheckToggleTAZDrawFill->hide();
1239 menuCheckToggleTAZRelOnlyFrom->hide();
1240 menuCheckToggleTAZRelOnlyTo->hide();
1241 separator->hide();
1242}
1243
1244
1245void
1247 int index = 2;
1248 // update all accel text
1249 if (menuCheckShowAdditionals->shown()) {
1250 menuCheckShowAdditionals->setAccelText(("Alt+" + toString(index)).c_str());
1251 index++;
1252 }
1253 if (menuCheckShowShapes->shown()) {
1254 menuCheckShowShapes->setAccelText(("Alt+" + toString(index)).c_str());
1255 index++;
1256 }
1257 if (menuCheckShowDemandElements->shown()) {
1258 menuCheckShowDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
1259 index++;
1260 }
1261 if (menuCheckToggleTAZRelDrawing->shown()) {
1262 menuCheckToggleTAZRelDrawing->setAccelText(("Alt+" + toString(index)).c_str());
1263 index++;
1264 }
1265 if (menuCheckToggleTAZDrawFill->shown()) {
1266 menuCheckToggleTAZDrawFill->setAccelText(("Alt+" + toString(index)).c_str());
1267 index++;
1268 }
1269 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
1270 menuCheckToggleTAZRelOnlyFrom->setAccelText(("Alt+" + toString(index)).c_str());
1271 index++;
1272 }
1273 if (menuCheckToggleTAZRelOnlyTo->shown()) {
1274 menuCheckToggleTAZRelOnlyTo->setAccelText(("Alt+" + toString(index)).c_str());
1275 index++;
1276 }
1277}
1278
1279// ---------------------------------------------------------------------------
1280// GNEApplicationWindowHelper::EditMenuCommands - methods
1281// ---------------------------------------------------------------------------
1282
1284 networkViewOptions(applicationWindow),
1285 demandViewOptions(applicationWindow),
1286 dataViewOptions(applicationWindow),
1287 myApplicationWindow(applicationWindow) {
1288}
1289
1290
1291void
1293 // build undo/redo command
1294 undoLastChange = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1295 TL("Undo"), "Ctrl+Z", TL("Undo the last change."),
1297 redoLastChange = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1298 TL("Redo"), "Ctrl+Y", TL("Redo the last change."),
1300 openUndolistDialog = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1301 TL("Show undo/redo history"), "", TL("Open undo/redo history dialog."),
1303 // add checkBox for recomputing in data mode
1304 menuCheckAllowUndoRedo = GUIDesigns::buildFXMenuCheckbox(editMenu,
1305 TL("Allow undo-redo"), "",
1306 myApplicationWindow, MID_GNE_TOGGLE_UNDOREDO);
1307 menuCheckAllowUndoRedo->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "AllowUndoRedo", true));
1308}
1309
1310
1311void
1313 // build rest of menu commands
1314 editViewScheme = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1315 TL("Edit Visualisation"), "F9", TL("Opens a dialog for editing visualization settings."),
1317 editViewPort = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1318 TL("Edit Viewport"), "Ctrl+I", TL("Opens a dialog for editing viewing area, zoom and rotation."),
1320}
1321
1322
1323void
1325 // build toggle front element
1326 toggleFrontElement = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1327 TL("Front element"), "F11", TL("Mark current inspected element as front element"),
1329}
1330
1331
1332void
1334 // add open in sumo options
1335 loadAdditionalsInSUMOGUI = GUIDesigns::buildFXMenuCheckbox(editMenu,
1336 TL("Load additionals in sumo-gui"), TL("Load additionals in sumo-gui."),
1337 myApplicationWindow, MID_TOOLBAREDIT_LOADADDITIONALS);
1338 loadAdditionalsInSUMOGUI->setCheck(TRUE);
1339 loadDemandInSUMOGUI = GUIDesigns::buildFXMenuCheckbox(editMenu,
1340 TL("Load demand in sumo-gui"), TL("Load demand in sumo-gui."),
1341 myApplicationWindow, MID_TOOLBAREDIT_LOADDEMAND);
1342 loadDemandInSUMOGUI->setCheck(TRUE);
1343 openInSUMOGUI = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1344 TL("Open in sumo-gui"), "Ctrl+T", TL("Opens the sumo-gui application with the current network."),
1346}
1347
1348// ---------------------------------------------------------------------------
1349// GNEApplicationWindowHelper::LockMenuCommands - methods
1350// ---------------------------------------------------------------------------
1351
1353 myApplicationWindow(applicationWindow) {
1354}
1355
1356
1357void
1359 // network
1360 menuCheckLockJunctions = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1361 TL("&Junctions"), "", "",
1363 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1364
1365 menuCheckLockEdges = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1366 TL("&Edges"), "", "",
1368 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1369
1370 menuCheckLockLanes = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1371 TL("&Lanes"), "", "",
1373 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1374
1375 menuCheckLockConnections = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1376 TL("&Connections"), "", "",
1378 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1379
1380 menuCheckLockCrossings = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1381 TL("C&rossings"), "", "",
1383 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1384
1385 menuCheckLockWalkingAreas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1386 TL("Walkin&gAreas"), "", "",
1388 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1389
1390 menuCheckLockAdditionals = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1391 TL("&Additionals"), "", "",
1393 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1394
1395 menuCheckLockTAZs = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1396 TL("&TAZs"), "", "",
1398 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1399
1400 menuCheckLockWires = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1401 TL("&Wires"), "", "",
1403 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1404
1405 menuCheckLockPolygons = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1406 TL("&Polygons"), "", "",
1408 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1409
1410 menuCheckLockPOIs = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1411 TL("P&OIs"), "", "",
1413 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1414
1415 menuCheckLockJpsWalkableAreas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1416 TL("WalkableAreas"), "", "",
1418 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1419
1420 menuCheckLockJpsObstacles = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1421 TL("Obstacles"), "", "",
1423 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1424 // demand
1425 menuCheckLockRoutes = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1426 TL("&Routes"), "", "",
1428 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1429
1430 menuCheckLockVehicles = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1431 TL("&Vehicles"), "", "",
1433 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1434
1435 menuCheckLockPersons = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1436 TL("&Persons"), "", "",
1438 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1439
1440 menuCheckLockPersonTrips = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1441 TL("Person&Trips"), "", "",
1443 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1444
1445 menuCheckLockWalks = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1446 TL("&Walks"), "", "",
1448 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1449
1450 menuCheckLockRides = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1451 TL("Ri&des"), "", "",
1453 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1454
1455 menuCheckLockContainers = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1456 TL("&Containers"), "", "",
1458 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1459
1460 menuCheckLockTransports = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1461 TL("Tra&nsports"), "", "",
1463 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1464
1465 menuCheckLockTranships = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1466 TL("Trans&hips"), "", "",
1468 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1469
1470 menuCheckLockStops = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1471 TL("Stop&s"), "", "",
1473 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1474 // data
1475 menuCheckLockEdgeDatas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1476 TL("&EdgeDatas"), "", "",
1478 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1479
1480 menuCheckLockEdgeRelDatas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1481 TL("E&dgeRelDatas"), "", "",
1483 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1484
1485 menuCheckLockEdgeTAZRels = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1486 TL("Edge&TAZRel"), "", "",
1488 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1489
1490 // separator
1491 new FXMenuSeparator(fileMenu);
1492
1493 menuCheckLockSelectedElements = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1494 TL("Lock selected elements"), "", TL("selected elements"),
1496
1497 // separator
1498 new FXMenuSeparator(fileMenu);
1499
1501 TL("Lock all elements"), "", TL("all elements"),
1503
1505 TL("Unlock all elements"), "", TL("Unlock all elements"),
1507}
1508
1509
1510void
1512 // network
1513 menuCheckLockJunctions->remHotKey(parseHotKey('j'));
1514 menuCheckLockEdges->remHotKey(parseHotKey('e'));
1515 menuCheckLockLanes->remHotKey(parseHotKey('l'));
1516 menuCheckLockConnections->remHotKey(parseHotKey('c'));
1517 menuCheckLockCrossings->remHotKey(parseHotKey('r'));
1518 menuCheckLockWalkingAreas->remHotKey(parseHotKey('g'));
1519 menuCheckLockAdditionals->remHotKey(parseHotKey('a'));
1520 menuCheckLockTAZs->remHotKey(parseHotKey('t'));
1521 menuCheckLockWires->remHotKey(parseHotKey('w'));
1522 menuCheckLockPolygons->remHotKey(parseHotKey('p'));
1523 menuCheckLockPOIs->remHotKey(parseHotKey('o'));
1524 menuCheckLockJpsWalkableAreas->remHotKey(parseHotKey('n'));
1525 menuCheckLockJpsObstacles->remHotKey(parseHotKey('b'));
1526 // demand
1527 menuCheckLockRoutes->remHotKey(parseHotKey('r'));
1528 menuCheckLockVehicles->remHotKey(parseHotKey('v'));
1529 menuCheckLockPersons->remHotKey(parseHotKey('p'));
1530 menuCheckLockPersonTrips->remHotKey(parseHotKey('t'));
1531 menuCheckLockWalks->remHotKey(parseHotKey('w'));
1532 menuCheckLockRides->remHotKey(parseHotKey('d'));
1533 menuCheckLockContainers->remHotKey(parseHotKey('c'));
1534 menuCheckLockTransports->remHotKey(parseHotKey('n'));
1535 menuCheckLockTranships->remHotKey(parseHotKey('h'));
1536 menuCheckLockStops->remHotKey(parseHotKey('s'));
1537 // data
1538 menuCheckLockEdgeDatas->remHotKey(parseHotKey('e'));
1539 menuCheckLockEdgeRelDatas->remHotKey(parseHotKey('d'));
1540 menuCheckLockEdgeTAZRels->remHotKey(parseHotKey('t'));
1541}
1542
1543void
1545 // first enable menu commands
1546 menuCheckLockJunctions->enable();
1547 menuCheckLockEdges->enable();
1548 menuCheckLockLanes->enable();
1549 menuCheckLockConnections->enable();
1550 menuCheckLockCrossings->enable();
1551 menuCheckLockWalkingAreas->enable();
1552 menuCheckLockAdditionals->enable();
1553 menuCheckLockTAZs->enable();
1554 menuCheckLockWires->enable();
1555 menuCheckLockPolygons->enable();
1556 menuCheckLockPOIs->enable();
1557 menuCheckLockJpsWalkableAreas->enable();
1558 menuCheckLockJpsObstacles->enable();
1559 // set accels
1560 menuCheckLockJunctions->addHotKey(parseHotKey('j'));
1561 menuCheckLockEdges->addHotKey(parseHotKey('e'));
1562 menuCheckLockLanes->addHotKey(parseHotKey('l'));
1563 menuCheckLockConnections->addHotKey(parseHotKey('c'));
1564 menuCheckLockCrossings->addHotKey(parseHotKey('r'));
1565 menuCheckLockWalkingAreas->addHotKey(parseHotKey('g'));
1566 menuCheckLockAdditionals->addHotKey(parseHotKey('a'));
1567 menuCheckLockTAZs->addHotKey(parseHotKey('t'));
1568 menuCheckLockWires->addHotKey(parseHotKey('w'));
1569 menuCheckLockPolygons->addHotKey(parseHotKey('p'));
1570 menuCheckLockPOIs->addHotKey(parseHotKey('o'));
1571 menuCheckLockJpsWalkableAreas->addHotKey(parseHotKey('n'));
1572 menuCheckLockJpsObstacles->addHotKey(parseHotKey('b'));
1573 // now show it
1574 menuCheckLockJunctions->show();
1575 menuCheckLockEdges->show();
1576 menuCheckLockLanes->show();
1577 menuCheckLockConnections->show();
1578 menuCheckLockCrossings->show();
1579 menuCheckLockWalkingAreas->show();
1580 menuCheckLockAdditionals->show();
1581 menuCheckLockTAZs->show();
1582 menuCheckLockWires->show();
1583 menuCheckLockPolygons->show();
1584 menuCheckLockPOIs->show();
1585 menuCheckLockJpsWalkableAreas->show();
1586 menuCheckLockJpsObstacles->show();
1587}
1588
1589
1590void
1592 // first disable menu commands
1593 menuCheckLockJunctions->disable();
1594 menuCheckLockEdges->disable();
1595 menuCheckLockLanes->disable();
1596 menuCheckLockConnections->disable();
1597 menuCheckLockCrossings->disable();
1598 menuCheckLockWalkingAreas->disable();
1599 menuCheckLockAdditionals->disable();
1600 menuCheckLockTAZs->disable();
1601 menuCheckLockPolygons->disable();
1602 menuCheckLockPOIs->disable();
1603 menuCheckLockJpsWalkableAreas->disable();
1604 menuCheckLockJpsObstacles->disable();
1605 // now hide it
1606 menuCheckLockJunctions->hide();
1607 menuCheckLockEdges->hide();
1608 menuCheckLockLanes->hide();
1609 menuCheckLockConnections->hide();
1610 menuCheckLockCrossings->hide();
1611 menuCheckLockWalkingAreas->hide();
1612 menuCheckLockAdditionals->hide();
1613 menuCheckLockTAZs->hide();
1614 menuCheckLockWires->hide();
1615 menuCheckLockPolygons->hide();
1616 menuCheckLockPOIs->hide();
1617 menuCheckLockJpsWalkableAreas->hide();
1618 menuCheckLockJpsObstacles->hide();
1619}
1620
1621
1622void
1624 // first enable menu commands
1625 menuCheckLockRoutes->enable();
1626 menuCheckLockVehicles->enable();
1627 menuCheckLockPersons->enable();
1628 menuCheckLockPersonTrips->enable();
1629 menuCheckLockWalks->enable();
1630 menuCheckLockRides->enable();
1631 menuCheckLockContainers->enable();
1632 menuCheckLockTransports->enable();
1633 menuCheckLockTranships->enable();
1634 menuCheckLockStops->enable();
1635 // set accels
1636 menuCheckLockRoutes->addHotKey(parseHotKey('r'));
1637 menuCheckLockVehicles->addHotKey(parseHotKey('v'));
1638 menuCheckLockPersons->addHotKey(parseHotKey('p'));
1639 menuCheckLockPersonTrips->addHotKey(parseHotKey('t'));
1640 menuCheckLockWalks->addHotKey(parseHotKey('w'));
1641 menuCheckLockRides->addHotKey(parseHotKey('d'));
1642 menuCheckLockContainers->addHotKey(parseHotKey('c'));
1643 menuCheckLockTransports->addHotKey(parseHotKey('n'));
1644 menuCheckLockTranships->addHotKey(parseHotKey('h'));
1645 menuCheckLockStops->addHotKey(parseHotKey('s'));
1646 // now show it
1647 menuCheckLockRoutes->show();
1648 menuCheckLockVehicles->show();
1649 menuCheckLockPersons->show();
1650 menuCheckLockPersonTrips->show();
1651 menuCheckLockWalks->show();
1652 menuCheckLockRides->show();
1653 menuCheckLockContainers->show();
1654 menuCheckLockTransports->show();
1655 menuCheckLockTranships->show();
1656 menuCheckLockStops->show();
1657}
1658
1659
1660void
1662 // first disable menu commands
1663 menuCheckLockRoutes->disable();
1664 menuCheckLockVehicles->disable();
1665 menuCheckLockPersons->disable();
1666 menuCheckLockPersonTrips->disable();
1667 menuCheckLockWalks->disable();
1668 menuCheckLockRides->disable();
1669 menuCheckLockContainers->disable();
1670 menuCheckLockTransports->disable();
1671 menuCheckLockTranships->disable();
1672 menuCheckLockStops->disable();
1673 // now hide it
1674 menuCheckLockRoutes->hide();
1675 menuCheckLockVehicles->hide();
1676 menuCheckLockPersons->hide();
1677 menuCheckLockPersonTrips->hide();
1678 menuCheckLockWalks->hide();
1679 menuCheckLockRides->hide();
1680 menuCheckLockContainers->hide();
1681 menuCheckLockTransports->hide();
1682 menuCheckLockTranships->hide();
1683 menuCheckLockStops->hide();
1684}
1685
1686
1687void
1689 // first enable menu commands
1690 menuCheckLockEdgeDatas->enable();
1691 menuCheckLockEdgeRelDatas->enable();
1692 menuCheckLockEdgeTAZRels->enable();
1693 // set accels
1694 menuCheckLockEdgeDatas->addHotKey(parseHotKey('e'));
1695 menuCheckLockEdgeRelDatas->addHotKey(parseHotKey('d'));
1696 menuCheckLockEdgeTAZRels->addHotKey(parseHotKey('t'));
1697 // now show it
1698 menuCheckLockEdgeDatas->show();
1699 menuCheckLockEdgeRelDatas->show();
1700 menuCheckLockEdgeTAZRels->show();
1701}
1702
1703
1704void
1706 // first disable menu commands
1707 menuCheckLockEdgeDatas->disable();
1708 menuCheckLockEdgeRelDatas->disable();
1709 menuCheckLockEdgeTAZRels->disable();
1710 // now hide it
1711 menuCheckLockEdgeDatas->hide();
1712 menuCheckLockEdgeRelDatas->hide();
1713 menuCheckLockEdgeTAZRels->hide();
1714}
1715
1716
1717void
1719 menuCheckLockJunctions->setCheck(TRUE);
1720 menuCheckLockEdges->setCheck(TRUE);
1721 menuCheckLockLanes->setCheck(TRUE);
1722 menuCheckLockConnections->setCheck(TRUE);
1723 menuCheckLockCrossings->setCheck(TRUE);
1724 menuCheckLockWalkingAreas->setCheck(TRUE);
1725 menuCheckLockAdditionals->setCheck(TRUE);
1726 menuCheckLockTAZs->setCheck(TRUE);
1727 menuCheckLockWires->setCheck(TRUE);
1728 menuCheckLockPolygons->setCheck(TRUE);
1729 menuCheckLockPOIs->setCheck(TRUE);
1730 menuCheckLockJpsWalkableAreas->setCheck(TRUE);
1731 menuCheckLockJpsObstacles->setCheck(TRUE);
1732 menuCheckLockRoutes->setCheck(TRUE);
1733 menuCheckLockVehicles->setCheck(TRUE);
1734 menuCheckLockPersons->setCheck(TRUE);
1735 menuCheckLockPersonTrips->setCheck(TRUE);
1736 menuCheckLockWalks->setCheck(TRUE);
1737 menuCheckLockRides->setCheck(TRUE);
1738 menuCheckLockContainers->setCheck(TRUE);
1739 menuCheckLockTransports->setCheck(TRUE);
1740 menuCheckLockTranships->setCheck(TRUE);
1741 menuCheckLockStops->setCheck(TRUE);
1742 menuCheckLockEdgeDatas->setCheck(TRUE);
1743 menuCheckLockEdgeRelDatas->setCheck(TRUE);
1744 menuCheckLockEdgeTAZRels->setCheck(TRUE);
1745}
1746
1747
1748void
1750 menuCheckLockJunctions->setCheck(FALSE);
1751 menuCheckLockEdges->setCheck(FALSE);
1752 menuCheckLockLanes->setCheck(FALSE);
1753 menuCheckLockConnections->setCheck(FALSE);
1754 menuCheckLockCrossings->setCheck(FALSE);
1755 menuCheckLockWalkingAreas->setCheck(FALSE);
1756 menuCheckLockAdditionals->setCheck(FALSE);
1757 menuCheckLockTAZs->setCheck(FALSE);
1758 menuCheckLockWires->setCheck(FALSE);
1759 menuCheckLockPolygons->setCheck(FALSE);
1760 menuCheckLockPOIs->setCheck(FALSE);
1761 menuCheckLockJpsWalkableAreas->setCheck(FALSE);
1762 menuCheckLockJpsObstacles->setCheck(FALSE);
1763 menuCheckLockRoutes->setCheck(FALSE);
1764 menuCheckLockVehicles->setCheck(FALSE);
1765 menuCheckLockPersons->setCheck(FALSE);
1766 menuCheckLockPersonTrips->setCheck(FALSE);
1767 menuCheckLockWalks->setCheck(FALSE);
1768 menuCheckLockRides->setCheck(FALSE);
1769 menuCheckLockContainers->setCheck(FALSE);
1770 menuCheckLockTransports->setCheck(FALSE);
1771 menuCheckLockTranships->setCheck(FALSE);
1772 menuCheckLockStops->setCheck(FALSE);
1773 menuCheckLockEdgeDatas->setCheck(FALSE);
1774 menuCheckLockEdgeRelDatas->setCheck(FALSE);
1775 menuCheckLockEdgeTAZRels->setCheck(FALSE);
1776}
1777
1778
1779void
1781 // check elements
1782 if (AC->getTagProperty()->getTag() == SUMO_TAG_JUNCTION) {
1783 menuCheckLockJunctions->setCheck(value);
1784 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_EDGE) {
1785 menuCheckLockEdges->setCheck(value);
1786 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_LANE) {
1787 menuCheckLockLanes->setCheck(value);
1788 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_CONNECTION) {
1789 menuCheckLockConnections->setCheck(value);
1790 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_CROSSING) {
1791 menuCheckLockCrossings->setCheck(value);
1792 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_WALKINGAREA) {
1793 menuCheckLockWalkingAreas->setCheck(value);
1794 } else if (AC->getTagProperty()->isAdditionalElement()) {
1795 menuCheckLockAdditionals->setCheck(value);
1796 } else if (AC->getTagProperty()->isTAZElement()) {
1797 menuCheckLockTAZs->setCheck(value);
1798 } else if (AC->getTagProperty()->isWireElement()) {
1799 menuCheckLockWires->setCheck(value);
1800 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_POLY) {
1801 menuCheckLockPolygons->setCheck(value);
1802 } else if (AC->getTagProperty()->getTag() == GNE_TAG_JPS_WALKABLEAREA) {
1803 menuCheckLockJpsWalkableAreas->setCheck(value);
1804 } else if (AC->getTagProperty()->getTag() == GNE_TAG_JPS_OBSTACLE) {
1805 menuCheckLockJpsObstacles->setCheck(value);
1806 } else if ((AC->getTagProperty()->getTag() == SUMO_TAG_POI) ||
1807 (AC->getTagProperty()->getTag() == GNE_TAG_POILANE) ||
1808 (AC->getTagProperty()->getTag() == GNE_TAG_POIGEO)) {
1809 menuCheckLockPOIs->setCheck(value);
1810 } else if (AC->getTagProperty()->isRoute()) {
1811 menuCheckLockRoutes->setCheck(value);
1812 } else if (AC->getTagProperty()->isVehicle()) {
1813 menuCheckLockVehicles->setCheck(value);
1814 } else if (AC->getTagProperty()->isPerson()) {
1815 menuCheckLockPersons->setCheck(value);
1816 } else if (AC->getTagProperty()->isPlanPersonTrip()) {
1817 menuCheckLockPersonTrips->setCheck(value);
1818 } else if (AC->getTagProperty()->isPlanWalk()) {
1819 menuCheckLockWalks->setCheck(value);
1820 } else if (AC->getTagProperty()->isPlanRide()) {
1821 menuCheckLockRides->setCheck(value);
1822 } else if (AC->getTagProperty()->isContainer()) {
1823 menuCheckLockContainers->setCheck(value);
1824 } else if (AC->getTagProperty()->isPlanTransport()) {
1825 menuCheckLockTransports->setCheck(value);
1826 } else if (AC->getTagProperty()->isPlanTranship()) {
1827 menuCheckLockTranships->setCheck(value);
1828 } else if (AC->getTagProperty()->isVehicleStop() ||
1831 menuCheckLockStops->setCheck(value);
1832 } else if (AC->getTagProperty()->getTag() == GNE_TAG_EDGEREL_SINGLE) {
1833 menuCheckLockEdgeDatas->setCheck(value);
1834 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_EDGEREL) {
1835 menuCheckLockEdgeRelDatas->setCheck(value);
1836 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_TAZREL) {
1837 menuCheckLockEdgeTAZRels->setCheck(value);
1838 }
1839}
1840
1841
1842FXHotKey
1844 FXuint code = 0, mods = 0;
1845 if (Unicode::isAlphaNumeric(character)) {
1846 mods = ALTMASK;
1847 code = fxucs2keysym(Unicode::toLower(character));
1848 }
1849 return MKUINT(code, mods);
1850}
1851
1852// ---------------------------------------------------------------------------
1853// GNEApplicationWindowHelper::ProcessingMenuCommands - methods
1854// ---------------------------------------------------------------------------
1855
1857 myApplicationWindow(applicationWindow) {
1858}
1859
1860
1861void
1863 // build network processing menu commands
1864 computeNetwork = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1865 TL("Compute Junctions"), "F5", TL("Compute junction shape and logic."),
1867 computeNetworkVolatile = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1868 TL("Compute Junctions with volatile options"), "Shift+F5", TL("Compute junction shape and logic using volatile junctions."),
1870 cleanJunctions = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1871 TL("Clean Junctions"), "F6", TL("Remove solitary junctions."),
1873 joinJunctions = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1874 TL("Join Selected Junctions"), "F7", TL("Join selected junctions into a single junction."),
1876 clearInvalidCrossings = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1877 TL("Clean invalid crossings"), "F8", TL("Clear invalid crossings."),
1879 // add separator for checkBox
1880 mySeparatorCheckBox = new FXMenuSeparator(processingMenu);
1881 // add checkBox for recomputing in data mode
1882 menuCheckRecomputeDataMode = GUIDesigns::buildFXMenuCheckboxIcon(processingMenu,
1883 TL("Recompute Network in Data Mode"), "", "",
1885 // set default value
1886 menuCheckRecomputeDataMode->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "RecomputeData", true));
1887 // build demand processing menu commands
1888 computeDemand = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1889 TL("Compute demand"), "F5", TL("Computes demand elements."),
1891 cleanRoutes = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1892 TL("Clean routes"), "F6", TL("Removes routes without vehicles."),
1894 joinRoutes = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1895 TL("Join routes"), "F7", TL("Joins routes with the same edges."),
1897 adjustPersonPlans = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1898 TL("Adjust person plans"), "Shift+F7", TL("Adjust person plans (start/end positions, arrival positions, etc.)"),
1900 clearInvalidDemandElements = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1901 TL("Clean invalid route elements"), "F8", TL("Clear elements with an invalid path (routes, Trips, Flows...)."),
1903 // add separator
1904 myOptionsSeparator = new FXMenuSeparator(processingMenu);
1905 // create optionmenus
1906 optionMenus = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1907 TL("Sumo options"), "Shift+F10", TL("Configure sumo Options."),
1909 // add separator
1910 myOptionsSeparator = new FXMenuSeparator(processingMenu);
1911 // create optionmenus
1912 optionMenus = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1913 TL("Options"), "F10", TL("Configure netedit Options."),
1915}
1916
1917
1918void
1920 // first enable menu commands
1921 computeNetwork->enable();
1922 computeNetworkVolatile->enable();
1923 cleanJunctions->enable();
1924 joinJunctions->enable();
1925 clearInvalidCrossings->enable();
1926 mySeparatorCheckBox->enable();
1927 menuCheckRecomputeDataMode->enable();
1928 // now show it
1929 computeNetwork->show();
1930 computeNetworkVolatile->show();
1931 cleanJunctions->show();
1932 joinJunctions->show();
1933 clearInvalidCrossings->show();
1934 mySeparatorCheckBox->show();
1935 menuCheckRecomputeDataMode->show();
1936}
1937
1938
1939void
1941 // first disable menu commands
1942 computeNetwork->disable();
1943 computeNetworkVolatile->disable();
1944 cleanJunctions->disable();
1945 joinJunctions->disable();
1946 clearInvalidCrossings->disable();
1947 // now hide it
1948 computeNetwork->hide();
1949 computeNetworkVolatile->hide();
1950 cleanJunctions->hide();
1951 joinJunctions->hide();
1952 clearInvalidCrossings->hide();
1953}
1954
1955
1956void
1958 // first enable menu commands
1959 computeDemand->enable();
1960 cleanRoutes->enable();
1961 joinRoutes->enable();
1962 adjustPersonPlans->enable();
1963 clearInvalidDemandElements->enable();
1964 // now show it
1965 computeDemand->show();
1966 cleanRoutes->show();
1967 joinRoutes->show();
1968 adjustPersonPlans->show();
1969 clearInvalidDemandElements->show();
1970}
1971
1972
1973void
1975 // first disable menu commands
1976 computeDemand->disable();
1977 cleanRoutes->disable();
1978 joinRoutes->disable();
1979 adjustPersonPlans->disable();
1980 clearInvalidDemandElements->disable();
1981 // now hide it
1982 computeDemand->hide();
1983 cleanRoutes->hide();
1984 joinRoutes->hide();
1985 adjustPersonPlans->hide();
1986 clearInvalidDemandElements->hide();
1987}
1988
1989
1990void
1994
1995
1996void
2000
2001
2002void
2006
2007
2008void
2012
2013// ---------------------------------------------------------------------------
2014// GNEApplicationWindowHelper::LocateMenuCommands - methods
2015// ---------------------------------------------------------------------------
2016
2018 myApplicationWindow(applicationWindow) {
2019}
2020
2021
2022void
2024 // build locate menu commands
2026 TL("&Junctions"), "Shift+J", TL("Open a dialog for locating a Junction."),
2029 TL("&Edges"), "Shift+E", TL("Open a dialog for locating an Edge."),
2032 TL("&WalkingAreas"), "Shift+W", TL("Open a dialog for locating a Walking Area."),
2035 TL("&Vehicles"), "Shift+V", TL("Open a dialog for locating a Vehicle."),
2038 TL("&Persons"), "Shift+P", TL("Open a dialog for locating a Person."),
2041 TL("&Containers"), "Shift+C", TL("Open a dialog for locating a Container."),
2044 TL("&Route"), "Shift+R", TL("Open a dialog for locating a Route."),
2047 TL("&Stops"), "Shift+S", TL("Open a dialog for locating a Stop."),
2050 TL("&TLS"), "Shift+T", TL("Open a dialog for locating a Traffic Light."),
2053 TL("&Additional"), "Shift+A", TL("Open a dialog for locating an Additional Structure."),
2056 TL("P&oI"), "Shift+O", TL("Open a dialog for locating a Point of Interest."),
2059 TL("Po&lygon"), "Shift+L", TL("Open a dialog for locating a Polygon."),
2061}
2062
2063// ---------------------------------------------------------------------------
2064// GNEApplicationWindowHelper::ToolsMenuCommands - methods
2065// ---------------------------------------------------------------------------
2066
2068 myApplicationWindow(applicationWindow) {
2069}
2070
2071
2073 // delete all tools
2074 for (const auto& tool : myPythonTools) {
2075 delete tool;
2076 }
2077}
2078
2079
2080void
2082 const std::map<std::string, FXMenuPane*>& menuPaneToolMaps) {
2083 // build tools from template
2084 // the templateTools vector is imported from templates.h (which only exists in the cmake-build folder)
2085 for (const auto& templateTool : templateTools) {
2086 if (templateTool.name == "netdiff") {
2087 myPythonTools.push_back(new GNENetDiffTool(myApplicationWindow, templateTool.pythonPath,
2088 menuPaneToolMaps.at(templateTool.subfolder)));
2089 } else if (menuPaneToolMaps.count(templateTool.subfolder) > 0) {
2090 myPythonTools.push_back(new GNEPythonTool(myApplicationWindow, templateTool.pythonPath,
2091 templateTool.templateStr, menuPaneToolMaps.at(templateTool.subfolder)));
2092 } else {
2093 myPythonTools.push_back(new GNEPythonTool(myApplicationWindow, templateTool.pythonPath,
2094 templateTool.templateStr, toolsMenu));
2095 }
2096 }
2097}
2098
2099
2100long
2102 // iterate over all tools and find menu command
2103 for (const auto& tool : myPythonTools) {
2104 if (tool->getMenuCommand() == menuCommand) {
2105 GNEPythonToolDialog(myApplicationWindow, tool);
2106 return 1;
2107 }
2108 }
2109 return 0;
2110}
2111
2112
2113long
2115 // iterate over all tools and find menu command
2116 for (const auto& tool : myPythonTools) {
2117 if (tool->getMenuCommand() == menuCommand) {
2118 GNERunPythonToolDialog(myApplicationWindow, tool);
2119 return 1;
2120 }
2121 }
2122 return 0;
2123}
2124
2125
2126long
2128 // iterate over all tools and find menu command
2129 for (const auto& tool : myPythonTools) {
2130 if (tool->getMenuCommand() == menuCommand) {
2131 // execute postProcessing
2132 tool->postProcessing();
2133 return 1;
2134 }
2135 }
2136 return 0;
2137}
2138
2139// ---------------------------------------------------------------------------
2140// GNEApplicationWindowHelper::WindowsMenuCommands - methods
2141// ---------------------------------------------------------------------------
2142
2144 myApplicationWindow(applicationWindow) {
2145}
2146
2147
2148void
2150 FXStatusBar* statusbar, GUIMessageWindow* messageWindow) {
2151 // build windows menu commands
2153 TL("Show Status Line"), TL("Toggle this Status Bar on/off."),
2154 statusbar, FXWindow::ID_TOGGLESHOWN);
2156 TL("Show Message Window"), TL("Toggle the Message Window on/off."),
2157 messageWindow, FXWindow::ID_TOGGLESHOWN);
2158 new FXMenuSeparator(windowsMenu);
2160 TL("Clear Message Window"), "", TL("Clear the Message Window."),
2162}
2163
2164// ---------------------------------------------------------------------------
2165// GNEApplicationWindowHelper::WindowsMenuCommands - methods
2166// ---------------------------------------------------------------------------
2167
2169 myApplicationWindow(applicationWindow) {
2170}
2171
2172
2173void
2175 // build windows menu commands
2176 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Online Documentation"), "F1", TL("Open Online documentation."),
2177 nullptr, myApplicationWindow, MID_HOTKEY_F1_ONLINEDOCUMENTATION);
2178 new FXMenuSeparator(helpMenu);
2179 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Changelog"), "", TL("Open Changelog."),
2180 nullptr, myApplicationWindow, MID_CHANGELOG);
2181 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Hotkeys"), "", TL("Open Hotkeys."),
2182 nullptr, myApplicationWindow, MID_HOTKEYS);
2183 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Tutorial"), "", TL("Open Tutorial."),
2184 nullptr, myApplicationWindow, MID_TUTORIAL);
2185 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Feedback"), "", TL("Open feedback channels."),
2186 nullptr, myApplicationWindow, MID_FEEDBACK);
2187 new FXMenuSeparator(helpMenu);
2188 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("About"), "F12", TL("About netedit."),
2190}
2191
2192// ---------------------------------------------------------------------------
2193// GNEApplicationWindowHelper::NetworkCheckableButtons - methods
2194// ---------------------------------------------------------------------------
2195
2197 myApplicationWindow(applicationWindow) {
2198}
2199
2200
2201void
2203 networkMode->show();
2204 demandMode->show();
2205 dataMode->show();
2206}
2207
2208
2209void
2213
2214
2215void
2219
2220
2221void
2223 // build supermode menu commands
2224 networkMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2225 TL("&Network"), "F2", TL("Select network mode."),
2227 demandMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2228 TL("&Demand"), "F3", TL("Select demand mode."),
2230 dataMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2231 TL("&Data"), "F4", TL("Select data mode."),
2233}
2234
2235// ---------------------------------------------------------------------------
2236// GNESumoConfigHandler - methods
2237// ---------------------------------------------------------------------------
2238
2240 myApplicationWindow(applicationWindow),
2241 mySumoConfigFile(sumoConfigFile) {
2242}
2243
2244
2245bool
2247 // get options
2248 auto& neteditOptions = OptionsCont::getOptions();
2249 auto& sumoOptions = myApplicationWindow->getSumoOptions();
2250 // reset options
2251 sumoOptions.resetDefault();
2252 neteditOptions.resetDefault();
2253 // make all options writables
2254 sumoOptions.resetWritable();
2255 neteditOptions.resetWritable();
2256 // build parser
2257 XERCES_CPP_NAMESPACE::SAXParser parser;
2258 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2259 parser.setDisableDefaultEntityResolution(true);
2260 // start the parsing
2261 OptionsLoader handler(sumoOptions);
2262 try {
2263 parser.setDocumentHandler(&handler);
2264 parser.setErrorHandler(&handler);
2265 parser.parse(XMLSubSys::transcodeToLocal(mySumoConfigFile).c_str());
2266 // allow to load with invalid options
2267 if (handler.errorOccurred()) {
2268 WRITE_WARNING(TLF("There are invalid options in sumo configuration '%'.", mySumoConfigFile));
2269 }
2270 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2271 WRITE_ERROR(TLF("Could not load sumo configuration '%':\n %", mySumoConfigFile, XMLSubSys::transcode(e.getMessage())));
2272 return false;
2273 }
2274 // relocate files
2275 sumoOptions.relocateFiles(mySumoConfigFile);
2276 // configure files in bucket
2277 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::SUMO_CONFIG, mySumoConfigFile);
2278 // set load options in netedit
2279 neteditOptions.resetWritable();
2280 if (sumoOptions.getString("net-file").size() > 0) {
2281 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETWORK, sumoOptions.getString("net-file"));
2282 } else {
2283 WRITE_ERROR(TLF("No network defined in sumo configuration '%'.", mySumoConfigFile));
2284 return false;
2285 }
2286 neteditOptions.set("additional-files", sumoOptions.getString("additional-files"));
2287 neteditOptions.set("route-files", sumoOptions.getString("route-files"));
2288 return true;
2289}
2290
2291// ---------------------------------------------------------------------------
2292// GNENetconvertConfigHandler - methods
2293// ---------------------------------------------------------------------------
2294
2296 myNetconvertConfigFile(sumoConfigFile) {
2297}
2298
2299
2300bool
2302 // get options
2303 auto& neteditOptions = OptionsCont::getOptions();
2304 // reset options and mark all options as writables
2305 neteditOptions.resetDefault();
2306 neteditOptions.resetWritable();
2307 // build parser
2308 XERCES_CPP_NAMESPACE::SAXParser parser;
2309 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2310 parser.setDisableDefaultEntityResolution(true);
2311 // start the parsing
2312 OptionsLoader handler(neteditOptions);
2313 try {
2314 parser.setDocumentHandler(&handler);
2315 parser.setErrorHandler(&handler);
2316 parser.parse(XMLSubSys::transcodeToLocal(myNetconvertConfigFile).c_str());
2317 // allow to load with invalid options
2318 if (handler.errorOccurred()) {
2319 WRITE_WARNING(TLF("There are invalid options in netconvert configuration '%'.", myNetconvertConfigFile));
2320 }
2321 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2322 WRITE_ERROR(TLF("Could not load netconvert configuration '%':\n %", myNetconvertConfigFile, XMLSubSys::transcode(e.getMessage())));
2323 return false;
2324 }
2325 // relocate files
2326 neteditOptions.relocateFiles(myNetconvertConfigFile);
2327 // set load options in netdit
2328 neteditOptions.resetWritable();
2329 return true;
2330}
2331
2332
2333// ---------------------------------------------------------------------------
2334// GNENeteditConfigHandler - methods
2335// ---------------------------------------------------------------------------
2336
2338 myApplicationWindow(applicationWindow),
2339 myNeteditConfigFile(neteditConfigFile) {
2340}
2341
2342
2343bool
2345 // get options
2346 auto& neteditOptions = OptionsCont::getOptions();
2347 // before reset defaults, save ignore route and demand elements (because usually are loaded trought console)
2348 const bool ignoreAdditionalElements = neteditOptions.getBool("ignore.additionalelements");
2349 const bool ignoreRouteElements = neteditOptions.getBool("ignore.routeelements");
2350 // reset options
2351 neteditOptions.resetDefault();
2352 // make all options writables
2353 neteditOptions.resetWritable();
2354 // build parser
2355 XERCES_CPP_NAMESPACE::SAXParser parser;
2356 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2357 parser.setDisableDefaultEntityResolution(true);
2358 // start the parsing
2359 OptionsLoader handler(neteditOptions);
2360 try {
2361 parser.setDocumentHandler(&handler);
2362 parser.setErrorHandler(&handler);
2363 parser.parse(XMLSubSys::transcodeToLocal(myNeteditConfigFile).c_str());
2364 // allow to load with invalid options
2365 if (handler.errorOccurred()) {
2366 WRITE_WARNING(TLF("There are invalid options in netedit configuration '%'.", myNeteditConfigFile));
2367 }
2368 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2369 WRITE_ERROR(TLF("Could not load netedit configuration '%':\n %", myNeteditConfigFile, XMLSubSys::transcode(e.getMessage())));
2370 return false;
2371 }
2372 // relocate files
2373 neteditOptions.relocateFiles(myNeteditConfigFile);
2374 // configure files in bucket
2375 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETEDIT_CONFIG, myNeteditConfigFile);
2376 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::SUMO_CONFIG, neteditOptions.getString("sumocfg-file"));
2377 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETWORK, neteditOptions.getString("sumo-net-file"));
2378 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::TLS, neteditOptions.getString("tls-file"));
2379 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::EDGETYPE, neteditOptions.getString("edgetypes-file"));
2380 // restore ignores
2381 neteditOptions.resetWritable();
2382 // check if ignore additional or route files
2383 if (ignoreAdditionalElements) {
2384 neteditOptions.resetDefault("additional-files");
2385 }
2386 if (ignoreRouteElements) {
2387 neteditOptions.resetDefault("route-files");
2388 }
2389 return true;
2390}
2391
2392
2393// ---------------------------------------------------------------------------
2394// GNEApplicationWindowHelper::FileBucketHandler - methods
2395// ---------------------------------------------------------------------------
2396
2398 OptionsCont& neteditOptions, OptionsCont& sumoOptions) :
2399 myApplicationWindow(applicationWindow),
2400 myNeteditOptions(neteditOptions),
2401 mySumoOptions(sumoOptions) {
2402 // create default buckets
2403 for (const auto& type : FileBucket::types) {
2404 myBuckets[type].push_back(new FileBucket(type));
2405 }
2406 for (const auto& type : FileBucket::prefixes) {
2407 myBuckets[type].push_back(new FileBucket(type));
2408 }
2409}
2410
2411
2413 // delete buckets
2414 for (auto& bucketMap : myBuckets) {
2415 for (auto& bucket : bucketMap.second) {
2416 delete bucket;
2417 }
2418 }
2419}
2420
2421
2422void
2424 // insert element
2425 if (AC->getTagProperty()->saveInParentFile() == false) {
2426 // add element in bucket
2427 AC->getFileBucket()->addElement(false);
2428 }
2429}
2430
2431
2432void
2434 if (AC->getTagProperty()->saveInParentFile() == false) {
2435 // remove element from bucket
2436 AC->getFileBucket()->removeElement(false);
2437 }
2438}
2439
2440
2443 // check file properties
2444 if (AC->getTagProperty()->saveInParentFile()) {
2445 // elements with parent aren't saved in buckets
2446 return nullptr;
2447 } else if (AC->getTagProperty()->isNetworkElement()) {
2448 // network elements are saved in a single file
2449 return myBuckets.at(FileBucket::Type::NETWORK).front();
2450 } else {
2451 // remove element from bucket
2453 // iterate over all buckets to check if the given filename already exist
2454 for (const auto& type : FileBucket::types) {
2455 // get default bucket (secure because first bucket always exist)
2456 auto defaultBucket = getDefaultBucket(type);
2457 // check if this bucket type is compatible
2458 if (AC->getTagProperty()->isFileCompatible(defaultBucket->getType())) {
2459 // search bucket with this filename
2460 for (auto& bucket : myBuckets.at(type)) {
2461 if (bucket->getFilename() == filename) {
2462 // add element in bucket
2463 bucket->addElement(AC->isTemplate());
2464 // return the new bucket
2465 return bucket;
2466 }
2467 }
2468 }
2469 }
2470 // if we didn't found a bucket whit the given filename, create new
2471 for (const auto& type : FileBucket::types) {
2472 // this front() call is secure because every bucket group have always at least one default bucket)
2473 const auto bucketType = getDefaultBucket(type)->getType();
2474 // check compatibility
2475 if (AC->getTagProperty()->isFileCompatible(bucketType)) {
2476 // create new bucket with the given filename
2477 auto bucket = new FileBucket(bucketType, filename);
2478 myBuckets.at(bucketType).push_back(bucket);
2479 // add element in bucket
2480 bucket->addElement(AC->isTemplate());
2481 // update options (because we added a new bucket)
2482 updateOptions();
2483 // return the new bucket
2484 return bucket;
2485 }
2486 }
2487 // the AC was not updated, throw error
2488 throw ProcessError(TLF("Element '% cannot be updateAC in bucket '%'", AC->getID(), filename));
2489 }
2490}
2491
2492
2493bool
2495 // check file properties
2496 if (AC->getTagProperty()->saveInParentFile()) {
2497 // elements with parent aren't saved in buckets
2498 return false;
2499 } else {
2500 // iterate over all buckets to check if exist a bucket with this filename
2501 for (const auto& type : FileBucket::types) {
2502 for (auto& bucket : myBuckets.at(type)) {
2503 if (bucket->getFilename() == filename) {
2504 // check if the bucket is compatible with this file
2505 return AC->getTagProperty()->isFileCompatible(bucket->getType());
2506 }
2507 }
2508 }
2509 // the file will be saved in a new bucket
2510 return true;
2511 }
2512}
2513
2514
2515std::string
2517 for (const auto& type : FileBucket::prefixes) {
2518 if (isFilenameDefined(type)) {
2519 return getDefaultFolder(type);
2520 }
2521 }
2522 return "";
2523}
2524
2525
2526std::string
2528 for (const auto& type : FileBucket::prefixes) {
2529 if (isFilenameDefined(type)) {
2530 return getDefaultFilename(type) + sufix;
2531 }
2532 }
2533 return "";
2534}
2535
2536
2539 return myBuckets.at(type).front();
2540}
2541
2542
2544GNEApplicationWindowHelper::FileBucketHandler::getBucket(const FileBucket::Type type, const std::string& filename, const bool create) {
2545 // iterate over all buckets to check if the given filename already exist
2546 for (auto& bucketMap : myBuckets) {
2547 for (auto& bucket : bucketMap.second) {
2548 if ((bucket->getFilename() == filename) && (bucket->getType() == type)) {
2549 return bucket;
2550 }
2551 }
2552 }
2553 // on this point, we need to check if create a new bucket
2554 if (create) {
2555 // if the default bucket is empty, but not the filename, update the default bucket
2556 if (getDefaultFilename(type).empty() && (filename.size() > 0)) {
2557 setDefaultFilenameFile(type, filename);
2558 return getDefaultBucket(type);
2559 } else {
2560 // create new bucket
2561 auto bucket = new FileBucket(type, filename);
2562 myBuckets.at(type).push_back(bucket);
2563 return bucket;
2564 }
2565 } else {
2566 return nullptr;
2567 }
2568}
2569
2570
2571const std::vector<FileBucket*>&
2573 return myBuckets.at(type);
2574}
2575
2576
2577std::string
2579 return myBuckets.at(type).front()->getFilename();
2580}
2581
2582
2583std::string
2585 std::string prefix = getDefaultFilename(type);
2586 // remove until empty or trailing slash
2587 while (true) {
2588 if (prefix.empty()) {
2589 return prefix;
2590 } else if ((prefix.back() == '\'') ||
2591 (prefix.back() == '\\') ||
2592 (prefix.back() == '/')) {
2593 // remove last trailing slash
2594 prefix.pop_back();
2595 return prefix;
2596 } else {
2597 prefix.pop_back();
2598 }
2599 }
2600}
2601
2602
2603void
2605 myBuckets.at(type).front()->setFilename(filename);
2606 // update filename in options
2607 updateOptions();
2608}
2609
2610
2611bool
2613 return (myBuckets.at(type).front()->getFilename().size() > 0);
2614}
2615
2616
2617void
2619 for (const auto& bucketPair : myBuckets) {
2620 bucketPair.second.front()->setFilename("");
2621 }
2622 // update filename in options
2623 updateOptions();
2624}
2625
2626
2627void
2629 // get filenames
2630 const auto sumoconfig = parseFilenames({FileBucket::Type::SUMO_CONFIG});
2631 const auto neteditconfig = parseFilenames({FileBucket::Type::NETEDIT_CONFIG});
2632 const auto networkFile = parseFilenames({FileBucket::Type::NETWORK});
2633 const auto additional = parseFilenames({FileBucket::Type::ADDITIONAL});
2634 const auto demandFile = parseFilenames({FileBucket::Type::DEMAND});
2635 const auto data = parseFilenames({FileBucket::Type::DATA});
2636 const auto meanData = parseFilenames({FileBucket::Type::MEANDATA});
2637 const auto additionalMeanData = parseFilenames({FileBucket::Type::ADDITIONAL, FileBucket::Type::MEANDATA});
2638 const auto edgeType = parseFilenames({FileBucket::Type::EDGETYPE});
2639 const auto tls = parseFilenames({FileBucket::Type::TLS});
2640 // set default filename depending of type
2641 myNeteditOptions.resetWritable();
2642 mySumoOptions.resetWritable();
2643 // check if save sumo additionals
2644 const bool sumoAdditionals = (myApplicationWindow->getEditMenuCommands().loadAdditionalsInSUMOGUI->getCheck() == TRUE);
2645 const bool sumoDemandElements = (myApplicationWindow->getEditMenuCommands().loadDemandInSUMOGUI->getCheck() == TRUE);
2646 // sumo config (only netedit)
2647 if (sumoconfig.size() > 0) {
2648 myNeteditOptions.set("sumocfg-file", sumoconfig);
2649 } else {
2650 myNeteditOptions.resetDefault("sumocfg-file");
2651 }
2652 // netedit config (only netedit)
2653 if (neteditconfig.size() > 0) {
2654 myNeteditOptions.set("configuration-file", neteditconfig);
2655 } else {
2656 myNeteditOptions.resetDefault("configuration-file");
2657 }
2658 // network file (common)
2659 if (networkFile.size() > 0) {
2660 myNeteditOptions.set("sumo-net-file", networkFile);
2661 mySumoOptions.set("net-file", networkFile);
2662 } else {
2663 myNeteditOptions.resetDefault("sumo-net-file");
2664 mySumoOptions.resetDefault("net-file");
2665 }
2666 // additional file (only netedit)
2667 if (additional.size() > 0) {
2668 myNeteditOptions.set("additional-files", additional);
2669 } else {
2670 myNeteditOptions.resetDefault("additional-files");
2671 }
2672 // demand file (netedit)
2673 if (demandFile.size() > 0) {
2674 myNeteditOptions.set("route-files", demandFile);
2675 } else {
2676 myNeteditOptions.resetDefault("route-files");
2677 }
2678 // demand file (sumo)
2679 if (sumoDemandElements && (demandFile.size() > 0)) {
2680 mySumoOptions.set("route-files", demandFile);
2681 } else {
2682 mySumoOptions.resetDefault("route-files");
2683 }
2684 // data file (only netedit)
2685 if (data.size() > 0) {
2686 myNeteditOptions.set("data-files", data);
2687 } else {
2688 myNeteditOptions.resetDefault("data-files");
2689 }
2690 // meanData file (only netedit)
2691 if (meanData.size() > 0) {
2692 myNeteditOptions.set("meandata-files", meanData);
2693 } else {
2694 myNeteditOptions.resetDefault("meandata-files");
2695 }
2696 // additional + meanData files (only sumo)
2697 if (sumoAdditionals && (additionalMeanData.size() > 0)) {
2698 mySumoOptions.set("additional-files", additionalMeanData);
2699 } else {
2700 mySumoOptions.resetDefault("additional-files");
2701 }
2702 // edgeType (only netedit)
2703 if (edgeType.size() > 0) {
2704 myNeteditOptions.set("edgetypes-file", edgeType);
2705 } else {
2706 myNeteditOptions.resetDefault("edgetypes-file");
2707 }
2708 // TLS (only netedit)
2709 if (tls.size() > 0) {
2710 myNeteditOptions.set("tls-file", tls);
2711 } else {
2712 myNeteditOptions.resetDefault("tls-file");
2713 }
2714 // update prefixes
2715 myBuckets.at(FileBucket::Type::SUMO_PREFIX).front()->setFilename(getPrefix(FileBucket::Type::SUMO_CONFIG, {".sumocfg", ".xml"}));
2716 myBuckets.at(FileBucket::Type::NETEDIT_PREFIX).front()->setFilename(getPrefix(FileBucket::Type::NETEDIT_CONFIG, {".netecfg", ".xml"}));
2717 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"}));
2718}
2719
2720
2721std::string
2722GNEApplicationWindowHelper::FileBucketHandler::parseFilenames(const std::vector<FileBucket::Type> types) const {
2723 std::string result;
2724 // group all saving files in a single string separated with comma
2725 for (const auto& type : types) {
2726 for (const auto& bucket : myBuckets.at(type)) {
2727 if ((bucket->getFilename().size() > 0) && (bucket->isDefaultBucket() || (bucket->getNumElements() > 0))) {
2728 result.append(bucket->getFilename() + ",");
2729 }
2730 }
2731 }
2732 // remove last ','
2733 if (result.size() > 0) {
2734 result.pop_back();
2735 }
2736 return result;
2737}
2738
2739
2740void
2742 // iterate over all buckets and remove empty buckets (except default buckets)
2743 for (auto type : FileBucket::types) {
2744 size_t bucketIndex = 0;
2745 while (bucketIndex < myBuckets.at(type).size()) {
2746 auto bucket = myBuckets.at(type).at(bucketIndex);
2747 if (bucket->isEmpty() && (bucket->isDefaultBucket() == false)) {
2748 delete bucket;
2749 myBuckets.at(type).erase(myBuckets.at(type).begin() + bucketIndex);
2750 } else {
2751 bucketIndex++;
2752 }
2753 }
2754 }
2755}
2756
2757
2758std::string
2759GNEApplicationWindowHelper::FileBucketHandler::getPrefix(FileBucket::Type type, const std::vector<std::string> invalidExtensions) const {
2760 std::string filename = getDefaultFilename(type);
2761 if (filename.size() > 0) {
2762 if (filename.back() == '.') {
2763 filename.pop_back();
2764 } else {
2765 for (const auto& invalidExtension : invalidExtensions) {
2766 filename = StringUtils::replace(filename, invalidExtension, "");
2767 }
2768 }
2769 }
2770 return filename;
2771}
2772
2773// ---------------------------------------------------------------------------
2774// GNEApplicationWindowHelper - methods
2775// ---------------------------------------------------------------------------
2776
2777bool
2778GNEApplicationWindowHelper::toggleEditOptionsNetwork(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2779 // finally function correspond to visibleMenuCommands[numericalKeyPressed]
2780 if (menuCheck == viewNet->getNetworkViewOptions().menuCheckToggleGrid) {
2781 // Call manually onCmdToggleShowGrid
2782 viewNet->onCmdToggleShowGrid(obj, sel, nullptr);
2783 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckToggleDrawJunctionShape) {
2784 // Call manually onCmdToggleDrawJunctionShape
2785 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2786 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckDrawSpreadVehicles) {
2787 // Call manually onCmdToggleDrawSpreadVehicles
2788 viewNet->onCmdToggleDrawSpreadVehicles(obj, sel, nullptr);
2789 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowDemandElements) {
2790 // Call manually onCmdToggleShowDemandElementsNetwork
2791 viewNet->onCmdToggleShowDemandElementsNetwork(obj, sel, nullptr);
2792 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckSelectEdges) {
2793 // Call manually onCmdToggleSelectEdges
2794 viewNet->onCmdToggleSelectEdges(obj, sel, nullptr);
2795 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowConnections) {
2796 // Call manually onCmdToggleShowConnections
2797 viewNet->onCmdToggleShowConnections(obj, sel, nullptr);
2798 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckHideConnections) {
2799 // Call manually onCmdToggleHideConnections
2800 viewNet->onCmdToggleHideConnections(obj, sel, nullptr);
2801 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowAdditionalSubElements) {
2802 // Call manually onCmdToggleShowAdditionalSubElements
2803 viewNet->onCmdToggleShowAdditionalSubElements(obj, sel, nullptr);
2804 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowTAZElements) {
2805 // Call manually onCmdToggleShowTAZElements
2806 viewNet->onCmdToggleShowTAZElements(obj, sel, nullptr);
2807 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckExtendSelection) {
2808 // Call manually onCmdToggleExtendSelection
2809 viewNet->onCmdToggleExtendSelection(obj, sel, nullptr);
2810 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChangeAllPhases) {
2811 // Call manually onCmdToggleChangeAllPhases
2812 viewNet->onCmdToggleChangeAllPhases(obj, sel, nullptr);
2813 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckMergeAutomatically) {
2814 // Call manually onCmdToggleMergeAutomatically
2815 viewNet->onCmdToggleMergeAutomatically(obj, sel, nullptr);
2816 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckMoveElevation) {
2817 // Call manually onCmdToggleMoveElevation
2818 viewNet->onCmdToggleMoveElevation(obj, sel, nullptr);
2819 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChainEdges) {
2820 // Call manually onCmdToggleChainEdges
2821 viewNet->onCmdToggleChainEdges(obj, sel, nullptr);
2822 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckAutoOppositeEdge) {
2823 // Call manually onCmdToggleAutoOppositeEdge
2824 viewNet->onCmdToggleAutoOppositeEdge(obj, sel, nullptr);
2825 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowJunctionBubble) {
2826 // Call manually onCmdToggleShowJunctionBubble
2827 viewNet->onCmdToggleShowJunctionBubbles(obj, sel, nullptr);
2828 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowPolygonSymbols) {
2829 // Call manually onCmdToggleShowPolygonSymbols
2830 viewNet->onCmdToggleShowPolygonSymbols(obj, sel, nullptr);
2831 } else {
2832 return false;
2833 }
2834 return true;
2835}
2836
2837
2838bool
2839GNEApplicationWindowHelper::toggleEditOptionsDemand(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2840 if (menuCheck == viewNet->getDemandViewOptions().menuCheckToggleGrid) {
2841 // Call manually onCmdToggleShowGrid
2842 viewNet->onCmdToggleShowGrid(obj, sel, nullptr);
2843 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckToggleDrawJunctionShape) {
2844 // Call manually onCmdToggleDrawJunctionShape
2845 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2846 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckDrawSpreadVehicles) {
2847 // Call manually onCmdToggleDrawSpreadVehicles
2848 viewNet->onCmdToggleDrawSpreadVehicles(obj, sel, nullptr);
2849 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideShapes) {
2850 // Call manually onCmdToggleHideShapes
2851 viewNet->onCmdToggleHideShapes(obj, sel, nullptr);
2852 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllTrips) {
2853 // Call manually onCmdToggleShowTrips
2854 viewNet->onCmdToggleShowTrips(obj, sel, nullptr);
2855 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllPersonPlans) {
2856 // Call manually onCmdToggleShowAllPersonPlans
2857 viewNet->onCmdToggleShowAllPersonPlans(obj, sel, nullptr);
2858 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckLockPerson) {
2859 // Call manually onCmdToggleLockPerson
2860 viewNet->onCmdToggleLockPerson(obj, sel, nullptr);
2861 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllContainerPlans) {
2862 // Call manually onCmdToggleShowAllContainerPlans
2863 viewNet->onCmdToggleShowAllContainerPlans(obj, sel, nullptr);
2864 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckLockContainer) {
2865 // Call manually onCmdToggleLockContainer
2866 viewNet->onCmdToggleLockContainer(obj, sel, nullptr);
2867 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideNonInspectedDemandElements) {
2868 // Call manually onCmdToggleHideNonInspecteDemandElements
2869 viewNet->onCmdToggleHideNonInspecteDemandElements(obj, sel, nullptr);
2870 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowOverlappedRoutes) {
2871 // Call manually onCmdToggleHideNonInspecteDemandElements
2872 viewNet->onCmdToggleShowOverlappedRoutes(obj, sel, nullptr);
2873 } else {
2874 return false;
2875 }
2876 return true;
2877}
2878
2879
2880bool
2881GNEApplicationWindowHelper::toggleEditOptionsData(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2882 if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleDrawJunctionShape) {
2883 // Call manually onCmdToggleDrawJunctionShape
2884 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2885 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowAdditionals) {
2886 // Call manually onCmdToggleShowAdditionals
2887 viewNet->onCmdToggleShowAdditionals(obj, sel, nullptr);
2888 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowShapes) {
2889 // Call manually onCmdToggleShowShapes
2890 viewNet->onCmdToggleShowShapes(obj, sel, nullptr);
2891 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowDemandElements) {
2892 // Call manually onCmdToggleShowDemandElementsData
2893 viewNet->onCmdToggleShowDemandElementsData(obj, sel, nullptr);
2894 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelDrawing) {
2895 // Call manually onCmdToggleTAZRelDrawing
2896 viewNet->onCmdToggleTAZRelDrawing(obj, sel, nullptr);
2897 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZDrawFill) {
2898 // Call manually onCmdToggleTAZDrawFill
2899 viewNet->onCmdToggleTAZDrawFill(obj, sel, nullptr);
2900 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelOnlyFrom) {
2901 // Call manually onCmdToggleTAZRelOnlyFrom
2902 viewNet->onCmdToggleTAZRelOnlyFrom(obj, sel, nullptr);
2903 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelOnlyTo) {
2904 // Call manually onCmdToggleTAZRelOnlyTo
2905 viewNet->onCmdToggleTAZRelOnlyTo(obj, sel, nullptr);
2906 } else {
2907 return false;
2908 }
2909 return true;
2910}
2911
2912
2913bool
2914GNEApplicationWindowHelper::stringEndsWith(const std::string& str, const std::string& suffix) {
2915 if (str.length() < suffix.length()) {
2916 return false;
2917 } else {
2918 return str.compare(str.length() - suffix.length(), suffix.length(), suffix) == 0;
2919 }
2920}
2921
2922/****************************************************************************/
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:943
@ MID_GNE_UNLOCK_ALLELEMENTS
unlock all element
Definition GUIAppEnum.h:921
@ 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:967
@ 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:973
@ MID_HOTKEY_CTRL_W_CLOSESIMULATION
Close simulation - ID.
Definition GUIAppEnum.h:129
@ MID_GNE_LOCK_ALLELEMENTS
lock all element
Definition GUIAppEnum.h:919
@ 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:945
@ 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:933
@ MID_GNE_LOCK_SELECTEDELEMENTS
lock selected element
Definition GUIAppEnum.h:923
@ 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:931
@ 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:965
@ 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:939
@ 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:961
@ 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:947
@ 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:865
@ 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:969
@ 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_SHOWPOLYGONSYMBOLS
show polygon symbols
Definition GUIAppEnum.h:859
@ 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:937
@ 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:963
@ 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:971
@ 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:935
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
Definition GUIAppEnum.h:951
@ 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:949
@ 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:941
@ 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
@ NETWORKMODE_CHECKBOX_SHOWPOLYGONSYMBOLS
@ 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
long onCmdToggleShowPolygonSymbols(FXObject *, FXSelector, void *)
toggle show polygon symbols
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, int length=-1)
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 * menuCheckShowPolygonSymbols
check checkable to show polygon symbols
MFXCheckableButton * menuCheckExtendSelection
checkable button to extend to edge nodes