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 // build separator
941 separator = new FXMenuSeparator(editMenu);
942}
943
944
945void
947 menuCheckToggleGrid->hide();
948 menuCheckToggleDrawJunctionShape->hide();
949 menuCheckDrawSpreadVehicles->hide();
950 menuCheckShowDemandElements->hide();
951 menuCheckSelectEdges->hide();
952 menuCheckShowConnections->hide();
953 menuCheckHideConnections->hide();
954 menuCheckShowAdditionalSubElements->hide();
955 menuCheckShowTAZElements->hide();
956 menuCheckExtendSelection->hide();
957 menuCheckChangeAllPhases->hide();
958 menuCheckMergeAutomatically->hide();
959 menuCheckShowJunctionBubble->hide();
960 menuCheckMoveElevation->hide();
961 menuCheckChainEdges->hide();
962 menuCheckAutoOppositeEdge->hide();
963 separator->hide();
964}
965
966
967void
969 int index = 2;
970 // update all accel text
971 if (menuCheckDrawSpreadVehicles->shown()) {
972 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
973 index++;
974 }
975 if (menuCheckDrawSpreadVehicles->shown()) {
976 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
977 index++;
978 }
979 if (menuCheckShowDemandElements->shown()) {
980 menuCheckShowDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
981 index++;
982 }
983 if (menuCheckSelectEdges->shown()) {
984 menuCheckSelectEdges->setAccelText(("Alt+" + toString(index)).c_str());
985 index++;
986 }
987 if (menuCheckShowConnections->shown()) {
988 menuCheckShowConnections->setAccelText(("Alt+" + toString(index)).c_str());
989 index++;
990 }
991 if (menuCheckHideConnections->shown()) {
992 menuCheckHideConnections->setAccelText(("Alt+" + toString(index)).c_str());
993 index++;
994 }
995 if (menuCheckShowAdditionalSubElements->shown()) {
996 menuCheckShowAdditionalSubElements->setAccelText(("Alt+" + toString(index)).c_str());
997 index++;
998 }
999 if (menuCheckShowTAZElements->shown()) {
1000 menuCheckShowTAZElements->setAccelText(("Alt+" + toString(index)).c_str());
1001 index++;
1002 }
1003 if (menuCheckExtendSelection->shown()) {
1004 menuCheckExtendSelection->setAccelText(("Alt+" + toString(index)).c_str());
1005 index++;
1006 }
1007 if (menuCheckChangeAllPhases->shown()) {
1008 menuCheckChangeAllPhases->setAccelText(("Alt+" + toString(index)).c_str());
1009 index++;
1010 }
1011 if (menuCheckMergeAutomatically->shown()) {
1012 menuCheckMergeAutomatically->setAccelText(("Alt+" + toString(index)).c_str());
1013 index++;
1014 }
1015 if (menuCheckChainEdges->shown()) {
1016 menuCheckChainEdges->setAccelText(("Alt+" + toString(index)).c_str());
1017 index++;
1018 }
1019 if (menuCheckAutoOppositeEdge->shown()) {
1020 menuCheckAutoOppositeEdge->setAccelText(("Alt+" + toString(index)).c_str());
1021 index++;
1022 }
1023 if (menuCheckMoveElevation->shown()) {
1024 menuCheckMoveElevation->setAccelText(("Alt+" + toString(index)).c_str());
1025 index++;
1026 }
1027 if (menuCheckShowJunctionBubble->shown()) {
1028 menuCheckShowJunctionBubble->setAccelText(("Alt+" + toString(index)).c_str());
1029 index++;
1030 }
1031}
1032
1033// ---------------------------------------------------------------------------
1034// GNEApplicationWindowHelper::DemandViewOptions - methods
1035// ---------------------------------------------------------------------------
1036
1040
1041
1042void
1044 // create menu checks
1045 menuCheckToggleGrid = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1046 TL("Show grid"), "Ctrl+G or Alt+1", "",
1049
1050 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1051 TL("Hide junction shape"), "Ctrl+J or Alt+2", "",
1054
1055 menuCheckDrawSpreadVehicles = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1056 TL("Draw vehicles spread/depart position"), "Alt+3", "",
1059
1060 menuCheckHideShapes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1061 TL("Show shapes"), "Alt+4", "",
1064
1065 menuCheckShowAllTrips = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1066 TL("Show all trips"), "Alt+5", "",
1069
1070 menuCheckShowAllPersonPlans = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1071 TL("Show all person plans"), "Alt+6", "",
1074
1075 menuCheckLockPerson = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1076 TL("Lock selected person"), "Alt+7", "",
1079
1080 menuCheckShowAllContainerPlans = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1081 TL("Show all container plans"), "Alt+6", "",
1084
1085 menuCheckLockContainer = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1086 TL("Lock selected container"), "Alt+7", "",
1089
1090 menuCheckHideNonInspectedDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1091 TL("Show non-inspected demand elements"), "Alt+8", "",
1094
1095 menuCheckShowOverlappedRoutes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1096 TL("Show number of overlapped routes"), "Alt+9", "",
1099
1100 // build separator
1101 separator = new FXMenuSeparator(editMenu);
1102}
1103
1104
1105void
1107 menuCheckToggleGrid->hide();
1108 menuCheckToggleDrawJunctionShape->hide();
1109 menuCheckDrawSpreadVehicles->hide();
1110 menuCheckHideShapes->hide();
1111 menuCheckShowAllTrips->hide();
1112 menuCheckHideNonInspectedDemandElements->hide();
1113 menuCheckShowOverlappedRoutes->hide();
1114 menuCheckShowAllPersonPlans->hide();
1115 menuCheckLockPerson->hide();
1116 menuCheckShowAllContainerPlans->hide();
1117 menuCheckLockContainer->hide();
1118 separator->hide();
1119}
1120
1121
1122void
1124 int index = 2;
1125 // update all accel text
1126 if (menuCheckDrawSpreadVehicles->shown()) {
1127 menuCheckDrawSpreadVehicles->setAccelText(("Alt+" + toString(index)).c_str());
1128 index++;
1129 }
1130 if (menuCheckHideShapes->shown()) {
1131 menuCheckHideShapes->setAccelText(("Alt+" + toString(index)).c_str());
1132 index++;
1133 }
1134 if (menuCheckShowAllTrips->shown()) {
1135 menuCheckShowAllTrips->setAccelText(("Alt+" + toString(index)).c_str());
1136 index++;
1137 }
1138 if (menuCheckHideNonInspectedDemandElements->shown()) {
1139 menuCheckHideNonInspectedDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
1140 index++;
1141 }
1142 if (menuCheckShowOverlappedRoutes->shown()) {
1143 menuCheckShowOverlappedRoutes->setAccelText(("Alt+" + toString(index)).c_str());
1144 index++;
1145 }
1146 if (menuCheckShowAllPersonPlans->shown()) {
1147 menuCheckShowAllPersonPlans->setAccelText(("Alt+" + toString(index)).c_str());
1148 index++;
1149 }
1150 if (menuCheckLockPerson->shown()) {
1151 menuCheckLockPerson->setAccelText(("Alt+" + toString(index)).c_str());
1152 index++;
1153 }
1154 if (menuCheckShowAllContainerPlans->shown()) {
1155 menuCheckShowAllContainerPlans->setAccelText(("Alt+" + toString(index)).c_str());
1156 index++;
1157 }
1158 if (menuCheckLockContainer->shown()) {
1159 menuCheckLockContainer->setAccelText(("Alt+" + toString(index)).c_str());
1160 index++;
1161 }
1162}
1163
1164// ---------------------------------------------------------------------------
1165// GNEApplicationWindowHelper::EditMenuCommands::DataViewOptions - methods
1166// ---------------------------------------------------------------------------
1167
1171
1172
1173void
1175 // create menu checks
1176 menuCheckToggleDrawJunctionShape = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1177 TL("Hide junction shape"), "Ctrl+J or Alt+1", "",
1180
1181 menuCheckShowAdditionals = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1182 TL("Show additionals"), "Alt+2", "",
1185
1186 menuCheckShowShapes = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1187 TL("Show shapes"), "Alt+3", "",
1190
1191 menuCheckShowDemandElements = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1192 TL("Show demand elements"), "Alt+4", "",
1195
1196 menuCheckToggleTAZRelDrawing = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1197 TL("Draw TAZRel from center"), "Alt+5", "",
1200
1201 menuCheckToggleTAZDrawFill = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1202 TL("Draw TAZ fill"), "Alt+6", "",
1205
1206 menuCheckToggleTAZRelOnlyFrom = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1207 TL("Only draw TAZRel from"), "Alt+6", "",
1210
1211 menuCheckToggleTAZRelOnlyTo = GUIDesigns::buildFXMenuCheckboxIcon(editMenu,
1212 TL("Only draw TAZRel to"), "Alt+7", "",
1215 // build separator
1216 separator = new FXMenuSeparator(editMenu);
1217}
1218
1219
1220void
1222 menuCheckToggleDrawJunctionShape->hide();
1223 menuCheckShowAdditionals->hide();
1224 menuCheckShowShapes->hide();
1225 menuCheckShowDemandElements->hide();
1226 menuCheckToggleTAZRelDrawing->hide();
1227 menuCheckToggleTAZDrawFill->hide();
1228 menuCheckToggleTAZRelOnlyFrom->hide();
1229 menuCheckToggleTAZRelOnlyTo->hide();
1230 separator->hide();
1231}
1232
1233
1234void
1236 int index = 2;
1237 // update all accel text
1238 if (menuCheckShowAdditionals->shown()) {
1239 menuCheckShowAdditionals->setAccelText(("Alt+" + toString(index)).c_str());
1240 index++;
1241 }
1242 if (menuCheckShowShapes->shown()) {
1243 menuCheckShowShapes->setAccelText(("Alt+" + toString(index)).c_str());
1244 index++;
1245 }
1246 if (menuCheckShowDemandElements->shown()) {
1247 menuCheckShowDemandElements->setAccelText(("Alt+" + toString(index)).c_str());
1248 index++;
1249 }
1250 if (menuCheckToggleTAZRelDrawing->shown()) {
1251 menuCheckToggleTAZRelDrawing->setAccelText(("Alt+" + toString(index)).c_str());
1252 index++;
1253 }
1254 if (menuCheckToggleTAZDrawFill->shown()) {
1255 menuCheckToggleTAZDrawFill->setAccelText(("Alt+" + toString(index)).c_str());
1256 index++;
1257 }
1258 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
1259 menuCheckToggleTAZRelOnlyFrom->setAccelText(("Alt+" + toString(index)).c_str());
1260 index++;
1261 }
1262 if (menuCheckToggleTAZRelOnlyTo->shown()) {
1263 menuCheckToggleTAZRelOnlyTo->setAccelText(("Alt+" + toString(index)).c_str());
1264 index++;
1265 }
1266}
1267
1268// ---------------------------------------------------------------------------
1269// GNEApplicationWindowHelper::EditMenuCommands - methods
1270// ---------------------------------------------------------------------------
1271
1273 networkViewOptions(applicationWindow),
1274 demandViewOptions(applicationWindow),
1275 dataViewOptions(applicationWindow),
1276 myApplicationWindow(applicationWindow) {
1277}
1278
1279
1280void
1282 // build undo/redo command
1283 undoLastChange = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1284 TL("Undo"), "Ctrl+Z", TL("Undo the last change."),
1286 redoLastChange = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1287 TL("Redo"), "Ctrl+Y", TL("Redo the last change."),
1289 openUndolistDialog = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1290 TL("Show undo/redo history"), "", TL("Open undo/redo history dialog."),
1292 // add checkBox for recomputing in data mode
1293 menuCheckAllowUndoRedo = GUIDesigns::buildFXMenuCheckbox(editMenu,
1294 TL("Allow undo-redo"), "",
1295 myApplicationWindow, MID_GNE_TOGGLE_UNDOREDO);
1296 menuCheckAllowUndoRedo->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "AllowUndoRedo", true));
1297}
1298
1299
1300void
1302 // build rest of menu commands
1303 editViewScheme = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1304 TL("Edit Visualisation"), "F9", TL("Opens a dialog for editing visualization settings."),
1306 editViewPort = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1307 TL("Edit Viewport"), "Ctrl+I", TL("Opens a dialog for editing viewing area, zoom and rotation."),
1309}
1310
1311
1312void
1314 // build toggle front element
1315 toggleFrontElement = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1316 TL("Front element"), "F11", TL("Mark current inspected element as front element"),
1318}
1319
1320
1321void
1323 // add open in sumo options
1324 loadAdditionalsInSUMOGUI = GUIDesigns::buildFXMenuCheckbox(editMenu,
1325 TL("Load additionals in sumo-gui"), TL("Load additionals in sumo-gui."),
1326 myApplicationWindow, MID_TOOLBAREDIT_LOADADDITIONALS);
1327 loadAdditionalsInSUMOGUI->setCheck(TRUE);
1328 loadDemandInSUMOGUI = GUIDesigns::buildFXMenuCheckbox(editMenu,
1329 TL("Load demand in sumo-gui"), TL("Load demand in sumo-gui."),
1330 myApplicationWindow, MID_TOOLBAREDIT_LOADDEMAND);
1331 loadDemandInSUMOGUI->setCheck(TRUE);
1332 openInSUMOGUI = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
1333 TL("Open in sumo-gui"), "Ctrl+T", TL("Opens the sumo-gui application with the current network."),
1335}
1336
1337// ---------------------------------------------------------------------------
1338// GNEApplicationWindowHelper::LockMenuCommands - methods
1339// ---------------------------------------------------------------------------
1340
1342 myApplicationWindow(applicationWindow) {
1343}
1344
1345
1346void
1348 // network
1349 menuCheckLockJunctions = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1350 TL("&Junctions"), "", "",
1352 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1353
1354 menuCheckLockEdges = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1355 TL("&Edges"), "", "",
1357 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1358
1359 menuCheckLockLanes = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1360 TL("&Lanes"), "", "",
1362 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1363
1364 menuCheckLockConnections = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1365 TL("&Connections"), "", "",
1367 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1368
1369 menuCheckLockCrossings = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1370 TL("C&rossings"), "", "",
1372 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1373
1374 menuCheckLockWalkingAreas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1375 TL("Walkin&gAreas"), "", "",
1377 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1378
1379 menuCheckLockAdditionals = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1380 TL("&Additionals"), "", "",
1382 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1383
1384 menuCheckLockTAZs = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1385 TL("&TAZs"), "", "",
1387 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1388
1389 menuCheckLockWires = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1390 TL("&Wires"), "", "",
1392 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1393
1394 menuCheckLockPolygons = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1395 TL("&Polygons"), "", "",
1397 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1398
1399 menuCheckLockPOIs = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1400 TL("P&OIs"), "", "",
1402 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1403
1404 menuCheckLockJpsWalkableAreas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1405 TL("WalkableAreas"), "", "",
1407 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1408
1409 menuCheckLockJpsObstacles = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1410 TL("Obstacles"), "", "",
1412 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1413 // demand
1414 menuCheckLockRoutes = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1415 TL("&Routes"), "", "",
1417 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1418
1419 menuCheckLockVehicles = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1420 TL("&Vehicles"), "", "",
1422 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1423
1424 menuCheckLockPersons = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1425 TL("&Persons"), "", "",
1427 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1428
1429 menuCheckLockPersonTrips = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1430 TL("Person&Trips"), "", "",
1432 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1433
1434 menuCheckLockWalks = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1435 TL("&Walks"), "", "",
1437 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1438
1439 menuCheckLockRides = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1440 TL("Ri&des"), "", "",
1442 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1443
1444 menuCheckLockContainers = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1445 TL("&Containers"), "", "",
1447 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1448
1449 menuCheckLockTransports = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1450 TL("Tra&nsports"), "", "",
1452 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1453
1454 menuCheckLockTranships = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1455 TL("Trans&hips"), "", "",
1457 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1458
1459 menuCheckLockStops = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1460 TL("Stop&s"), "", "",
1462 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1463 // data
1464 menuCheckLockEdgeDatas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1465 TL("&EdgeDatas"), "", "",
1467 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1468
1469 menuCheckLockEdgeRelDatas = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1470 TL("E&dgeRelDatas"), "", "",
1472 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1473
1474 menuCheckLockEdgeTAZRels = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1475 TL("Edge&TAZRel"), "", "",
1477 myApplicationWindow, MID_GNE_LOCK_ELEMENT);
1478
1479 // separator
1480 new FXMenuSeparator(fileMenu);
1481
1482 menuCheckLockSelectedElements = GUIDesigns::buildFXMenuCheckboxIcon(fileMenu,
1483 TL("Lock selected elements"), "", TL("selected elements"),
1485
1486 // separator
1487 new FXMenuSeparator(fileMenu);
1488
1490 TL("Lock all elements"), "", TL("all elements"),
1492
1494 TL("Unlock all elements"), "", TL("Unlock all elements"),
1496}
1497
1498
1499void
1501 // network
1502 menuCheckLockJunctions->remHotKey(parseHotKey('j'));
1503 menuCheckLockEdges->remHotKey(parseHotKey('e'));
1504 menuCheckLockLanes->remHotKey(parseHotKey('l'));
1505 menuCheckLockConnections->remHotKey(parseHotKey('c'));
1506 menuCheckLockCrossings->remHotKey(parseHotKey('r'));
1507 menuCheckLockWalkingAreas->remHotKey(parseHotKey('g'));
1508 menuCheckLockAdditionals->remHotKey(parseHotKey('a'));
1509 menuCheckLockTAZs->remHotKey(parseHotKey('t'));
1510 menuCheckLockWires->remHotKey(parseHotKey('w'));
1511 menuCheckLockPolygons->remHotKey(parseHotKey('p'));
1512 menuCheckLockPOIs->remHotKey(parseHotKey('o'));
1513 menuCheckLockJpsWalkableAreas->remHotKey(parseHotKey('n'));
1514 menuCheckLockJpsObstacles->remHotKey(parseHotKey('b'));
1515 // demand
1516 menuCheckLockRoutes->remHotKey(parseHotKey('r'));
1517 menuCheckLockVehicles->remHotKey(parseHotKey('v'));
1518 menuCheckLockPersons->remHotKey(parseHotKey('p'));
1519 menuCheckLockPersonTrips->remHotKey(parseHotKey('t'));
1520 menuCheckLockWalks->remHotKey(parseHotKey('w'));
1521 menuCheckLockRides->remHotKey(parseHotKey('d'));
1522 menuCheckLockContainers->remHotKey(parseHotKey('c'));
1523 menuCheckLockTransports->remHotKey(parseHotKey('n'));
1524 menuCheckLockTranships->remHotKey(parseHotKey('h'));
1525 menuCheckLockStops->remHotKey(parseHotKey('s'));
1526 // data
1527 menuCheckLockEdgeDatas->remHotKey(parseHotKey('e'));
1528 menuCheckLockEdgeRelDatas->remHotKey(parseHotKey('d'));
1529 menuCheckLockEdgeTAZRels->remHotKey(parseHotKey('t'));
1530}
1531
1532void
1534 // first enable menu commands
1535 menuCheckLockJunctions->enable();
1536 menuCheckLockEdges->enable();
1537 menuCheckLockLanes->enable();
1538 menuCheckLockConnections->enable();
1539 menuCheckLockCrossings->enable();
1540 menuCheckLockWalkingAreas->enable();
1541 menuCheckLockAdditionals->enable();
1542 menuCheckLockTAZs->enable();
1543 menuCheckLockWires->enable();
1544 menuCheckLockPolygons->enable();
1545 menuCheckLockPOIs->enable();
1546 menuCheckLockJpsWalkableAreas->enable();
1547 menuCheckLockJpsObstacles->enable();
1548 // set accels
1549 menuCheckLockJunctions->addHotKey(parseHotKey('j'));
1550 menuCheckLockEdges->addHotKey(parseHotKey('e'));
1551 menuCheckLockLanes->addHotKey(parseHotKey('l'));
1552 menuCheckLockConnections->addHotKey(parseHotKey('c'));
1553 menuCheckLockCrossings->addHotKey(parseHotKey('r'));
1554 menuCheckLockWalkingAreas->addHotKey(parseHotKey('g'));
1555 menuCheckLockAdditionals->addHotKey(parseHotKey('a'));
1556 menuCheckLockTAZs->addHotKey(parseHotKey('t'));
1557 menuCheckLockWires->addHotKey(parseHotKey('w'));
1558 menuCheckLockPolygons->addHotKey(parseHotKey('p'));
1559 menuCheckLockPOIs->addHotKey(parseHotKey('o'));
1560 menuCheckLockJpsWalkableAreas->addHotKey(parseHotKey('n'));
1561 menuCheckLockJpsObstacles->addHotKey(parseHotKey('b'));
1562 // now show it
1563 menuCheckLockJunctions->show();
1564 menuCheckLockEdges->show();
1565 menuCheckLockLanes->show();
1566 menuCheckLockConnections->show();
1567 menuCheckLockCrossings->show();
1568 menuCheckLockWalkingAreas->show();
1569 menuCheckLockAdditionals->show();
1570 menuCheckLockTAZs->show();
1571 menuCheckLockWires->show();
1572 menuCheckLockPolygons->show();
1573 menuCheckLockPOIs->show();
1574 menuCheckLockJpsWalkableAreas->show();
1575 menuCheckLockJpsObstacles->show();
1576}
1577
1578
1579void
1581 // first disable menu commands
1582 menuCheckLockJunctions->disable();
1583 menuCheckLockEdges->disable();
1584 menuCheckLockLanes->disable();
1585 menuCheckLockConnections->disable();
1586 menuCheckLockCrossings->disable();
1587 menuCheckLockWalkingAreas->disable();
1588 menuCheckLockAdditionals->disable();
1589 menuCheckLockTAZs->disable();
1590 menuCheckLockPolygons->disable();
1591 menuCheckLockPOIs->disable();
1592 menuCheckLockJpsWalkableAreas->disable();
1593 menuCheckLockJpsObstacles->disable();
1594 // now hide it
1595 menuCheckLockJunctions->hide();
1596 menuCheckLockEdges->hide();
1597 menuCheckLockLanes->hide();
1598 menuCheckLockConnections->hide();
1599 menuCheckLockCrossings->hide();
1600 menuCheckLockWalkingAreas->hide();
1601 menuCheckLockAdditionals->hide();
1602 menuCheckLockTAZs->hide();
1603 menuCheckLockWires->hide();
1604 menuCheckLockPolygons->hide();
1605 menuCheckLockPOIs->hide();
1606 menuCheckLockJpsWalkableAreas->hide();
1607 menuCheckLockJpsObstacles->hide();
1608}
1609
1610
1611void
1613 // first enable menu commands
1614 menuCheckLockRoutes->enable();
1615 menuCheckLockVehicles->enable();
1616 menuCheckLockPersons->enable();
1617 menuCheckLockPersonTrips->enable();
1618 menuCheckLockWalks->enable();
1619 menuCheckLockRides->enable();
1620 menuCheckLockContainers->enable();
1621 menuCheckLockTransports->enable();
1622 menuCheckLockTranships->enable();
1623 menuCheckLockStops->enable();
1624 // set accels
1625 menuCheckLockRoutes->addHotKey(parseHotKey('r'));
1626 menuCheckLockVehicles->addHotKey(parseHotKey('v'));
1627 menuCheckLockPersons->addHotKey(parseHotKey('p'));
1628 menuCheckLockPersonTrips->addHotKey(parseHotKey('t'));
1629 menuCheckLockWalks->addHotKey(parseHotKey('w'));
1630 menuCheckLockRides->addHotKey(parseHotKey('d'));
1631 menuCheckLockContainers->addHotKey(parseHotKey('c'));
1632 menuCheckLockTransports->addHotKey(parseHotKey('n'));
1633 menuCheckLockTranships->addHotKey(parseHotKey('h'));
1634 menuCheckLockStops->addHotKey(parseHotKey('s'));
1635 // now show it
1636 menuCheckLockRoutes->show();
1637 menuCheckLockVehicles->show();
1638 menuCheckLockPersons->show();
1639 menuCheckLockPersonTrips->show();
1640 menuCheckLockWalks->show();
1641 menuCheckLockRides->show();
1642 menuCheckLockContainers->show();
1643 menuCheckLockTransports->show();
1644 menuCheckLockTranships->show();
1645 menuCheckLockStops->show();
1646}
1647
1648
1649void
1651 // first disable menu commands
1652 menuCheckLockRoutes->disable();
1653 menuCheckLockVehicles->disable();
1654 menuCheckLockPersons->disable();
1655 menuCheckLockPersonTrips->disable();
1656 menuCheckLockWalks->disable();
1657 menuCheckLockRides->disable();
1658 menuCheckLockContainers->disable();
1659 menuCheckLockTransports->disable();
1660 menuCheckLockTranships->disable();
1661 menuCheckLockStops->disable();
1662 // now hide it
1663 menuCheckLockRoutes->hide();
1664 menuCheckLockVehicles->hide();
1665 menuCheckLockPersons->hide();
1666 menuCheckLockPersonTrips->hide();
1667 menuCheckLockWalks->hide();
1668 menuCheckLockRides->hide();
1669 menuCheckLockContainers->hide();
1670 menuCheckLockTransports->hide();
1671 menuCheckLockTranships->hide();
1672 menuCheckLockStops->hide();
1673}
1674
1675
1676void
1678 // first enable menu commands
1679 menuCheckLockEdgeDatas->enable();
1680 menuCheckLockEdgeRelDatas->enable();
1681 menuCheckLockEdgeTAZRels->enable();
1682 // set accels
1683 menuCheckLockEdgeDatas->addHotKey(parseHotKey('e'));
1684 menuCheckLockEdgeRelDatas->addHotKey(parseHotKey('d'));
1685 menuCheckLockEdgeTAZRels->addHotKey(parseHotKey('t'));
1686 // now show it
1687 menuCheckLockEdgeDatas->show();
1688 menuCheckLockEdgeRelDatas->show();
1689 menuCheckLockEdgeTAZRels->show();
1690}
1691
1692
1693void
1695 // first disable menu commands
1696 menuCheckLockEdgeDatas->disable();
1697 menuCheckLockEdgeRelDatas->disable();
1698 menuCheckLockEdgeTAZRels->disable();
1699 // now hide it
1700 menuCheckLockEdgeDatas->hide();
1701 menuCheckLockEdgeRelDatas->hide();
1702 menuCheckLockEdgeTAZRels->hide();
1703}
1704
1705
1706void
1708 menuCheckLockJunctions->setCheck(TRUE);
1709 menuCheckLockEdges->setCheck(TRUE);
1710 menuCheckLockLanes->setCheck(TRUE);
1711 menuCheckLockConnections->setCheck(TRUE);
1712 menuCheckLockCrossings->setCheck(TRUE);
1713 menuCheckLockWalkingAreas->setCheck(TRUE);
1714 menuCheckLockAdditionals->setCheck(TRUE);
1715 menuCheckLockTAZs->setCheck(TRUE);
1716 menuCheckLockWires->setCheck(TRUE);
1717 menuCheckLockPolygons->setCheck(TRUE);
1718 menuCheckLockPOIs->setCheck(TRUE);
1719 menuCheckLockJpsWalkableAreas->setCheck(TRUE);
1720 menuCheckLockJpsObstacles->setCheck(TRUE);
1721 menuCheckLockRoutes->setCheck(TRUE);
1722 menuCheckLockVehicles->setCheck(TRUE);
1723 menuCheckLockPersons->setCheck(TRUE);
1724 menuCheckLockPersonTrips->setCheck(TRUE);
1725 menuCheckLockWalks->setCheck(TRUE);
1726 menuCheckLockRides->setCheck(TRUE);
1727 menuCheckLockContainers->setCheck(TRUE);
1728 menuCheckLockTransports->setCheck(TRUE);
1729 menuCheckLockTranships->setCheck(TRUE);
1730 menuCheckLockStops->setCheck(TRUE);
1731 menuCheckLockEdgeDatas->setCheck(TRUE);
1732 menuCheckLockEdgeRelDatas->setCheck(TRUE);
1733 menuCheckLockEdgeTAZRels->setCheck(TRUE);
1734}
1735
1736
1737void
1739 menuCheckLockJunctions->setCheck(FALSE);
1740 menuCheckLockEdges->setCheck(FALSE);
1741 menuCheckLockLanes->setCheck(FALSE);
1742 menuCheckLockConnections->setCheck(FALSE);
1743 menuCheckLockCrossings->setCheck(FALSE);
1744 menuCheckLockWalkingAreas->setCheck(FALSE);
1745 menuCheckLockAdditionals->setCheck(FALSE);
1746 menuCheckLockTAZs->setCheck(FALSE);
1747 menuCheckLockWires->setCheck(FALSE);
1748 menuCheckLockPolygons->setCheck(FALSE);
1749 menuCheckLockPOIs->setCheck(FALSE);
1750 menuCheckLockJpsWalkableAreas->setCheck(FALSE);
1751 menuCheckLockJpsObstacles->setCheck(FALSE);
1752 menuCheckLockRoutes->setCheck(FALSE);
1753 menuCheckLockVehicles->setCheck(FALSE);
1754 menuCheckLockPersons->setCheck(FALSE);
1755 menuCheckLockPersonTrips->setCheck(FALSE);
1756 menuCheckLockWalks->setCheck(FALSE);
1757 menuCheckLockRides->setCheck(FALSE);
1758 menuCheckLockContainers->setCheck(FALSE);
1759 menuCheckLockTransports->setCheck(FALSE);
1760 menuCheckLockTranships->setCheck(FALSE);
1761 menuCheckLockStops->setCheck(FALSE);
1762 menuCheckLockEdgeDatas->setCheck(FALSE);
1763 menuCheckLockEdgeRelDatas->setCheck(FALSE);
1764 menuCheckLockEdgeTAZRels->setCheck(FALSE);
1765}
1766
1767
1768void
1770 // check elements
1771 if (AC->getTagProperty()->getTag() == SUMO_TAG_JUNCTION) {
1772 menuCheckLockJunctions->setCheck(value);
1773 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_EDGE) {
1774 menuCheckLockEdges->setCheck(value);
1775 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_LANE) {
1776 menuCheckLockLanes->setCheck(value);
1777 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_CONNECTION) {
1778 menuCheckLockConnections->setCheck(value);
1779 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_CROSSING) {
1780 menuCheckLockCrossings->setCheck(value);
1781 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_WALKINGAREA) {
1782 menuCheckLockWalkingAreas->setCheck(value);
1783 } else if (AC->getTagProperty()->isAdditionalElement()) {
1784 menuCheckLockAdditionals->setCheck(value);
1785 } else if (AC->getTagProperty()->isTAZElement()) {
1786 menuCheckLockTAZs->setCheck(value);
1787 } else if (AC->getTagProperty()->isWireElement()) {
1788 menuCheckLockWires->setCheck(value);
1789 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_POLY) {
1790 menuCheckLockPolygons->setCheck(value);
1791 } else if (AC->getTagProperty()->getTag() == GNE_TAG_JPS_WALKABLEAREA) {
1792 menuCheckLockJpsWalkableAreas->setCheck(value);
1793 } else if (AC->getTagProperty()->getTag() == GNE_TAG_JPS_OBSTACLE) {
1794 menuCheckLockJpsObstacles->setCheck(value);
1795 } else if ((AC->getTagProperty()->getTag() == SUMO_TAG_POI) ||
1796 (AC->getTagProperty()->getTag() == GNE_TAG_POILANE) ||
1797 (AC->getTagProperty()->getTag() == GNE_TAG_POIGEO)) {
1798 menuCheckLockPOIs->setCheck(value);
1799 } else if (AC->getTagProperty()->isRoute()) {
1800 menuCheckLockRoutes->setCheck(value);
1801 } else if (AC->getTagProperty()->isVehicle()) {
1802 menuCheckLockVehicles->setCheck(value);
1803 } else if (AC->getTagProperty()->isPerson()) {
1804 menuCheckLockPersons->setCheck(value);
1805 } else if (AC->getTagProperty()->isPlanPersonTrip()) {
1806 menuCheckLockPersonTrips->setCheck(value);
1807 } else if (AC->getTagProperty()->isPlanWalk()) {
1808 menuCheckLockWalks->setCheck(value);
1809 } else if (AC->getTagProperty()->isPlanRide()) {
1810 menuCheckLockRides->setCheck(value);
1811 } else if (AC->getTagProperty()->isContainer()) {
1812 menuCheckLockContainers->setCheck(value);
1813 } else if (AC->getTagProperty()->isPlanTransport()) {
1814 menuCheckLockTransports->setCheck(value);
1815 } else if (AC->getTagProperty()->isPlanTranship()) {
1816 menuCheckLockTranships->setCheck(value);
1817 } else if (AC->getTagProperty()->isVehicleStop() ||
1820 menuCheckLockStops->setCheck(value);
1821 } else if (AC->getTagProperty()->getTag() == GNE_TAG_EDGEREL_SINGLE) {
1822 menuCheckLockEdgeDatas->setCheck(value);
1823 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_EDGEREL) {
1824 menuCheckLockEdgeRelDatas->setCheck(value);
1825 } else if (AC->getTagProperty()->getTag() == SUMO_TAG_TAZREL) {
1826 menuCheckLockEdgeTAZRels->setCheck(value);
1827 }
1828}
1829
1830
1831FXHotKey
1833 FXuint code = 0, mods = 0;
1834 if (Unicode::isAlphaNumeric(character)) {
1835 mods = ALTMASK;
1836 code = fxucs2keysym(Unicode::toLower(character));
1837 }
1838 return MKUINT(code, mods);
1839}
1840
1841// ---------------------------------------------------------------------------
1842// GNEApplicationWindowHelper::ProcessingMenuCommands - methods
1843// ---------------------------------------------------------------------------
1844
1846 myApplicationWindow(applicationWindow) {
1847}
1848
1849
1850void
1852 // build network processing menu commands
1853 computeNetwork = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1854 TL("Compute Junctions"), "F5", TL("Compute junction shape and logic."),
1856 computeNetworkVolatile = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1857 TL("Compute Junctions with volatile options"), "Shift+F5", TL("Compute junction shape and logic using volatile junctions."),
1859 cleanJunctions = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1860 TL("Clean Junctions"), "F6", TL("Remove solitary junctions."),
1862 joinJunctions = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1863 TL("Join Selected Junctions"), "F7", TL("Join selected junctions into a single junction."),
1865 clearInvalidCrossings = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1866 TL("Clean invalid crossings"), "F8", TL("Clear invalid crossings."),
1868 // add separator for checkBox
1869 mySeparatorCheckBox = new FXMenuSeparator(processingMenu);
1870 // add checkBox for recomputing in data mode
1871 menuCheckRecomputeDataMode = GUIDesigns::buildFXMenuCheckboxIcon(processingMenu,
1872 TL("Recompute Network in Data Mode"), "", "",
1874 // set default value
1875 menuCheckRecomputeDataMode->setCheck(myApplicationWindow->getApp()->reg().readBoolEntry("NETEDIT", "RecomputeData", true));
1876 // build demand processing menu commands
1877 computeDemand = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1878 TL("Compute demand"), "F5", TL("Computes demand elements."),
1880 cleanRoutes = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1881 TL("Clean routes"), "F6", TL("Removes routes without vehicles."),
1883 joinRoutes = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1884 TL("Join routes"), "F7", TL("Joins routes with the same edges."),
1886 adjustPersonPlans = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1887 TL("Adjust person plans"), "Shift+F7", TL("Adjust person plans (start/end positions, arrival positions, etc.)"),
1889 clearInvalidDemandElements = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1890 TL("Clean invalid route elements"), "F8", TL("Clear elements with an invalid path (routes, Trips, Flows...)."),
1892 // add separator
1893 myOptionsSeparator = new FXMenuSeparator(processingMenu);
1894 // create optionmenus
1895 optionMenus = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1896 TL("Sumo options"), "Shift+F10", TL("Configure sumo Options."),
1898 // add separator
1899 myOptionsSeparator = new FXMenuSeparator(processingMenu);
1900 // create optionmenus
1901 optionMenus = GUIDesigns::buildFXMenuCommandShortcut(processingMenu,
1902 TL("Options"), "F10", TL("Configure netedit Options."),
1904}
1905
1906
1907void
1909 // first enable menu commands
1910 computeNetwork->enable();
1911 computeNetworkVolatile->enable();
1912 cleanJunctions->enable();
1913 joinJunctions->enable();
1914 clearInvalidCrossings->enable();
1915 mySeparatorCheckBox->enable();
1916 menuCheckRecomputeDataMode->enable();
1917 // now show it
1918 computeNetwork->show();
1919 computeNetworkVolatile->show();
1920 cleanJunctions->show();
1921 joinJunctions->show();
1922 clearInvalidCrossings->show();
1923 mySeparatorCheckBox->show();
1924 menuCheckRecomputeDataMode->show();
1925}
1926
1927
1928void
1930 // first disable menu commands
1931 computeNetwork->disable();
1932 computeNetworkVolatile->disable();
1933 cleanJunctions->disable();
1934 joinJunctions->disable();
1935 clearInvalidCrossings->disable();
1936 // now hide it
1937 computeNetwork->hide();
1938 computeNetworkVolatile->hide();
1939 cleanJunctions->hide();
1940 joinJunctions->hide();
1941 clearInvalidCrossings->hide();
1942}
1943
1944
1945void
1947 // first enable menu commands
1948 computeDemand->enable();
1949 cleanRoutes->enable();
1950 joinRoutes->enable();
1951 adjustPersonPlans->enable();
1952 clearInvalidDemandElements->enable();
1953 // now show it
1954 computeDemand->show();
1955 cleanRoutes->show();
1956 joinRoutes->show();
1957 adjustPersonPlans->show();
1958 clearInvalidDemandElements->show();
1959}
1960
1961
1962void
1964 // first disable menu commands
1965 computeDemand->disable();
1966 cleanRoutes->disable();
1967 joinRoutes->disable();
1968 adjustPersonPlans->disable();
1969 clearInvalidDemandElements->disable();
1970 // now hide it
1971 computeDemand->hide();
1972 cleanRoutes->hide();
1973 joinRoutes->hide();
1974 adjustPersonPlans->hide();
1975 clearInvalidDemandElements->hide();
1976}
1977
1978
1979void
1983
1984
1985void
1989
1990
1991void
1995
1996
1997void
2001
2002// ---------------------------------------------------------------------------
2003// GNEApplicationWindowHelper::LocateMenuCommands - methods
2004// ---------------------------------------------------------------------------
2005
2007 myApplicationWindow(applicationWindow) {
2008}
2009
2010
2011void
2013 // build locate menu commands
2015 TL("&Junctions"), "Shift+J", TL("Open a dialog for locating a Junction."),
2018 TL("&Edges"), "Shift+E", TL("Open a dialog for locating an Edge."),
2021 TL("&WalkingAreas"), "Shift+W", TL("Open a dialog for locating a Walking Area."),
2024 TL("&Vehicles"), "Shift+V", TL("Open a dialog for locating a Vehicle."),
2027 TL("&Persons"), "Shift+P", TL("Open a dialog for locating a Person."),
2030 TL("&Containers"), "Shift+C", TL("Open a dialog for locating a Container."),
2033 TL("&Route"), "Shift+R", TL("Open a dialog for locating a Route."),
2036 TL("&Stops"), "Shift+S", TL("Open a dialog for locating a Stop."),
2039 TL("&TLS"), "Shift+T", TL("Open a dialog for locating a Traffic Light."),
2042 TL("&Additional"), "Shift+A", TL("Open a dialog for locating an Additional Structure."),
2045 TL("P&oI"), "Shift+O", TL("Open a dialog for locating a Point of Interest."),
2048 TL("Po&lygon"), "Shift+L", TL("Open a dialog for locating a Polygon."),
2050}
2051
2052// ---------------------------------------------------------------------------
2053// GNEApplicationWindowHelper::ToolsMenuCommands - methods
2054// ---------------------------------------------------------------------------
2055
2057 myApplicationWindow(applicationWindow) {
2058}
2059
2060
2062 // delete all tools
2063 for (const auto& tool : myPythonTools) {
2064 delete tool;
2065 }
2066}
2067
2068
2069void
2071 const std::map<std::string, FXMenuPane*>& menuPaneToolMaps) {
2072 // build tools from template
2073 // the templateTools vector is imported from templates.h (which only exists in the cmake-build folder)
2074 for (const auto& templateTool : templateTools) {
2075 if (templateTool.name == "netdiff") {
2076 myPythonTools.push_back(new GNENetDiffTool(myApplicationWindow, templateTool.pythonPath,
2077 menuPaneToolMaps.at(templateTool.subfolder)));
2078 } else if (menuPaneToolMaps.count(templateTool.subfolder) > 0) {
2079 myPythonTools.push_back(new GNEPythonTool(myApplicationWindow, templateTool.pythonPath,
2080 templateTool.templateStr, menuPaneToolMaps.at(templateTool.subfolder)));
2081 } else {
2082 myPythonTools.push_back(new GNEPythonTool(myApplicationWindow, templateTool.pythonPath,
2083 templateTool.templateStr, toolsMenu));
2084 }
2085 }
2086}
2087
2088
2089long
2091 // iterate over all tools and find menu command
2092 for (const auto& tool : myPythonTools) {
2093 if (tool->getMenuCommand() == menuCommand) {
2094 GNEPythonToolDialog(myApplicationWindow, tool);
2095 return 1;
2096 }
2097 }
2098 return 0;
2099}
2100
2101
2102long
2104 // iterate over all tools and find menu command
2105 for (const auto& tool : myPythonTools) {
2106 if (tool->getMenuCommand() == menuCommand) {
2107 GNERunPythonToolDialog(myApplicationWindow, tool);
2108 return 1;
2109 }
2110 }
2111 return 0;
2112}
2113
2114
2115long
2117 // iterate over all tools and find menu command
2118 for (const auto& tool : myPythonTools) {
2119 if (tool->getMenuCommand() == menuCommand) {
2120 // execute postProcessing
2121 tool->postProcessing();
2122 return 1;
2123 }
2124 }
2125 return 0;
2126}
2127
2128// ---------------------------------------------------------------------------
2129// GNEApplicationWindowHelper::WindowsMenuCommands - methods
2130// ---------------------------------------------------------------------------
2131
2133 myApplicationWindow(applicationWindow) {
2134}
2135
2136
2137void
2139 FXStatusBar* statusbar, GUIMessageWindow* messageWindow) {
2140 // build windows menu commands
2142 TL("Show Status Line"), TL("Toggle this Status Bar on/off."),
2143 statusbar, FXWindow::ID_TOGGLESHOWN);
2145 TL("Show Message Window"), TL("Toggle the Message Window on/off."),
2146 messageWindow, FXWindow::ID_TOGGLESHOWN);
2147 new FXMenuSeparator(windowsMenu);
2149 TL("Clear Message Window"), "", TL("Clear the Message Window."),
2151}
2152
2153// ---------------------------------------------------------------------------
2154// GNEApplicationWindowHelper::WindowsMenuCommands - methods
2155// ---------------------------------------------------------------------------
2156
2158 myApplicationWindow(applicationWindow) {
2159}
2160
2161
2162void
2164 // build windows menu commands
2165 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Online Documentation"), "F1", TL("Open Online documentation."),
2166 nullptr, myApplicationWindow, MID_HOTKEY_F1_ONLINEDOCUMENTATION);
2167 new FXMenuSeparator(helpMenu);
2168 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Changelog"), "", TL("Open Changelog."),
2169 nullptr, myApplicationWindow, MID_CHANGELOG);
2170 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Hotkeys"), "", TL("Open Hotkeys."),
2171 nullptr, myApplicationWindow, MID_HOTKEYS);
2172 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Tutorial"), "", TL("Open Tutorial."),
2173 nullptr, myApplicationWindow, MID_TUTORIAL);
2174 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("Feedback"), "", TL("Open feedback channels."),
2175 nullptr, myApplicationWindow, MID_FEEDBACK);
2176 new FXMenuSeparator(helpMenu);
2177 GUIDesigns::buildFXMenuCommandShortcut(helpMenu, TL("About"), "F12", TL("About netedit."),
2179}
2180
2181// ---------------------------------------------------------------------------
2182// GNEApplicationWindowHelper::NetworkCheckableButtons - methods
2183// ---------------------------------------------------------------------------
2184
2186 myApplicationWindow(applicationWindow) {
2187}
2188
2189
2190void
2192 networkMode->show();
2193 demandMode->show();
2194 dataMode->show();
2195}
2196
2197
2198void
2202
2203
2204void
2208
2209
2210void
2212 // build supermode menu commands
2213 networkMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2214 TL("&Network"), "F2", TL("Select network mode."),
2216 demandMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2217 TL("&Demand"), "F3", TL("Select demand mode."),
2219 dataMode = GUIDesigns::buildFXMenuCommandShortcut(editMenu,
2220 TL("&Data"), "F4", TL("Select data mode."),
2222}
2223
2224// ---------------------------------------------------------------------------
2225// GNESumoConfigHandler - methods
2226// ---------------------------------------------------------------------------
2227
2229 myApplicationWindow(applicationWindow),
2230 mySumoConfigFile(sumoConfigFile) {
2231}
2232
2233
2234bool
2236 // get options
2237 auto& neteditOptions = OptionsCont::getOptions();
2238 auto& sumoOptions = myApplicationWindow->getSumoOptions();
2239 // reset options
2240 sumoOptions.resetDefault();
2241 neteditOptions.resetDefault();
2242 // make all options writables
2243 sumoOptions.resetWritable();
2244 neteditOptions.resetWritable();
2245 // build parser
2246 XERCES_CPP_NAMESPACE::SAXParser parser;
2247 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2248 parser.setDisableDefaultEntityResolution(true);
2249 // start the parsing
2250 OptionsLoader handler(sumoOptions);
2251 try {
2252 parser.setDocumentHandler(&handler);
2253 parser.setErrorHandler(&handler);
2254 parser.parse(XMLSubSys::transcodeToLocal(mySumoConfigFile).c_str());
2255 // allow to load with invalid options
2256 if (handler.errorOccurred()) {
2257 WRITE_WARNING(TLF("There are invalid options in sumo configuration '%'.", mySumoConfigFile));
2258 }
2259 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2260 WRITE_ERROR(TLF("Could not load sumo configuration '%':\n %", mySumoConfigFile, XMLSubSys::transcode(e.getMessage())));
2261 return false;
2262 }
2263 // relocate files
2264 sumoOptions.relocateFiles(mySumoConfigFile);
2265 // configure files in bucket
2266 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::SUMO_CONFIG, mySumoConfigFile);
2267 // set load options in netedit
2268 neteditOptions.resetWritable();
2269 if (sumoOptions.getString("net-file").size() > 0) {
2270 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETWORK, sumoOptions.getString("net-file"));
2271 } else {
2272 WRITE_ERROR(TLF("No network defined in sumo configuration '%'.", mySumoConfigFile));
2273 return false;
2274 }
2275 neteditOptions.set("additional-files", sumoOptions.getString("additional-files"));
2276 neteditOptions.set("route-files", sumoOptions.getString("route-files"));
2277 return true;
2278}
2279
2280// ---------------------------------------------------------------------------
2281// GNENetconvertConfigHandler - methods
2282// ---------------------------------------------------------------------------
2283
2285 myNetconvertConfigFile(sumoConfigFile) {
2286}
2287
2288
2289bool
2291 // get options
2292 auto& neteditOptions = OptionsCont::getOptions();
2293 // reset options and mark all options as writables
2294 neteditOptions.resetDefault();
2295 neteditOptions.resetWritable();
2296 // build parser
2297 XERCES_CPP_NAMESPACE::SAXParser parser;
2298 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2299 parser.setDisableDefaultEntityResolution(true);
2300 // start the parsing
2301 OptionsLoader handler(neteditOptions);
2302 try {
2303 parser.setDocumentHandler(&handler);
2304 parser.setErrorHandler(&handler);
2305 parser.parse(XMLSubSys::transcodeToLocal(myNetconvertConfigFile).c_str());
2306 // allow to load with invalid options
2307 if (handler.errorOccurred()) {
2308 WRITE_WARNING(TLF("There are invalid options in netconvert configuration '%'.", myNetconvertConfigFile));
2309 }
2310 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2311 WRITE_ERROR(TLF("Could not load netconvert configuration '%':\n %", myNetconvertConfigFile, XMLSubSys::transcode(e.getMessage())));
2312 return false;
2313 }
2314 // relocate files
2315 neteditOptions.relocateFiles(myNetconvertConfigFile);
2316 // set load options in netdit
2317 neteditOptions.resetWritable();
2318 return true;
2319}
2320
2321
2322// ---------------------------------------------------------------------------
2323// GNENeteditConfigHandler - methods
2324// ---------------------------------------------------------------------------
2325
2327 myApplicationWindow(applicationWindow),
2328 myNeteditConfigFile(neteditConfigFile) {
2329}
2330
2331
2332bool
2334 // get options
2335 auto& neteditOptions = OptionsCont::getOptions();
2336 // before reset defaults, save ignore route and demand elements (because usually are loaded trought console)
2337 const bool ignoreAdditionalElements = neteditOptions.getBool("ignore.additionalelements");
2338 const bool ignoreRouteElements = neteditOptions.getBool("ignore.routeelements");
2339 // reset options
2340 neteditOptions.resetDefault();
2341 // make all options writables
2342 neteditOptions.resetWritable();
2343 // build parser
2344 XERCES_CPP_NAMESPACE::SAXParser parser;
2345 parser.setValidationScheme(XERCES_CPP_NAMESPACE::SAXParser::Val_Never);
2346 parser.setDisableDefaultEntityResolution(true);
2347 // start the parsing
2348 OptionsLoader handler(neteditOptions);
2349 try {
2350 parser.setDocumentHandler(&handler);
2351 parser.setErrorHandler(&handler);
2352 parser.parse(XMLSubSys::transcodeToLocal(myNeteditConfigFile).c_str());
2353 // allow to load with invalid options
2354 if (handler.errorOccurred()) {
2355 WRITE_WARNING(TLF("There are invalid options in netedit configuration '%'.", myNeteditConfigFile));
2356 }
2357 } catch (const XERCES_CPP_NAMESPACE::XMLException& e) {
2358 WRITE_ERROR(TLF("Could not load netedit configuration '%':\n %", myNeteditConfigFile, XMLSubSys::transcode(e.getMessage())));
2359 return false;
2360 }
2361 // relocate files
2362 neteditOptions.relocateFiles(myNeteditConfigFile);
2363 // configure files in bucket
2364 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETEDIT_CONFIG, myNeteditConfigFile);
2365 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::SUMO_CONFIG, neteditOptions.getString("sumocfg-file"));
2366 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::NETWORK, neteditOptions.getString("sumo-net-file"));
2367 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::TLS, neteditOptions.getString("tls-file"));
2368 myApplicationWindow->getFileBucketHandler()->setDefaultFilenameFile(FileBucket::Type::EDGETYPE, neteditOptions.getString("edgetypes-file"));
2369 // restore ignores
2370 neteditOptions.resetWritable();
2371 // check if ignore additional or route files
2372 if (ignoreAdditionalElements) {
2373 neteditOptions.resetDefault("additional-files");
2374 }
2375 if (ignoreRouteElements) {
2376 neteditOptions.resetDefault("route-files");
2377 }
2378 return true;
2379}
2380
2381
2382// ---------------------------------------------------------------------------
2383// GNEApplicationWindowHelper::FileBucketHandler - methods
2384// ---------------------------------------------------------------------------
2385
2387 OptionsCont& neteditOptions, OptionsCont& sumoOptions) :
2388 myApplicationWindow(applicationWindow),
2389 myNeteditOptions(neteditOptions),
2390 mySumoOptions(sumoOptions) {
2391 // create default buckets
2392 for (const auto& type : FileBucket::types) {
2393 myBuckets[type].push_back(new FileBucket(type));
2394 }
2395 for (const auto& type : FileBucket::prefixes) {
2396 myBuckets[type].push_back(new FileBucket(type));
2397 }
2398}
2399
2400
2402 // delete buckets
2403 for (auto& bucketMap : myBuckets) {
2404 for (auto& bucket : bucketMap.second) {
2405 delete bucket;
2406 }
2407 }
2408}
2409
2410
2411void
2413 // insert element
2414 if (AC->getTagProperty()->saveInParentFile() == false) {
2415 // add element in bucket
2416 AC->getFileBucket()->addElement(false);
2417 }
2418}
2419
2420
2421void
2423 if (AC->getTagProperty()->saveInParentFile() == false) {
2424 // remove element from bucket
2425 AC->getFileBucket()->removeElement(false);
2426 }
2427}
2428
2429
2432 // check file properties
2433 if (AC->getTagProperty()->saveInParentFile()) {
2434 // elements with parent aren't saved in buckets
2435 return nullptr;
2436 } else if (AC->getTagProperty()->isNetworkElement()) {
2437 // network elements are saved in a single file
2438 return myBuckets.at(FileBucket::Type::NETWORK).front();
2439 } else {
2440 // remove element from bucket
2442 // iterate over all buckets to check if the given filename already exist
2443 for (const auto& type : FileBucket::types) {
2444 // get default bucket (secure because first bucket always exist)
2445 auto defaultBucket = getDefaultBucket(type);
2446 // check if this bucket type is compatible
2447 if (AC->getTagProperty()->isFileCompatible(defaultBucket->getType())) {
2448 // search bucket with this filename
2449 for (auto& bucket : myBuckets.at(type)) {
2450 if (bucket->getFilename() == filename) {
2451 // add element in bucket
2452 bucket->addElement(AC->isTemplate());
2453 // return the new bucket
2454 return bucket;
2455 }
2456 }
2457 }
2458 }
2459 // if we didn't found a bucket whit the given filename, create new
2460 for (const auto& type : FileBucket::types) {
2461 // this front() call is secure because every bucket group have always at least one default bucket)
2462 const auto bucketType = getDefaultBucket(type)->getType();
2463 // check compatibility
2464 if (AC->getTagProperty()->isFileCompatible(bucketType)) {
2465 // create new bucket with the given filename
2466 auto bucket = new FileBucket(bucketType, filename);
2467 myBuckets.at(bucketType).push_back(bucket);
2468 // add element in bucket
2469 bucket->addElement(AC->isTemplate());
2470 // update options (because we added a new bucket)
2471 updateOptions();
2472 // return the new bucket
2473 return bucket;
2474 }
2475 }
2476 // the AC was not updated, throw error
2477 throw ProcessError(TLF("Element '% cannot be updateAC in bucket '%'", AC->getID(), filename));
2478 }
2479}
2480
2481
2482bool
2484 // check file properties
2485 if (AC->getTagProperty()->saveInParentFile()) {
2486 // elements with parent aren't saved in buckets
2487 return false;
2488 } else {
2489 // iterate over all buckets to check if exist a bucket with this filename
2490 for (const auto& type : FileBucket::types) {
2491 for (auto& bucket : myBuckets.at(type)) {
2492 if (bucket->getFilename() == filename) {
2493 // check if the bucket is compatible with this file
2494 return AC->getTagProperty()->isFileCompatible(bucket->getType());
2495 }
2496 }
2497 }
2498 // the file will be saved in a new bucket
2499 return true;
2500 }
2501}
2502
2503
2504std::string
2506 for (const auto& type : FileBucket::prefixes) {
2507 if (isFilenameDefined(type)) {
2508 return getDefaultFolder(type);
2509 }
2510 }
2511 return "";
2512}
2513
2514
2515std::string
2517 for (const auto& type : FileBucket::prefixes) {
2518 if (isFilenameDefined(type)) {
2519 return getDefaultFilename(type) + sufix;
2520 }
2521 }
2522 return "";
2523}
2524
2525
2528 return myBuckets.at(type).front();
2529}
2530
2531
2533GNEApplicationWindowHelper::FileBucketHandler::getBucket(const FileBucket::Type type, const std::string& filename, const bool create) {
2534 // iterate over all buckets to check if the given filename already exist
2535 for (auto& bucketMap : myBuckets) {
2536 for (auto& bucket : bucketMap.second) {
2537 if ((bucket->getFilename() == filename) && (bucket->getType() == type)) {
2538 return bucket;
2539 }
2540 }
2541 }
2542 // on this point, we need to check if create a new bucket
2543 if (create) {
2544 // if the default bucket is empty, but not the filename, update the default bucket
2545 if (getDefaultFilename(type).empty() && (filename.size() > 0)) {
2546 setDefaultFilenameFile(type, filename);
2547 return getDefaultBucket(type);
2548 } else {
2549 // create new bucket
2550 auto bucket = new FileBucket(type, filename);
2551 myBuckets.at(type).push_back(bucket);
2552 return bucket;
2553 }
2554 } else {
2555 return nullptr;
2556 }
2557}
2558
2559
2560const std::vector<FileBucket*>&
2562 return myBuckets.at(type);
2563}
2564
2565
2566std::string
2568 return myBuckets.at(type).front()->getFilename();
2569}
2570
2571
2572std::string
2574 std::string prefix = getDefaultFilename(type);
2575 // remove until empty or trailing slash
2576 while (true) {
2577 if (prefix.empty()) {
2578 return prefix;
2579 } else if ((prefix.back() == '\'') ||
2580 (prefix.back() == '\\') ||
2581 (prefix.back() == '/')) {
2582 // remove last trailing slash
2583 prefix.pop_back();
2584 return prefix;
2585 } else {
2586 prefix.pop_back();
2587 }
2588 }
2589}
2590
2591
2592void
2594 myBuckets.at(type).front()->setFilename(filename);
2595 // update filename in options
2596 updateOptions();
2597}
2598
2599
2600bool
2602 return (myBuckets.at(type).front()->getFilename().size() > 0);
2603}
2604
2605
2606void
2608 for (const auto& bucketPair : myBuckets) {
2609 bucketPair.second.front()->setFilename("");
2610 }
2611 // update filename in options
2612 updateOptions();
2613}
2614
2615
2616void
2618 // get filenames
2619 const auto sumoconfig = parseFilenames({FileBucket::Type::SUMO_CONFIG});
2620 const auto neteditconfig = parseFilenames({FileBucket::Type::NETEDIT_CONFIG});
2621 const auto networkFile = parseFilenames({FileBucket::Type::NETWORK});
2622 const auto additional = parseFilenames({FileBucket::Type::ADDITIONAL});
2623 const auto demandFile = parseFilenames({FileBucket::Type::DEMAND});
2624 const auto data = parseFilenames({FileBucket::Type::DATA});
2625 const auto meanData = parseFilenames({FileBucket::Type::MEANDATA});
2626 const auto additionalMeanData = parseFilenames({FileBucket::Type::ADDITIONAL, FileBucket::Type::MEANDATA});
2627 const auto edgeType = parseFilenames({FileBucket::Type::EDGETYPE});
2628 const auto tls = parseFilenames({FileBucket::Type::TLS});
2629 // set default filename depending of type
2630 myNeteditOptions.resetWritable();
2631 mySumoOptions.resetWritable();
2632 // check if save sumo additionals
2633 const bool sumoAdditionals = (myApplicationWindow->getEditMenuCommands().loadAdditionalsInSUMOGUI->getCheck() == TRUE);
2634 const bool sumoDemandElements = (myApplicationWindow->getEditMenuCommands().loadDemandInSUMOGUI->getCheck() == TRUE);
2635 // sumo config (only netedit)
2636 if (sumoconfig.size() > 0) {
2637 myNeteditOptions.set("sumocfg-file", sumoconfig);
2638 } else {
2639 myNeteditOptions.resetDefault("sumocfg-file");
2640 }
2641 // netedit config (only netedit)
2642 if (neteditconfig.size() > 0) {
2643 myNeteditOptions.set("configuration-file", neteditconfig);
2644 } else {
2645 myNeteditOptions.resetDefault("configuration-file");
2646 }
2647 // network file (common)
2648 if (networkFile.size() > 0) {
2649 myNeteditOptions.set("sumo-net-file", networkFile);
2650 mySumoOptions.set("net-file", networkFile);
2651 } else {
2652 myNeteditOptions.resetDefault("sumo-net-file");
2653 mySumoOptions.resetDefault("net-file");
2654 }
2655 // additional file (only netedit)
2656 if (additional.size() > 0) {
2657 myNeteditOptions.set("additional-files", additional);
2658 } else {
2659 myNeteditOptions.resetDefault("additional-files");
2660 }
2661 // demand file (netedit)
2662 if (demandFile.size() > 0) {
2663 myNeteditOptions.set("route-files", demandFile);
2664 } else {
2665 myNeteditOptions.resetDefault("route-files");
2666 }
2667 // demand file (sumo)
2668 if (sumoDemandElements && (demandFile.size() > 0)) {
2669 mySumoOptions.set("route-files", demandFile);
2670 } else {
2671 mySumoOptions.resetDefault("route-files");
2672 }
2673 // data file (only netedit)
2674 if (data.size() > 0) {
2675 myNeteditOptions.set("data-files", data);
2676 } else {
2677 myNeteditOptions.resetDefault("data-files");
2678 }
2679 // meanData file (only netedit)
2680 if (meanData.size() > 0) {
2681 myNeteditOptions.set("meandata-files", meanData);
2682 } else {
2683 myNeteditOptions.resetDefault("meandata-files");
2684 }
2685 // additional + meanData files (only sumo)
2686 if (sumoAdditionals && (additionalMeanData.size() > 0)) {
2687 mySumoOptions.set("additional-files", additionalMeanData);
2688 } else {
2689 mySumoOptions.resetDefault("additional-files");
2690 }
2691 // edgeType (only netedit)
2692 if (edgeType.size() > 0) {
2693 myNeteditOptions.set("edgetypes-file", edgeType);
2694 } else {
2695 myNeteditOptions.resetDefault("edgetypes-file");
2696 }
2697 // TLS (only netedit)
2698 if (tls.size() > 0) {
2699 myNeteditOptions.set("tls-file", tls);
2700 } else {
2701 myNeteditOptions.resetDefault("tls-file");
2702 }
2703 // update prefixes
2704 myBuckets.at(FileBucket::Type::SUMO_PREFIX).front()->setFilename(getPrefix(FileBucket::Type::SUMO_CONFIG, {".sumocfg", ".xml"}));
2705 myBuckets.at(FileBucket::Type::NETEDIT_PREFIX).front()->setFilename(getPrefix(FileBucket::Type::NETEDIT_CONFIG, {".netecfg", ".xml"}));
2706 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"}));
2707}
2708
2709
2710std::string
2711GNEApplicationWindowHelper::FileBucketHandler::parseFilenames(const std::vector<FileBucket::Type> types) const {
2712 std::string result;
2713 // group all saving files in a single string separated with comma
2714 for (const auto& type : types) {
2715 for (const auto& bucket : myBuckets.at(type)) {
2716 if ((bucket->getFilename().size() > 0) && (bucket->isDefaultBucket() || (bucket->getNumElements() > 0))) {
2717 result.append(bucket->getFilename() + ",");
2718 }
2719 }
2720 }
2721 // remove last ','
2722 if (result.size() > 0) {
2723 result.pop_back();
2724 }
2725 return result;
2726}
2727
2728
2729void
2731 // iterate over all buckets and remove empty buckets (except default buckets)
2732 for (auto type : FileBucket::types) {
2733 size_t bucketIndex = 0;
2734 while (bucketIndex < myBuckets.at(type).size()) {
2735 auto bucket = myBuckets.at(type).at(bucketIndex);
2736 if (bucket->isEmpty() && (bucket->isDefaultBucket() == false)) {
2737 delete bucket;
2738 myBuckets.at(type).erase(myBuckets.at(type).begin() + bucketIndex);
2739 } else {
2740 bucketIndex++;
2741 }
2742 }
2743 }
2744}
2745
2746
2747std::string
2748GNEApplicationWindowHelper::FileBucketHandler::getPrefix(FileBucket::Type type, const std::vector<std::string> invalidExtensions) const {
2749 std::string filename = getDefaultFilename(type);
2750 if (filename.size() > 0) {
2751 if (filename.back() == '.') {
2752 filename.pop_back();
2753 } else {
2754 for (const auto& invalidExtension : invalidExtensions) {
2755 filename = StringUtils::replace(filename, invalidExtension, "");
2756 }
2757 }
2758 }
2759 return filename;
2760}
2761
2762// ---------------------------------------------------------------------------
2763// GNEApplicationWindowHelper - methods
2764// ---------------------------------------------------------------------------
2765
2766bool
2767GNEApplicationWindowHelper::toggleEditOptionsNetwork(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2768 // finally function correspond to visibleMenuCommands[numericalKeyPressed]
2769 if (menuCheck == viewNet->getNetworkViewOptions().menuCheckToggleGrid) {
2770 // Call manually onCmdToggleShowGrid
2771 viewNet->onCmdToggleShowGrid(obj, sel, nullptr);
2772 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckToggleDrawJunctionShape) {
2773 // Call manually onCmdToggleDrawJunctionShape
2774 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2775 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckDrawSpreadVehicles) {
2776 // Call manually onCmdToggleDrawSpreadVehicles
2777 viewNet->onCmdToggleDrawSpreadVehicles(obj, sel, nullptr);
2778 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowDemandElements) {
2779 // Call manually onCmdToggleShowDemandElementsNetwork
2780 viewNet->onCmdToggleShowDemandElementsNetwork(obj, sel, nullptr);
2781 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckSelectEdges) {
2782 // Call manually onCmdToggleSelectEdges
2783 viewNet->onCmdToggleSelectEdges(obj, sel, nullptr);
2784 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowConnections) {
2785 // Call manually onCmdToggleShowConnections
2786 viewNet->onCmdToggleShowConnections(obj, sel, nullptr);
2787 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckHideConnections) {
2788 // Call manually onCmdToggleHideConnections
2789 viewNet->onCmdToggleHideConnections(obj, sel, nullptr);
2790 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowAdditionalSubElements) {
2791 // Call manually onCmdToggleShowAdditionalSubElements
2792 viewNet->onCmdToggleShowAdditionalSubElements(obj, sel, nullptr);
2793 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowTAZElements) {
2794 // Call manually onCmdToggleShowTAZElements
2795 viewNet->onCmdToggleShowTAZElements(obj, sel, nullptr);
2796 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckExtendSelection) {
2797 // Call manually onCmdToggleExtendSelection
2798 viewNet->onCmdToggleExtendSelection(obj, sel, nullptr);
2799 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChangeAllPhases) {
2800 // Call manually onCmdToggleChangeAllPhases
2801 viewNet->onCmdToggleChangeAllPhases(obj, sel, nullptr);
2802 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckMergeAutomatically) {
2803 // Call manually onCmdToggleMergeAutomatically
2804 viewNet->onCmdToggleMergeAutomatically(obj, sel, nullptr);
2805 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckMoveElevation) {
2806 // Call manually onCmdToggleMoveElevation
2807 viewNet->onCmdToggleMoveElevation(obj, sel, nullptr);
2808 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckChainEdges) {
2809 // Call manually onCmdToggleChainEdges
2810 viewNet->onCmdToggleChainEdges(obj, sel, nullptr);
2811 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckAutoOppositeEdge) {
2812 // Call manually onCmdToggleAutoOppositeEdge
2813 viewNet->onCmdToggleAutoOppositeEdge(obj, sel, nullptr);
2814 } else if (menuCheck == viewNet->getNetworkViewOptions().menuCheckShowJunctionBubble) {
2815 // Call manually onCmdToggleShowJunctionBubble
2816 viewNet->onCmdToggleShowJunctionBubbles(obj, sel, nullptr);
2817 } else {
2818 return false;
2819 }
2820 return true;
2821}
2822
2823
2824bool
2825GNEApplicationWindowHelper::toggleEditOptionsDemand(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2826 if (menuCheck == viewNet->getDemandViewOptions().menuCheckToggleGrid) {
2827 // Call manually onCmdToggleShowGrid
2828 viewNet->onCmdToggleShowGrid(obj, sel, nullptr);
2829 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckToggleDrawJunctionShape) {
2830 // Call manually onCmdToggleDrawJunctionShape
2831 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2832 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckDrawSpreadVehicles) {
2833 // Call manually onCmdToggleDrawSpreadVehicles
2834 viewNet->onCmdToggleDrawSpreadVehicles(obj, sel, nullptr);
2835 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideShapes) {
2836 // Call manually onCmdToggleHideShapes
2837 viewNet->onCmdToggleHideShapes(obj, sel, nullptr);
2838 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllTrips) {
2839 // Call manually onCmdToggleShowTrips
2840 viewNet->onCmdToggleShowTrips(obj, sel, nullptr);
2841 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllPersonPlans) {
2842 // Call manually onCmdToggleShowAllPersonPlans
2843 viewNet->onCmdToggleShowAllPersonPlans(obj, sel, nullptr);
2844 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckLockPerson) {
2845 // Call manually onCmdToggleLockPerson
2846 viewNet->onCmdToggleLockPerson(obj, sel, nullptr);
2847 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowAllContainerPlans) {
2848 // Call manually onCmdToggleShowAllContainerPlans
2849 viewNet->onCmdToggleShowAllContainerPlans(obj, sel, nullptr);
2850 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckLockContainer) {
2851 // Call manually onCmdToggleLockContainer
2852 viewNet->onCmdToggleLockContainer(obj, sel, nullptr);
2853 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckHideNonInspectedDemandElements) {
2854 // Call manually onCmdToggleHideNonInspecteDemandElements
2855 viewNet->onCmdToggleHideNonInspecteDemandElements(obj, sel, nullptr);
2856 } else if (menuCheck == viewNet->getDemandViewOptions().menuCheckShowOverlappedRoutes) {
2857 // Call manually onCmdToggleHideNonInspecteDemandElements
2858 viewNet->onCmdToggleShowOverlappedRoutes(obj, sel, nullptr);
2859 } else {
2860 return false;
2861 }
2862 return true;
2863}
2864
2865
2866bool
2867GNEApplicationWindowHelper::toggleEditOptionsData(GNEViewNet* viewNet, const MFXCheckableButton* menuCheck, FXObject* obj, FXSelector sel) {
2868 if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleDrawJunctionShape) {
2869 // Call manually onCmdToggleDrawJunctionShape
2870 viewNet->onCmdToggleDrawJunctionShape(obj, sel, nullptr);
2871 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowAdditionals) {
2872 // Call manually onCmdToggleShowAdditionals
2873 viewNet->onCmdToggleShowAdditionals(obj, sel, nullptr);
2874 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowShapes) {
2875 // Call manually onCmdToggleShowShapes
2876 viewNet->onCmdToggleShowShapes(obj, sel, nullptr);
2877 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckShowDemandElements) {
2878 // Call manually onCmdToggleShowDemandElementsData
2879 viewNet->onCmdToggleShowDemandElementsData(obj, sel, nullptr);
2880 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelDrawing) {
2881 // Call manually onCmdToggleTAZRelDrawing
2882 viewNet->onCmdToggleTAZRelDrawing(obj, sel, nullptr);
2883 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZDrawFill) {
2884 // Call manually onCmdToggleTAZDrawFill
2885 viewNet->onCmdToggleTAZDrawFill(obj, sel, nullptr);
2886 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelOnlyFrom) {
2887 // Call manually onCmdToggleTAZRelOnlyFrom
2888 viewNet->onCmdToggleTAZRelOnlyFrom(obj, sel, nullptr);
2889 } else if (menuCheck == viewNet->getDataViewOptions().menuCheckToggleTAZRelOnlyTo) {
2890 // Call manually onCmdToggleTAZRelOnlyTo
2891 viewNet->onCmdToggleTAZRelOnlyTo(obj, sel, nullptr);
2892 } else {
2893 return false;
2894 }
2895 return true;
2896}
2897
2898
2899bool
2900GNEApplicationWindowHelper::stringEndsWith(const std::string& str, const std::string& suffix) {
2901 if (str.length() < suffix.length()) {
2902 return false;
2903 } else {
2904 return str.compare(str.length() - suffix.length(), suffix.length(), suffix) == 0;
2905 }
2906}
2907
2908/****************************************************************************/
Supermode
@brie enum for supermodes
@ NETWORK
Network mode (Edges, junctions, etc..)
@ DATA
Data mode (edgeData, LaneData etc..)
@ DEMAND
Demand mode (Routes, Vehicles etc..)
@ MID_GNE_NETWORKVIEWOPTIONS_AUTOOPPOSITEEDGES
automatically create opposite edge
Definition GUIAppEnum.h:857
@ MID_GNE_NETGENERATE
netgenerate dialog
Definition GUIAppEnum.h:771
@ MID_HOTKEY_SHIFT_F10_SUMOOPTIONSMENU
open SUMO options menu (used in netedit)
Definition GUIAppEnum.h:274
@ MID_HOTKEY_SHIFT_F7_ADJUST_PERSON_PLANS
Adjust person plans (start und end positions, arrival positions, etc.)
Definition GUIAppEnum.h:272
@ MID_HOTKEY_SHIFT_F5_COMPUTEJUNCTIONS_VOLATILE
compute junctions with volatile options
Definition GUIAppEnum.h:270
@ MID_HOTKEY_CTRL_SHIFT_B_SAVEDATAELEMENTS
save Data Elements
Definition GUIAppEnum.h:204
@ MID_HOTKEY_F3_SUPERMODE_DEMAND
select demand supermode in netedit
Definition GUIAppEnum.h:236
@ MID_GNE_UNDOLISTDIALOG
open undo list dialog
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLPERSONPLANS
show all person plans
Definition GUIAppEnum.h:941
@ MID_GNE_UNLOCK_ALLELEMENTS
unlock all element
Definition GUIAppEnum.h:919
@ MID_HOTKEY_SHIFT_S_LOCATESTOP
Locate stop - button.
Definition GUIAppEnum.h:188
@ MID_HOTKEY_CTRL_T_OPENNETEDIT_OPENSUMO
Open current SUMO simulation/network in netedit, or current netedit simulation/network in SUMO.
Definition GUIAppEnum.h:123
@ MID_GNE_DATAVIEWOPTIONS_TAZRELDRAWING
toggle TAZRel drawing
Definition GUIAppEnum.h:965
@ MID_GNE_TOGGLE_COMPUTE_NETWORK_DATA
enable/disable computing after switchin between supermodes
Definition GUIAppEnum.h:805
@ MID_GNE_TOOLBARFILE_SAVEADDITIONALELEMENTS_UNIFIED
save additionals unified
Definition GUIAppEnum.h:725
@ MID_TOOLBAREDIT_LOADADDITIONALS
load additionals in sumo-gui/netedit after press ctrl+T
Definition GUIAppEnum.h:683
@ MID_HOTKEY_U_MODE_DECAL_TYPEDISTRIBUTION
hotkey for mode decal AND type distribution
Definition GUIAppEnum.h:69
@ MID_GNE_NETWORKVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
Definition GUIAppEnum.h:831
@ MID_HOTKEY_CTRL_Y_REDO
Undo.
Definition GUIAppEnum.h:133
@ MID_HOTKEY_CTRL_SHIFT_H_SAVEEDGETYPES
save Edge Types
Definition GUIAppEnum.h:212
@ MID_GNE_NETWORKVIEWOPTIONS_MOVEELEVATION
move elevation instead of x,y
Definition GUIAppEnum.h:853
@ MID_GNE_TOOLBARFILE_RELOAD_EDGETYPES
reload edge types
Definition GUIAppEnum.h:737
@ MID_GNE_NETWORKVIEWOPTIONS_HIDECONNECTIONS
hide connections
Definition GUIAppEnum.h:839
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWCONNECTIONS
show connections
Definition GUIAppEnum.h:837
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toggle draw TAZRel only to
Definition GUIAppEnum.h:971
@ MID_HOTKEY_CTRL_W_CLOSESIMULATION
Close simulation - ID.
Definition GUIAppEnum.h:129
@ MID_GNE_LOCK_ALLELEMENTS
lock all element
Definition GUIAppEnum.h:917
@ MID_HOTKEY_F7_JOIN_SELECTEDJUNCTIONS_ROUTES
join selected junctions in network mode and normalice demand element ids in demand mode
Definition GUIAppEnum.h:244
@ MID_HOTKEY_CTRL_D_SINGLESIMULATIONSTEP_OPENDEMANDELEMENTS
Perform a single simulation step in SUMO and open Demand Elements in netedit.
Definition GUIAppEnum.h:89
@ MID_HOTKEY_F5_COMPUTE_NETWORK_DEMAND
compute Network in network mode and Demand elements in demand mode
Definition GUIAppEnum.h:240
@ MID_HOTKEY_CTRL_O_OPENSIMULATION_OPENNETWORK
Open simulation in SUMO and open network in netedit.
Definition GUIAppEnum.h:111
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWTAZELEMENTS
show TAZ elements
Definition GUIAppEnum.h:843
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKPERSON
lock person
Definition GUIAppEnum.h:943
@ MID_HOTKEY_Z_MODE_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
Definition GUIAppEnum.h:75
@ MID_HOTKEY_F9_EDIT_VIEWSCHEME
open edit scheme menu
Definition GUIAppEnum.h:248
@ MID_GNE_DEMANDVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
Definition GUIAppEnum.h:931
@ MID_GNE_LOCK_SELECTEDELEMENTS
lock selected element
Definition GUIAppEnum.h:921
@ MID_GNE_TOOLBARFILE_SAVESUMOCONFIG_AS
save SUMOConfig as
Definition GUIAppEnum.h:719
@ MID_GNE_TOOLBARFILE_RELOAD_TLSPROGRAMS
reload TLS Programs
Definition GUIAppEnum.h:733
@ MID_HOTKEY_A_MODE_STARTSIMULATION_ADDITIONALS_STOPS
hotkey for start simulation in SUMO and set editing mode additionals AND stops in netedit
Definition GUIAppEnum.h:43
@ MID_GNE_TOOLBARFILE_OPENMEANDATAELEMENTS
open meanData file
Definition GUIAppEnum.h:751
@ MID_CHANGELOG
changelog button
Definition GUIAppEnum.h:657
@ MID_GNE_TOOLBARFILE_OPENFOREIGN
open foreign network
Definition GUIAppEnum.h:709
@ MID_GNE_TOOLBARFILE_RELOAD_NETEDITCONFIG
reload neteditConfig
Definition GUIAppEnum.h:713
@ MID_HOTKEY_CTRL_B_EDITBREAKPOINT_OPENDATAELEMENTS
Edit simulation breakpoints in SUMO and open Data Elements in netedit.
Definition GUIAppEnum.h:85
@ MID_TOOLBAREDIT_LOADDEMAND
load demand in sumo-gui/netedit after press ctrl+T
Definition GUIAppEnum.h:685
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWGRID
show grid
Definition GUIAppEnum.h:929
@ MID_HOTKEY_F1_ONLINEDOCUMENTATION
open online documentation
Definition GUIAppEnum.h:232
@ MID_HOTKEY_CTRL_SHIFT_D_SAVEDEMANDELEMENTS
Save Demand Elements.
Definition GUIAppEnum.h:208
@ MID_HOTKEY_CTRL_R_RELOAD
Reload the previously loaded simulation.
Definition GUIAppEnum.h:119
@ MID_HOTKEY_CTRL_S_STOPSIMULATION_SAVENETWORK
Stop the simulation in SUMO and save network in netedit.
Definition GUIAppEnum.h:117
@ MID_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE
hotkey for perform a single simulation step in SUMO and set delete mode in netedit
Definition GUIAppEnum.h:49
@ MID_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
Definition GUIAppEnum.h:855
@ MID_HOTKEY_F10_OPTIONSMENU
open options menu
Definition GUIAppEnum.h:250
@ MID_HOTKEY_F11_FRONTELEMENT
set/clear front element
Definition GUIAppEnum.h:252
@ MID_HOTKEY_F8_CLEANINVALID_CROSSINGS_DEMANDELEMENTS
clean invalid crossings in network mode and demand elements in demand mode
Definition GUIAppEnum.h:246
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
Definition GUIAppEnum.h:963
@ MID_GNE_TOOLBARFILE_RELOAD_MEANDATAELEMENTS
reload meanDatas
Definition GUIAppEnum.h:757
@ MID_GNE_TOOLBARFILE_SAVEMEANDATAELEMENTS_UNIFIED
save meanDatas unified
Definition GUIAppEnum.h:755
@ MID_HOTKEY_CTRL_A_STARTSIMULATION_OPENADDITIONALELEMENTS
Start the simulation in SUMO and open Additionals Elements in netedit.
Definition GUIAppEnum.h:83
@ MID_HOTKEY_C_MODE_CONNECT_CONTAINER
hotkey for mode connecting lanes AND container
Definition GUIAppEnum.h:45
@ MID_HOTKEY_H_MODE_PROHIBITION_CONTAINERPLAN
hotkey for mode prohibition AND container plan
Definition GUIAppEnum.h:53
@ MID_HOTKEY_SHIFT_O_LOCATEPOI
Locate poi - button.
Definition GUIAppEnum.h:182
@ MID_HOTKEY_W_MODE_WIRE_ROUTEDISTRIBUTION
hotkey for mode editing overhead wires AND route distributions
Definition GUIAppEnum.h:73
@ MID_HOTKEY_T_MODE_TLS_TYPE
hotkey for mode editing TLS AND Vehicle Types
Definition GUIAppEnum.h:67
@ MID_GNE_DEMANDVIEWOPTIONS_HIDESHAPES
hide shapes
Definition GUIAppEnum.h:937
@ MID_GNE_TOGGLE_UNDOREDO
enable/disable undo-redo
Definition GUIAppEnum.h:807
@ MID_HOTKEY_SHIFT_A_LOCATEADDITIONAL
Locate additional structure - button.
Definition GUIAppEnum.h:172
@ MID_GNE_TOOLBARFILE_SAVETLSPROGRAMS_AS
save TLS Programs as
Definition GUIAppEnum.h:731
@ MID_GNE_DATAVIEWOPTIONS_SHOWADDITIONALS
show additionals
Definition GUIAppEnum.h:959
@ MID_HOTKEY_SHIFT_R_LOCATEROUTE
Locate route - button.
Definition GUIAppEnum.h:186
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWBUBBLES
show junctions as bubbles
Definition GUIAppEnum.h:851
@ MID_HOTKEY_SHIFT_W_LOCATEWALKINGAREA
Locate edge - button.
Definition GUIAppEnum.h:194
@ MID_GNE_TOOLBARFILE_RELOAD_DEMANDELEMENTS
reload demand elements
Definition GUIAppEnum.h:743
@ MID_GNE_NETWORKVIEWOPTIONS_EXTENDSELECTION
extend selection
Definition GUIAppEnum.h:845
@ MID_HOTKEY_CTRL_I_EDITVIEWPORT
Open viewport editor.
Definition GUIAppEnum.h:99
@ MID_RECENTFILE
Loads a file previously loaded.
Definition GUIAppEnum.h:320
@ MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT
hotkey for stop simulation in SUMO and set select mode in netedit
Definition GUIAppEnum.h:63
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWSUBADDITIONALS
show sub-additionals
Definition GUIAppEnum.h:841
@ MID_HOTKEY_SHIFT_C_LOCATECONTAINER
Locate container - button.
Definition GUIAppEnum.h:174
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLCONTAINERPLANS
show all container plans
Definition GUIAppEnum.h:945
@ MID_HOTKEY_CTRL_SHIFT_N_NEWWINDOW
open a new window (SUMO AND netedit)
Definition GUIAppEnum.h:218
@ MID_HOTKEY_SHIFT_V_LOCATEVEHICLE
Locate vehicle - button.
Definition GUIAppEnum.h:192
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in netedit
Definition GUIAppEnum.h:238
@ MID_HOTKEY_SHIFT_L_LOCATEPOLY
Locate polygons - button.
Definition GUIAppEnum.h:180
@ MID_HOTKEY_F6_CLEAN_SOLITARYJUNCTIONS_UNUSEDROUTES
clean junctions without edges in network mode and unused routes in demand mode
Definition GUIAppEnum.h:242
@ MID_HOTKEY_CTRL_K_OPENTLSPROGRAMS
Load file with TLS Programs.
Definition GUIAppEnum.h:103
@ MID_GNE_LOCK_ELEMENT
lock element (general, used if we press directly the menuCommand in the toolbar)
Definition GUIAppEnum.h:863
@ MID_GNE_TOOLBARFILE_SAVENETEDITCONFIG_AS
save neteditConfig as
Definition GUIAppEnum.h:715
@ MID_HOTKEY_SHIFT_E_LOCATEEDGE
Locate edge - button.
Definition GUIAppEnum.h:176
@ MID_CLEARMESSAGEWINDOW
Clear simulation output.
Definition GUIAppEnum.h:369
@ MID_HOTKEY_R_MODE_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
Definition GUIAppEnum.h:65
@ MID_TUTORIAL
tutorial button
Definition GUIAppEnum.h:661
@ MID_GNE_TOGGLE_UNDOREDO_LOADING
enable/disable undo-redo during loading
Definition GUIAppEnum.h:809
@ MID_GNE_DATAVIEWOPTIONS_TAZDRAWFILL
toggle draw TAZ fill
Definition GUIAppEnum.h:967
@ MID_HOTKEY_L_MODE_PERSONPLAN
hotkey for mode person plan
Definition GUIAppEnum.h:57
@ MID_HOTKEY_V_MODE_VEHICLE
hotkey for mode create vehicles
Definition GUIAppEnum.h:71
@ MID_HOTKEY_SHIFT_P_LOCATEPERSON
Locate person - button.
Definition GUIAppEnum.h:184
@ MID_GNE_TOOLBARFILE_SAVEDATAELEMENTS_UNIFIED
save data elements unified
Definition GUIAppEnum.h:747
@ MID_HOTKEY_I_MODE_INSPECT
hotkey for mode inspecting object attributes
Definition GUIAppEnum.h:55
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
Definition GUIAppEnum.h:833
@ MID_HOTKEY_SHIFT_J_LOCATEJUNCTION
Locate junction - button.
Definition GUIAppEnum.h:178
@ MID_HOTKEY_CTRL_SHIFT_E_SAVENETEDITCONFIG
save netedit Config
Definition GUIAppEnum.h:210
@ MID_GNE_TOOLBARFILE_SAVEEDGETYPES_AS
save edgeTypes as
Definition GUIAppEnum.h:735
@ MID_HOTKEYS
hotkeys button
Definition GUIAppEnum.h:659
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
Definition GUIAppEnum.h:935
@ MID_GNE_TOOLBARFILE_RELOADNETWORK
reload only network
Definition GUIAppEnum.h:707
@ MID_GNE_NETWORKVIEWOPTIONS_MERGEAUTOMATICALLY
don't ask before merging junctions
Definition GUIAppEnum.h:849
@ MID_HOTKEY_CTRL_SHIFT_M_SAVEMEANDATAELEMENTS
save Mean Datas
Definition GUIAppEnum.h:216
@ MID_GNE_NETWORKVIEWOPTIONS_CHANGEALLPHASES
change all phases
Definition GUIAppEnum.h:847
@ MID_GNE_DATAVIEWOPTIONS_SHOWSHAPES
show shapes
Definition GUIAppEnum.h:961
@ MID_HOTKEY_E_MODE_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
Definition GUIAppEnum.h:51
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYFROM
toggle draw TAZRel only from
Definition GUIAppEnum.h:969
@ MID_GNE_TOOLBARFILE_RELOAD_SUMOCONFIG
reload SUMOConfig
Definition GUIAppEnum.h:717
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
Definition GUIAppEnum.h:829
@ MID_HOTKEY_CTRL_SHIFT_O_OPENNETCONVERTFILE
open Netconvert file
Definition GUIAppEnum.h:220
@ MID_HOTKEY_CTRL_M_OPENSUMOCONFIG
open sumo config
Definition GUIAppEnum.h:107
@ MID_GNE_TOOLBARFILE_SAVENETWORK_AS
save network as
Definition GUIAppEnum.h:721
@ MID_GNE_DEMANDVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
Definition GUIAppEnum.h:933
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
Definition GUIAppEnum.h:949
@ MID_HOTKEY_CTRL_Z_UNDO
Redo.
Definition GUIAppEnum.h:135
@ MID_GNE_TOOLBARFILE_SAVEDEMANDELEMENTS_UNIFIED
save demand elements unified
Definition GUIAppEnum.h:741
@ MID_FEEDBACK
feedback button
Definition GUIAppEnum.h:663
@ MID_HOTKEY_CTRL_H_APPSETTINGS_OPENEDGETYPES
open app setting dialog in SUMO and open edge type files in netedit
Definition GUIAppEnum.h:97
@ MID_HOTKEY_CTRL_SHIFT_S_SAVESUMOCONFIG
save SUMOConfig (SUMO AND netedit)
Definition GUIAppEnum.h:222
@ MID_HOTKEY_F12_ABOUT
open about dialog
Definition GUIAppEnum.h:256
@ MID_HOTKEY_CTRL_E_EDITSELECTION_LOADNETEDITCONFIG
Edit selection in SUMO and load neteditConfig in netedit.
Definition GUIAppEnum.h:91
@ MID_GNE_TOOLBARFILE_RELOAD_DATAELEMENTS
reload data elements
Definition GUIAppEnum.h:749
@ MID_HOTKEY_CTRL_SHIFT_K_SAVETLS
save TLS Programs
Definition GUIAppEnum.h:214
@ MID_HOTKEY_SHIFT_T_LOCATETLS
Locate TLS - button.
Definition GUIAppEnum.h:190
@ MID_HOTKEY_M_MODE_MOVE_MEANDATA
hotkey for mode moving element AND mean data
Definition GUIAppEnum.h:59
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in netedit
Definition GUIAppEnum.h:234
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
Definition GUIAppEnum.h:947
@ MID_HOTKEY_CTRL_N_OPENNETWORK_NEWNETWORK
open network in SUMO and create new empty network in netedit
Definition GUIAppEnum.h:109
@ MID_GNE_TOOLBARFILE_RELOAD_ADDITIONALELEMENTS
reload additionals
Definition GUIAppEnum.h:729
@ MID_GNE_NETWORKVIEWOPTIONS_SELECTEDGES
select edges
Definition GUIAppEnum.h:835
@ MID_GNE_SAVEJOINEDJUNCTIONS
save joined junctions
Definition GUIAppEnum.h:711
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWTRIPS
show all trips
Definition GUIAppEnum.h:939
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEGRID
show grid
Definition GUIAppEnum.h:827
@ MID_GNE_TOOLBARFILE_SAVEJUPEDSIMELEMENTS_AS
save JuPedSim as
Definition GUIAppEnum.h:727
@ MID_HOTKEY_P_MODE_POLYGON_PERSON
hotkey for mode creating polygons
Definition GUIAppEnum.h:61
@ MID_HOTKEY_CTRL_L_SAVEASPLAINXML
save network as plain XML
Definition GUIAppEnum.h:105
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALELEMENTS
Save Additional Elements.
Definition GUIAppEnum.h:202
#define GUIDesignToolbarMenuBarNetedit
design for top toolbar (file, edit, processing...) used only in netedit (due supermodes buttons)
Definition GUIDesigns.h:462
#define GUIDesignToolBarGrip
design for toolbar grip (used to change the position of toolbar with mouse)
Definition GUIDesigns.h:480
#define GUIDesignToolBar
design for default toolbar
Definition GUIDesigns.h:465
#define GUIDesignToolBarRaisedNext
design for first toolbar shell positioned in the next position of dock
Definition GUIDesigns.h:474
#define GUIDesignToolBarRaisedSupermodes
design for toolbar supermodes (grip + buttons)
Definition GUIDesigns.h:471
#define GUIDesignToolBarRaisedSame
design for toolbar
Definition GUIDesigns.h:468
@ CLEANJUNCTIONS
@ DATAMODE_CHECKBOX_SHOWADDITIONALS
@ SAVE_NETEDITCONFIG
@ SAVE_DATAELEMENTS
@ NETWORKMODE_CHECKBOX_BUBBLES
@ SAVE_NETWORKELEMENTS
@ DATAMODE_CHECKBOX_TAZRELONLYFROM
@ MODEPERSONPLAN
@ MODECROSSING
@ MODEMEANDATA
@ MODEADDITIONAL
@ MODEEDGERELDATA
@ EDITVIEWPORT
@ SUPERMODEDEMAND
@ CLEARMESSAGEWINDOW
@ MODEPROHIBITION
@ SAVE_ADDITIONALELEMENTS
@ DEMANDMODE_CHECKBOX_HIDENONINSPECTEDDEMANDELEMENTS
@ NETWORKMODE_CHECKBOX_HIDECONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWTRIPS
@ OPEN_ADDITIONALS
@ COMMONMODE_CHECKBOX_TOGGLEDRAWJUNCTIONSHAPE
@ NETEDIT_MINI
@ DATAMODE_CHECKBOX_SHOWSHAPES
@ NETWORKMODE_CHECKBOX_SELECTEDGES
@ COMMONMODE_CHECKBOX_SHOWDEMANDELEMENTS
@ COMPUTEJUNCTIONS
@ DEMANDMODE_CHECKBOX_LOCKPERSON
@ LOCATEVEHICLE
@ NETWORKMODE_CHECKBOX_MERGEAUTOMATICALLY
@ FRONTELEMENT
@ NETWORKMODE_CHECKBOX_APPLYTOALLPHASES
@ MODECREATEEDGE
@ LOCATEWALKINGAREA
@ DATAMODE_CHECKBOX_TAZRELONLYTO
@ NETWORKMODE_CHECKBOX_AUTOSELECTJUNCTIONS
@ OPEN_MEANDATAS
@ LOCATEPERSON
@ SAVE_MEANDATAELEMENTS
@ DATAMODE_CHECKBOX_TAZRELDRAWING
@ NETWORKMODE_CHECKBOX_SHOWCONNECTIONS
@ TRANSHIP_EDGE
@ LOCK_SELECTED
@ DEMANDMODE_CHECKBOX_SHOWPERSONPLANS
@ MODECONTAINER
@ DEMANDMODE_CHECKBOX_HIDESHAPES
@ JPS_WALKABLEAREA
@ DATAMODE_CHECKBOX_TAZDRAWFILL
@ MODEEDGEDATA
@ TRANSPORT_EDGE
@ NETWORKMODE_CHECKBOX_ELEVATION
@ SUPERMODENETWORK
@ JPS_OBSTACLE
@ COMMONMODE_CHECKBOX_SPREADVEHICLE
@ SAVE_DEMANDELEMENTS
@ OPEN
open icons
@ ADJUSTPERSONPLANS
@ DEMANDMODE_CHECKBOX_LOCKCONTAINER
@ NETWORKMODE_CHECKBOX_SHOWSUBADDITIONALS
@ SAVE_JUPEDSIMELEMENTS
@ LOCATECONTAINER
@ NETWORKMODE_CHECKBOX_SHOWTAZELEMENTS
@ SUPERMODEDATA
@ MODECONNECTION
@ LOCATEJUNCTION
@ MODECONTAINERPLAN
@ NETWORKMODE_CHECKBOX_CHAIN
@ COMPUTEDEMAND
@ OPEN_NETEDITCONFIG
@ DEMANDMODE_CHECKBOX_SHOWOVERLAPPEDROUTES
@ SAVE_SUMOCONFIG
@ MODETYPEDISTRIBUTION
@ OVERHEADWIRE
@ COMMONMODE_CHECKBOX_TOGGLEGRID
@ OPEN_TLSPROGRAMS
@ JOINJUNCTIONS
@ MODEROUTEDISTRIBUTION
@ PERSONTRIP_EDGE
@ MODETAZRELDATA
@ OPEN_SUMOCONFIG
@ SAVE
save icons
@ DEMANDMODE_CHECKBOX_SHOWCONTAINERPLANS
@ NETWORKMODE_CHECKBOX_TWOWAY
#define WRITE_ERROR(msg)
Definition MsgHandler.h:295
#define WRITE_WARNING(msg)
Definition MsgHandler.h:286
#define TL(string)
Definition MsgHandler.h:304
#define TLF(string,...)
Definition MsgHandler.h:306
@ SUMO_TAG_EDGEREL
a relation between two edges
@ GNE_TAG_EDGEREL_SINGLE
@ SUMO_TAG_POI
begin/end of the description of a Point of interest
@ GNE_TAG_POIGEO
Point of interest over view with GEO attributes.
@ SUMO_TAG_CONNECTION
connectioon between two lanes
@ SUMO_TAG_WALKINGAREA
walking area for pedestrians
@ SUMO_TAG_JUNCTION
begin/end of the description of a junction
@ SUMO_TAG_CROSSING
crossing between edges for pedestrians
@ SUMO_TAG_POLY
begin/end of the description of a polygon
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ GNE_TAG_POILANE
Point of interest over Lane.
@ GNE_TAG_JPS_OBSTACLE
polygon used for draw juPedSim obstacles
@ SUMO_TAG_TAZREL
a relation between two TAZs
@ GNE_TAG_JPS_WALKABLEAREA
polygon used for draw juPedSim walkable areas
@ SUMO_TAG_EDGE
begin/end of the description of an edge
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition ToString.h:49
void removeElement(const bool isTemplate)
remove element
void addElement(const bool isTemplate)
function related with Elements
Type
Files that this bucket can save.
Definition FileBucket.h:34
static const std::vector< FileBucket::Type > types
vector with all types managed in this get bucket handler
Definition FileBucket.h:28
static const std::vector< FileBucket::Type > prefixes
vector with all types and prefixes managed in this get bucket handler
Definition FileBucket.h:41
std::string parseFilenames(const std::vector< FileBucket::Type > types) const
parse filenames
std::string getConfigDirectory() const
get current config directory (if we defined a netedit, sumo or netconvert config)
void resetDefaultFilenames()
brief set default files for all buckets
std::string getDefaultFilename(const FileBucket::Type type) const
functions related with filenames
const std::vector< FileBucket * > & getFileBuckets(const FileBucket::Type type) const
get vector with all fileBuckets related with the given file type
std::map< FileBucket::Type, std::vector< FileBucket * > > myBuckets
map with the buckets
bool isFilenameDefined(const FileBucket::Type type) const
check if at least we have an additional file defined
void unregisterAC(const GNEAttributeCarrier *AC)
delete AC
std::string getConfigFilePrefix(const std::string &sufix) const
get current config patter (if we defined a netedit, sumo or netconvert config)
std::string getDefaultFolder(const FileBucket::Type type) const
get default folder associated with the given tipe
FileBucket * getDefaultBucket(const FileBucket::Type type) const
functions related with buckets
std::string getPrefix(FileBucket::Type type, const std::vector< std::string > invalidExtensions) const
get prefix of the given filename
void registerAC(const GNEAttributeCarrier *AC)
register AC
FileBucket * updateAC(const GNEAttributeCarrier *AC, const std::string &filename)
update filename vinculated with this AC
bool checkFilename(const GNEAttributeCarrier *AC, const std::string &filename) const
check if the given filename can be assigned to the given AC
FileBucketHandler(GNEApplicationWindow *applicationWindow, OptionsCont &neteditOptions, OptionsCont &sumoOptions)
constructor
FileBucket * getBucket(const FileBucket::Type type, const std::string &filename, const bool create)
get bucket
void setDefaultFilenameFile(const FileBucket::Type type, const std::string &filename)
brief set default additional file
GNENeteditConfigHandler(GNEApplicationWindow *applicationWindow, const std::string &neteditConfigFile)
Constructor.
GNESumoConfigHandler(GNEApplicationWindow *applicationWindow, const std::string &sumoConfigFile)
Constructor.
virtual FileBucket * getFileBucket() const =0
get reference to fileBucket in which save this AC
const std::string getID() const override
get ID (all Attribute Carriers have one)
bool isTemplate() const
check if this AC is template
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
bool isPlanTransport() const
return true if tag correspond to a transport
bool isContainer() const
return true if tag correspond to a container element
bool isTAZElement() const
return true if tag correspond to a TAZ element
bool isNetworkElement() const
network elements
bool isRoute() const
return true if tag correspond to a route element
bool isVehicle() const
return true if tag correspond to a vehicle element
bool isPlanStopContainer() const
return true if tag correspond to a container stop plan
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
bool isPlanPersonTrip() const
return true if tag correspond to a person trip plan
bool isFileCompatible(FileBucket::Type file) const
file
bool isWireElement() const
return true if tag correspond to a Wire element
bool saveInParentFile() const
element is saved in the parent file
bool isPlanRide() const
return true if tag correspond to a ride plan
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)
bool isPlanStopPerson() const
return true if tag correspond to a person stop plan
bool isVehicleStop() const
return true if tag correspond to a vehicle stop element
bool isPerson() const
return true if tag correspond to a person element
bool isPlanWalk() const
return true if tag correspond to a walk plan
bool isPlanTranship() const
return true if tag correspond to a tranship
long onCmdToggleShowDemandElementsNetwork(FXObject *, FXSelector, void *)
toggle show demand elements (network)
const GNEViewNetHelper::DataViewOptions & getDataViewOptions() const
get data view options
long onCmdToggleShowDemandElementsData(FXObject *, FXSelector, void *)
toggle show demand elements (data)
long onCmdToggleTAZDrawFill(FXObject *, FXSelector, void *)
toggle TAZdrawFill
long onCmdToggleDrawSpreadVehicles(FXObject *, FXSelector, void *)
toggle draw vehicles in begin position or spread in lane
long onCmdToggleShowConnections(FXObject *, FXSelector, void *)
toggle show connections
long onCmdToggleShowTAZElements(FXObject *, FXSelector, void *)
toggle show TAZ elements
long onCmdToggleMoveElevation(FXObject *, FXSelector, void *)
toggle move elevation
long onCmdToggleShowAllPersonPlans(FXObject *, FXSelector, void *)
toggle show all person plans in super mode demand
long onCmdToggleTAZRelOnlyTo(FXObject *, FXSelector, void *)
toggle TAZRez only to
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
long onCmdToggleChainEdges(FXObject *, FXSelector, void *)
toggle chain edges
long onCmdToggleLockContainer(FXObject *, FXSelector, void *)
toggle lock container in super mode demand
long onCmdToggleShowGrid(FXObject *, FXSelector, void *)
toggle show grid
long onCmdToggleHideNonInspecteDemandElements(FXObject *, FXSelector, void *)
toggle hide non inspected demand elements
long onCmdToggleDrawJunctionShape(FXObject *, FXSelector, void *)
toggle draw junction shape
long onCmdToggleShowShapes(FXObject *, FXSelector, void *)
toggle show shapes in super mode data
long onCmdToggleMergeAutomatically(FXObject *, FXSelector, void *)
toggle warn for merge
long onCmdToggleExtendSelection(FXObject *, FXSelector, void *)
toggle extend selection
long onCmdToggleShowOverlappedRoutes(FXObject *, FXSelector, void *)
toggle hide non inspected demand elements
long onCmdToggleAutoOppositeEdge(FXObject *, FXSelector, void *)
toggle autoOpposite edge
long onCmdToggleChangeAllPhases(FXObject *, FXSelector, void *)
toggle change all phases
long onCmdToggleTAZRelDrawing(FXObject *, FXSelector, void *)
toggle TAZRel drawing
long onCmdToggleShowJunctionBubbles(FXObject *, FXSelector, void *)
toggle show junction bubbles
long onCmdToggleShowAdditionalSubElements(FXObject *, FXSelector, void *)
toggle show additional sub-elements
long onCmdToggleShowAllContainerPlans(FXObject *, FXSelector, void *)
toggle show all container plans in super mode demand
long onCmdToggleTAZRelOnlyFrom(FXObject *, FXSelector, void *)
toggle TAZRez only from
long onCmdToggleShowAdditionals(FXObject *, FXSelector, void *)
toggle show additionals in super mode data
long onCmdToggleLockPerson(FXObject *, FXSelector, void *)
toggle lock person in super mode demand
long onCmdToggleSelectEdges(FXObject *, FXSelector, void *)
toggle select edges
long onCmdToggleShowTrips(FXObject *, FXSelector, void *)
toggle show all trips in super mode demand
long onCmdToggleHideShapes(FXObject *, FXSelector, void *)
toggle hide shapes in super mode demand
const GNEViewNetHelper::DemandViewOptions & getDemandViewOptions() const
get demand view options
long onCmdToggleHideConnections(FXObject *, FXSelector, void *)
toggle hide connections
static MFXMenuCheckIcon * buildFXMenuCheckboxIcon(FXComposite *p, const std::string &text, const std::string &shortcut, const std::string &info, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu checkbox with icon
static FXMenuCommand * buildFXMenuCommandRecentFile(FXComposite *p, const std::string &text, FXObject *tgt, FXSelector sel)
build menu command (for recent files)
static FXMenuCheck * buildFXMenuCheckbox(FXComposite *p, const std::string &text, const std::string &info, FXObject *tgt, FXSelector sel)
build menu checkbox
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel, const bool disable=false)
build menu command
static FXMenuCommand * buildFXMenuCommandShortcut(FXComposite *p, const std::string &text, const std::string &shortcut, const std::string &info, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu command
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
A logging window for the gui.
A storage for options typed value containers)
Definition OptionsCont.h:89
static OptionsCont & getOptions()
Retrieves the options.
A SAX-Handler for loading options.
bool errorOccurred() const
Returns the information whether an error occurred.
static std::string replace(std::string str, const std::string &what, const std::string &by)
Replaces all occurrences of the second string by the third string within the first string.
static std::string transcode(const XMLCh *const data, 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 * menuCheckExtendSelection
checkable button to extend to edge nodes