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