Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/netedit/GNEApplicationWindow.h
193671 views
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
/****************************************************************************/
14
/// @file GNEApplicationWindow.h
15
/// @author Jakob Erdmann
16
/// @date Feb 2011
17
///
18
// The main window of Netedit (adapted from GUIApplicationWindow)
19
/****************************************************************************/
20
#pragma once
21
#include <config.h>
22
23
#include "GNEApplicationWindowHelper.h"
24
25
// ===========================================================================
26
// class declarations
27
// ===========================================================================
28
29
class GUIEvent;
30
class GNEUndoListDialog;
31
class GNEUndoList;
32
class GNETagPropertiesDatabase;
33
class GNELoadThread;
34
class GNEInternalTest;
35
class GNEExternalRunner;
36
37
// ===========================================================================
38
// class definition
39
// ===========================================================================
40
41
class GNEApplicationWindow : public GUIMainWindow, public MFXInterThreadEventClient {
42
/// @brief FOX-declaration
43
FXDECLARE(GNEApplicationWindow)
44
45
public:
46
/**@brief Constructor
47
* @param[in] app The FOX application
48
* @param[in] tagPropertiesDatabase pointer to tag properties database
49
* @param[in] configPattern The pattern used for loading configurations
50
*/
51
GNEApplicationWindow(FXApp* app, const GNETagPropertiesDatabase* tagPropertiesDatabase, const std::string& configPattern);
52
53
/// @brief Destructor
54
~GNEApplicationWindow();
55
56
/// @brief Creates the main window (required by FOX)
57
void create();
58
59
/// @brief load net on startup
60
void loadOptionOnStartup();
61
62
/// @brief create new network
63
void createNewNetwork();
64
65
/// @brief load network
66
void loadNetwork(const std::string& networkFile);
67
68
/// @brief starts to load a configuration
69
void loadConfiguration(const std::string& configurationFile);
70
71
/// @brief starts to load a OSM File
72
void loadOSM(const std::string& OSMFile);
73
74
/// @brief build dependent
75
void dependentBuild();
76
77
/// @brief set text of the statusBar
78
void setStatusBarText(const std::string& statusBarText);
79
80
/// @brief called if the user selects Processing->compute junctions with volatile options
81
long computeJunctionWithVolatileOptions(FXObject* sender, FXSelector sel, void* ptr);
82
83
/// @brief check if console options was already loaded
84
bool consoleOptionsLoaded();
85
86
/// @brief get file bucket handler
87
GNEApplicationWindowHelper::FileBucketHandler* getFileBucketHandler() const;
88
89
/// @name functions related with external runner
90
/// @{
91
92
/// @brief get external runner
93
GNEExternalRunner* getExternalRunner() const;
94
95
/// @brief set external runner
96
void setExternalRunner(GNEExternalRunner* externalRunner);
97
98
/// @}
99
100
/// @name Inter-thread event handling
101
/// @{
102
/// @brief called when an event occurred
103
void eventOccurred();
104
105
/// @brief handle event of type Network loaded
106
void handleEvent_FileLoaded(GUIEvent* e);
107
108
/// @brief handle event of type message
109
void handleEvent_Message(GUIEvent* e);
110
111
/// @}
112
113
/// @name FOX-callbacks
114
/// @{
115
/// @brief called when the command/FXCall new window is executed
116
long onCmdNewWindow(FXObject*, FXSelector, void*);
117
118
/// @brief called when the command/FXCall new network is executed
119
long onCmdNewNetwork(FXObject*, FXSelector, void*);
120
121
/// @brief called when the command/FXCall open netconvertconfiguration is executed
122
long onCmdOpenNetconvertConfig(FXObject*, FXSelector, void*);
123
124
/// @brief called when the command/FXCall open network is executed
125
long onCmdOpenNetwork(FXObject*, FXSelector, void*);
126
127
/// @brief called when the command/FXCall open foreign is executed
128
long onCmdOpenForeign(FXObject*, FXSelector, void*);
129
130
/// @brief called when the command/FXCall open netedit config is executed
131
long onCmdOpenNeteditConfig(FXObject*, FXSelector, void*);
132
133
/// @brief called when the command/FXCall open SumoConfig is executed
134
long onCmdOpenSumoConfig(FXObject*, FXSelector, void*);
135
136
/// @brief called when the command/FXCall reload netedit config is executed
137
long onCmdReloadNeteditConfig(FXObject*, FXSelector, void*);
138
139
/// @brief called when the command/FXCall reload SumoConfig is executed
140
long onCmdReloadSumoConfig(FXObject*, FXSelector, void*);
141
142
/// @brief called when the command/FXCall reload netedit config is updated
143
long onUpdReloadNeteditConfig(FXObject*, FXSelector, void*);
144
145
/// @brief called when the command/FXCall reload SumoConfig is updated
146
long onUpdReloadSumoConfig(FXObject*, FXSelector, void*);
147
148
/// @brief called when the command/FXCall open TLS programs is executed
149
long onCmdOpenTLSPrograms(FXObject*, FXSelector, void*);
150
151
/// @brief called when the command/FXCall reload TLS programs is executed
152
long onCmdReloadTLSPrograms(FXObject*, FXSelector, void*);
153
154
/// @brief called when the command/FXCall reload TLS programs is updated
155
long onUpdReloadTLSPrograms(FXObject*, FXSelector, void*);
156
157
/// @brief called when the command/FXCall open edgeType is executed
158
long onCmdOpenEdgeTypes(FXObject*, FXSelector, void*);
159
160
/// @brief called when the command/FXCall reload edge types is executed
161
long onCmdReloadEdgeTypes(FXObject*, FXSelector, void*);
162
163
/// @brief called when the command/FXCall reload edge types is updated
164
long onUpdReloadEdgeTypes(FXObject*, FXSelector, void*);
165
166
/// @brief called when the command/FXCall smart reload is executed
167
long onCmdSmartReload(FXObject*, FXSelector, void*);
168
169
/// @brief called when the update/FXCall smart reload is executed
170
long onUpdSmartReload(FXObject*, FXSelector, void*);
171
172
/// @brief called when the command/FXCall network reload is executed
173
long onCmdReloadNetwork(FXObject*, FXSelector, void*);
174
175
/// @brief called when the update/FXCall network reload is executed
176
long onUpdReloadNetwork(FXObject*, FXSelector, void*);
177
178
/// @brief called when the command/FXCall open recent is executed
179
long onCmdOpenRecent(FXObject*, FXSelector, void*);
180
181
/// @brief called when the command/FXCall close is executed
182
long onCmdClose(FXObject*, FXSelector, void*);
183
184
/// @brief Called on menu Edit->Visualization
185
long onCmdEditViewScheme(FXObject*, FXSelector, void*);
186
187
/// @brief Called on menu Edit->Viewport
188
long onCmdEditViewport(FXObject*, FXSelector, void*);
189
190
/// @brief called when the command/FXCall locate is executed
191
long onCmdLocate(FXObject*, FXSelector, void*);
192
193
/// @brief called when user press over a tool dialog button
194
long onCmdOpenPythonToolDialog(FXObject* obj, FXSelector, void*);
195
196
/// @brief called when user run a tool
197
long onCmdRunPythonTool(FXObject* obj, FXSelector, void*);
198
199
/// @brief post processing after run tool
200
long onCmdPostProcessingPythonTool(FXObject* obj, FXSelector, void*);
201
202
/// @brief called when the command/FXCall python tool is updated
203
long onUpdPythonTool(FXObject*, FXSelector, void*);
204
205
/// @brief called when the command/FXCall save network is executed
206
long onCmdSaveNetwork(FXObject*, FXSelector, void*);
207
208
/// @brief called when the command/FXCall save network as is executed
209
long onCmdSaveNetworkAs(FXObject*, FXSelector, void*);
210
211
/// @brief called when the command/FXCall save plain xml is executed
212
long onCmdSavePlainXML(FXObject*, FXSelector, void*);
213
214
/// @brief called when the command/FXCall save as plain xml is executed
215
long onCmdSavePlainXMLAs(FXObject*, FXSelector, void*);
216
217
/// @brief called when the command/FXCall save joined is executed
218
long onCmdSaveJoinedJunctionsAs(FXObject*, FXSelector, void*);
219
220
/// @brief called when the command/FXCall save netedit config is executed
221
long onCmdSaveNeteditConfig(FXObject*, FXSelector, void*);
222
223
/// @brief called when the command/FXCall save netedit config as is executed
224
long onCmdSaveNeteditConfigAs(FXObject*, FXSelector, void*);
225
226
/// @brief called when the command/FXCall save netedit config is updated
227
long onUpdSaveNeteditConfig(FXObject*, FXSelector, void*);
228
229
/// @brief called when the command/FXCall save SumoConfig is executed
230
long onCmdSaveSumoConfig(FXObject*, FXSelector, void*);
231
232
/// @brief called when the command/FXCall save SumoConfig as is executed
233
long onCmdSaveSumoConfigAs(FXObject*, FXSelector, void*);
234
235
/// @brief called when the command/FXCall save SumoConfig is updated
236
long onUpdSaveSumoConfig(FXObject*, FXSelector, void*);
237
238
/// @brief called when the command/FXCall save TLSPrograms is executed
239
long onCmdSaveTLSPrograms(FXObject*, FXSelector, void*);
240
241
/// @brief called when the command/FXCall save TLSPrograms is updated
242
long onUpdSaveTLSPrograms(FXObject*, FXSelector, void*);
243
244
/// @brief called when the command/FXCall save edge types is executed
245
long onCmdSaveEdgeTypes(FXObject*, FXSelector, void*);
246
247
/// @brief called when the command/FXCall save edge types is updated
248
long onUpdSaveEdgeTypes(FXObject*, FXSelector, void*);
249
250
/// @brief called when the command/FXCall save TLSPrograms as is executed
251
long onCmdSaveTLSProgramsAs(FXObject*, FXSelector, void*);
252
253
/// @brief called when the command/FXCall save edgeTypes as is executed
254
long onCmdSaveEdgeTypesAs(FXObject*, FXSelector, void*);
255
256
/// @brief called when the command/FXCall open additionals is executed
257
long onCmdOpenAdditionalElements(FXObject*, FXSelector, void*);
258
259
/// @brief called when the command/FXCall reload additionals is executed
260
long onCmdReloadAdditionalElements(FXObject*, FXSelector, void*);
261
262
/// @brief called when the command/FXCall reload additionals is updated
263
long onUpdReloadAdditionalElements(FXObject*, FXSelector, void*);
264
265
/// @brief called when the command/FXCall save additionals is executed
266
long onCmdSaveAdditionalElements(FXObject*, FXSelector, void*);
267
268
/// @brief called when the command/FXCall save additionals as
269
long onCmdSaveAdditionalElementsAs(FXObject*, FXSelector, void*);
270
271
/// @brief called when the command/FXCall save additionals unified is executed
272
long onCmdSaveAdditionalElementsUnified(FXObject*, FXSelector, void*);
273
274
/// @brief called when the command/FXCall save JuPedSim elements as is executed
275
long onCmdSaveJuPedSimElementsAs(FXObject*, FXSelector, void*);
276
277
/// @brief called when the command/FXCall open demand is executed
278
long onCmdOpenDemandElements(FXObject*, FXSelector, void*);
279
280
/// @brief called when the command/FXCall reload demand elements is executed
281
long onCmdReloadDemandElements(FXObject*, FXSelector, void*);
282
283
/// @brief called when the command/FXCall reload demand elements is updated
284
long onUpdReloadDemandElements(FXObject*, FXSelector, void*);
285
286
/// @brief called when the command/FXCall save demand elements is executed
287
long onCmdSaveDemandElements(FXObject*, FXSelector, void*);
288
289
/// @brief called when the command/FXCall open data is executed
290
long onCmdOpenDataElements(FXObject*, FXSelector, void*);
291
292
/// @brief called when the command/FXCall reload data elements is executed
293
long onCmdReloadDataElements(FXObject*, FXSelector, void*);
294
295
/// @brief called when the command/FXCall reload data elements is updated
296
long onUpdReloadDataElements(FXObject*, FXSelector, void*);
297
298
/// @brief called when the command/FXCall save demand elements as is executed
299
long onCmdSaveDemandElementsAs(FXObject*, FXSelector, void*);
300
301
/// @brief called when the command/FXCall save demand elements unified is executed
302
long onCmdSaveDemandElementsUnified(FXObject*, FXSelector, void*);
303
304
/// @brief called when the command/FXCall save data elements is executed
305
long onCmdSaveDataElements(FXObject*, FXSelector, void*);
306
307
/// @brief called when the command/FXCall save data elements as is executed
308
long onCmdSaveDataElementsAs(FXObject*, FXSelector, void*);
309
310
/// @brief called when the command/FXCall save data elements unified is executed
311
long onCmdSaveDataElementsUnified(FXObject*, FXSelector, void*);
312
313
/// @brief called when the command/FXCall open meanDatas is executed
314
long onCmdOpenMeanDataElements(FXObject*, FXSelector, void*);
315
316
/// @brief called when the command/FXCall reload meanDatas is executed
317
long onCmdReloadMeanDataElements(FXObject*, FXSelector, void*);
318
319
/// @brief called when the command/FXCall reload meanDatas is updated
320
long onUpdReloadMeanDataElements(FXObject*, FXSelector, void*);
321
322
/// @brief called when the command/FXCall save meanDatas is executed
323
long onCmdSaveMeanDataElements(FXObject*, FXSelector, void*);
324
325
/// @brief called when the command/FXCall save meanDatas as is executed
326
long onCmdSaveMeanDataElementsAs(FXObject*, FXSelector, void*);
327
328
/// @brief called when the command/FXCall save meanDatas unified is executed
329
long onCmdSaveMeanDataElementsUnified(FXObject*, FXSelector, void*);
330
331
/// @brief called when the update/FXCall needs network is executed
332
long onUpdNeedsNetwork(FXObject*, FXSelector, void*);
333
334
/// @brief called when the update/FXCall needs at least one network element is executed
335
long onUpdNeedsNetworkElement(FXObject*, FXSelector, void*);
336
337
/// @brief called when the update/FXCall needs front element is executed
338
long onUpdNeedsFrontElement(FXObject*, FXSelector, void*);
339
340
/// @brief called when the update/FXCall save network is executed
341
long onUpdSaveNetwork(FXObject*, FXSelector, void*);
342
343
/// @brief called when the update/FXCall save additionals is executed
344
long onUpdSaveAdditionalElements(FXObject*, FXSelector, void*);
345
346
/// @brief called when the update/FXCall save additionals unified is executed
347
long onUpdSaveAdditionalElementsUnified(FXObject*, FXSelector, void*);
348
349
/// @brief called when the update/FXCall save juPedSim as is executed
350
long onUpdSaveJuPedSimElementsAs(FXObject*, FXSelector, void*);
351
352
/// @brief called when the update/FXCall save demand elements is executed
353
long onUpdSaveDemandElements(FXObject*, FXSelector, void*);
354
355
/// @brief called when the update/FXCall save demand elements unified is executed
356
long onUpdSaveDemandElementsUnified(FXObject*, FXSelector, void*);
357
358
/// @brief called when the update/FXCall save data elements is executed
359
long onUpdSaveDataElements(FXObject*, FXSelector, void*);
360
361
/// @brief called when the update/FXCall save data elements unified is executed
362
long onUpdSaveDataElementsUnified(FXObject*, FXSelector, void*);
363
364
/// @brief called when the update/FXCall save meanDatas is executed
365
long onUpdSaveMeanDataElements(FXObject*, FXSelector, void*);
366
367
/// @brief called when the update/FXCall save meanDatas unified is executed
368
long onUpdSaveMeanDataElementsUnified(FXObject*, FXSelector, void*);
369
370
/// @brief called when the update/FXCall undo is executed
371
long onUpdUndo(FXObject* obj, FXSelector sel, void* ptr);
372
373
/// @brief called when the update/FXCall redo is executed
374
long onUpdRedo(FXObject* obj, FXSelector sel, void* ptr);
375
376
/// @brief called when the update/FXCall compute path manager is executed
377
long onUpdComputePathManager(FXObject* obj, FXSelector sel, void* ptr);
378
379
/// @brief toggle viewOption
380
long onCmdToggleViewOption(FXObject*, FXSelector, void*);
381
382
/// @brief update viewOption
383
long onUpdToggleViewOption(FXObject*, FXSelector, void*);
384
385
/// @brief called when a key is pressed
386
long onKeyPress(FXObject* o, FXSelector sel, void* data);
387
388
/// @brief called when a key is released
389
long onKeyRelease(FXObject* o, FXSelector sel, void* data);
390
391
/// @brief Called by FOX if the application shall be closed
392
long onCmdQuit(FXObject*, FXSelector, void*);
393
394
/// @brief called when the command/FXCall edit chosen is executed
395
long onCmdEditChosen(FXObject*, FXSelector, void*);
396
397
/// @brief called when the command/FXCall show about dialog is executed
398
long onCmdAbout(FXObject*, FXSelector, void*);
399
400
/// @brief called when the command/FXCall on update open executed
401
long onUpdOpen(FXObject*, FXSelector, void*);
402
403
/// @brief called when the command/FXCall clear message windows is executed
404
long onCmdClearMsgWindow(FXObject*, FXSelector, void*);
405
406
/// @brief called when user toggle windows checkbox "load additionals"
407
long onCmdLoadAdditionalsInSUMOGUI(FXObject*, FXSelector, void*);
408
409
/// @brief called when user toggle windows checkbox "load demand"
410
long onCmdLoadDemandInSUMOGUI(FXObject*, FXSelector, void*);
411
412
/// @brief called when the command/FXCall load thread is executed
413
long onLoadThreadEvent(FXObject*, FXSelector, void*);
414
415
/// @brief called when the command/FXCall clipboard request is executed
416
long onClipboardRequest(FXObject* sender, FXSelector sel, void* ptr);
417
418
/// @brief called if the user hits an edit-supermode hotkey
419
long onCmdSetSuperMode(FXObject* sender, FXSelector sel, void* ptr);
420
421
/// @brief called if the user hits an edit-mode hotkey
422
long onCmdSetMode(FXObject* sender, FXSelector sel, void* ptr);
423
424
/// @brief called when user press a lock menu check
425
long onCmdLockElements(FXObject*, FXSelector sel, void*);
426
427
/// @brief called when user press lock all elements button
428
long onCmdLockAllElements(FXObject*, FXSelector sel, void*);
429
430
/// @brief called when user press unlock all elements button
431
long onCmdUnlockAllElements(FXObject*, FXSelector sel, void*);
432
433
/// @brief called when user press lock select elements button
434
long onCmdLockSelectElements(FXObject*, FXSelector sel, void*);
435
436
/// @brief enable or disable lock menu title
437
long onUpdLockMenuTitle(FXObject*, FXSelector sel, void*);
438
439
/// @brief called when user press a process button (or a shortcut)
440
long onCmdProcessButton(FXObject* sender, FXSelector sel, void*);
441
442
/// @brief called if the user hints ctrl + T
443
long onCmdOpenSUMOGUI(FXObject* sender, FXSelector sel, void* ptr);
444
445
/// @brief called if the user hits esc
446
long onCmdAbort(FXObject* sender, FXSelector sel, void* ptr);
447
448
/// @brief called if the user hits del
449
long onCmdDel(FXObject* sender, FXSelector sel, void* ptr);
450
451
/// @brief called if the user hits enter
452
long onCmdEnter(FXObject* sender, FXSelector sel, void* ptr);
453
454
/// @brief called if the user hits backspace
455
long onCmdBackspace(FXObject* sender, FXSelector sel, void* ptr);
456
457
/// @brief called if the user hits key combination for clear selection
458
long onCmdClearSelectionShortcut(FXObject* sender, FXSelector sel, void* ptr);
459
460
/// @brief called if the user hits key combination for focus on frame
461
long onCmdFocusFrame(FXObject* sender, FXSelector sel, void* ptr);
462
463
/// @brief called if the user press the toggle time format button
464
long onCmdToggleTimeFormat(FXObject* sender, FXSelector sel, void* ptr);
465
466
/// @brief update toggle time format button
467
long onUpdToggleTimeFormat(FXObject* sender, FXSelector sel, void* ptr);
468
469
/// @brief run tests
470
long onCmdRunTests(FXObject*, FXSelector, void*);
471
472
/// @brief enable or disable sender object depending if viewNet exist
473
long onUpdRequireViewNet(FXObject* sender, FXSelector sel, void* ptr);
474
475
/// @brief update label for require recomputing
476
long onUpdRequireRecomputing(FXObject* sender, FXSelector sel, void* ptr);
477
478
/// @brief called when run netgenerate is called
479
long onCmdRunNetgenerate(FXObject* sender, FXSelector sel, void* ptr);
480
481
/// @brief postprocessing netgenerate
482
long onCmdPostprocessingNetgenerate(FXObject* sender, FXSelector sel, void* ptr);
483
484
/// @brief called if the user press key combination Ctrl + G to toggle grid
485
long onCmdToggleGrid(FXObject*, FXSelector, void*);
486
487
/// @brief called if the user press key combination Ctrl + J to toggle draw junction shape
488
long onCmdToggleDrawJunctionShape(FXObject*, FXSelector, void*);
489
490
/// @brief called if the user call toggle front element
491
long onCmdToggleFrontElement(FXObject*, FXSelector, void*);
492
493
/// @brief called if the user press key combination Alt + <0-9>
494
long onCmdToggleEditOptions(FXObject*, FXSelector, void*);
495
496
/// @brief called if the user selects help->Documentation
497
long onCmdHelp(FXObject* sender, FXSelector sel, void* ptr);
498
499
/// @brief called if the user selects help->Changelog
500
long onCmdChangelog(FXObject* sender, FXSelector sel, void* ptr);
501
502
/// @brief called if the user selects help->Hotkeys
503
long onCmdHotkeys(FXObject* sender, FXSelector sel, void* ptr);
504
505
/// @brief called if the user selects help->Tutorial
506
long onCmdTutorial(FXObject* sender, FXSelector sel, void* ptr);
507
508
/// @brief called if the user selects help->feedback
509
long onCmdFeedback(FXObject* sender, FXSelector sel, void* ptr);
510
511
/// @brief called when toggle checkbox compute network when switching between supermodes
512
long onCmdToggleComputeNetworkData(FXObject*, FXSelector, void*);
513
514
/// @brief called when toggle checkbox disable undo redo (processing)
515
long onCmdToggleUndoRedo(FXObject*, FXSelector, void*);
516
517
/// @brief called when toggle checkbox disable undo redo during loading (file)
518
long onCmdToggleUndoRedoLoading(FXObject*, FXSelector, void*);
519
520
/// @brief called when user press "options" button
521
long onCmdOpenOptionsDialog(FXObject*, FXSelector, void*);
522
523
/// @brief called when user press "sumo options" button
524
long onCmdOpenSumoOptionsDialog(FXObject*, FXSelector, void*);
525
526
/// @brief called when user press "netgenerate" button
527
long onCmdOpenNetgenerateDialog(FXObject*, FXSelector, void*);
528
529
/// @brief called when user press "netgenerate options" button
530
long onCmdOpenNetgenerateOptionsDialog(FXObject*, FXSelector, void*);
531
532
/// @brief called when user press Ctrl+Z
533
long onCmdUndo(FXObject* sender, FXSelector, void*);
534
535
// @brief called when user press Ctrl+Y
536
long onCmdRedo(FXObject* sender, FXSelector, void*);
537
538
// @brief called when user press open undoList dialog
539
long onCmdOpenUndoListDialog(FXObject*, FXSelector, void*);
540
541
// @brief called when openUndoList is updated
542
long onUpdOpenUndoListDialog(FXObject*, FXSelector, void*);
543
544
// @brief called when user press compute path manager
545
long onCmdComputePathManager(FXObject*, FXSelector, void*);
546
547
/// @brief called when user press Ctrl+Z
548
long onCmdCut(FXObject*, FXSelector, void*);
549
550
// @brief called when user press Ctrl+Y
551
long onCmdCopy(FXObject*, FXSelector, void*);
552
553
// @brief called when user press Ctrl+Y
554
long onCmdPaste(FXObject*, FXSelector, void*);
555
556
// @brief called when user press Ctrl+F1
557
long onCmdSetTemplate(FXObject*, FXSelector, void*);
558
559
// @brief called when user press Ctrl+F2
560
long onCmdCopyTemplate(FXObject*, FXSelector, void*);
561
562
// @brief called when user press Ctrl+F3
563
long onCmdClearTemplate(FXObject*, FXSelector, void*);
564
565
/// @}
566
567
/// @name inherited from GUIMainWindow
568
/// @{
569
/// @brief get build OpenGL Canvas (due netedit only uses a single View, it always return nullptr)
570
FXGLCanvas* getBuildGLCanvas() const;
571
572
/// @brief get current simulation time (pure virtual but we don't need it)
573
SUMOTime getCurrentSimTime() const;
574
575
/// @brief get current tracker interval (pure virtual but we don't need it)
576
double getTrackerInterval() const;
577
/// @}
578
579
/// @brief get default cursor
580
FXCursor* getDefaultCursor();
581
582
/// @brief get tag properties database
583
const GNETagPropertiesDatabase* getTagPropertiesDatabase() const;
584
585
/// @brief get pointer to undoList
586
GNEUndoList* getUndoList();
587
588
/// @brief get pointer to viewNet
589
GNEViewNet* getViewNet();
590
591
/// @brief get ToolbarsGrip
592
GNEApplicationWindowHelper::ToolbarsGrip& getToolbarsGrip();
593
594
/// @brief update recomputing label
595
void updateRecomputingLabel();
596
597
/// @brief update control contents after undo/redo or recompute
598
void updateControls();
599
600
/// @brief update FXMenuCommands depending of supermode
601
void updateSuperModeMenuCommands(const Supermode supermode);
602
603
/// @name functions related with undo-redo
604
/// @{
605
/// @brief check if undo-redo is allow (processing/checkbox)
606
bool isUndoRedoAllowed() const;
607
608
/// @brief enable undo-redo temporally (for example, after creating an edge)
609
void enableUndoRedoTemporally();
610
611
/// @brief disable undo-redo temporally giving a string with the reason (for example, if we're creating an edge)
612
void disableUndoRedoTemporally(const std::string& reason);
613
614
/// @brief check if undo-redo is enabled temporally
615
const std::string& isUndoRedoEnabledTemporally() const;
616
617
/// @brief clear undo list
618
void clearUndoList();
619
620
/// @}
621
622
/// @brief get file Menu Commands (needed for show/hide menu commands)
623
GNEApplicationWindowHelper::FileMenuCommands& getFileMenuCommands();
624
625
/// @brief get modes Menu Commands (needed for show/hide menu commands)
626
GNEApplicationWindowHelper::ModesMenuCommands& getModesMenuCommands();
627
628
/// @brief get Edit Menu Commands (needed for show/hide menu commands)
629
GNEApplicationWindowHelper::EditMenuCommands& getEditMenuCommands();
630
631
/// @brief get processing Menu Commands
632
const GNEApplicationWindowHelper::ProcessingMenuCommands& getProcessingMenuCommands() const;
633
634
/// @brief get lock Menu Commands
635
GNEApplicationWindowHelper::LockMenuCommands& getLockMenuCommands();
636
637
/// @brief get SUMO options container
638
OptionsCont& getSumoOptions();
639
640
/// @brief get netgenerate options container
641
OptionsCont& getNetgenerateOptions();
642
643
/// @brief load additional elements from netedit options
644
void loadAdditionalElements(const std::string operation);
645
646
/// @brief load demand elements from netedit options
647
void loadDemandElements(const std::string operation);
648
649
/// @brief load data elements from netedit options
650
void loadDataElements(const std::string operation);
651
652
/// @brief load meanData elements from netedit options
653
void loadMeanDataElements(const std::string operation);
654
655
/// @brief load traffic lights
656
void loadTrafficLights(const std::string operation);
657
658
/// @brief load meanData elements
659
void loadEdgeTypes(const std::string operation);
660
661
/// @name functions related with test system
662
/// @{
663
664
/// @brief get netedit test system
665
GNEInternalTest* getInternalTest() const;
666
667
/// @brief check if ignore input signal (using during netedit tests)
668
bool allowInputSignals(FXObject* obj) const;
669
670
/// @}
671
672
protected:
673
/// @brief FOX needs this for static members
674
GNEApplicationWindow();
675
676
/// @brief external runner for running external tools
677
GNEExternalRunner* myExternalRunner = nullptr;
678
679
/// @brief the thread that loads the network
680
GNELoadThread* myLoadThread = nullptr;
681
682
/// @brief internal test system
683
public:
684
GNEInternalTest* myInternalTest = nullptr;
685
private:
686
/// @brief information whether the gui is currently loading and the load-options shall be greyed out
687
bool myAmLoading = false;
688
689
/// @brief the submenus
690
FXMenuPane* myFileMenu = nullptr;
691
FXMenuPane* myFileMenuNeteditConfig = nullptr;
692
FXMenuPane* myFileMenuSumoConfig = nullptr;
693
FXMenuPane* myFileMenuTLS = nullptr;
694
FXMenuPane* myFileMenuEdgeTypes = nullptr;
695
FXMenuPane* myFileMenuAdditionals = nullptr;
696
FXMenuPane* myFileMenuDemandElements = nullptr;
697
FXMenuPane* myFileMenuDataElements = nullptr;
698
FXMenuPane* myFileMenuMeanDataElements = nullptr;
699
FXMenuPane* myFileMenuRecentNetworks = nullptr;
700
FXMenuPane* myFileMenuRecentConfigs = nullptr;
701
FXMenuPane* myModesMenu = nullptr;
702
FXMenuPane* myEditMenu = nullptr;
703
FXMenuPane* myLockMenu = nullptr;
704
FXMenuPane* myProcessingMenu = nullptr;
705
FXMenuPane* myLocatorMenu = nullptr;
706
FXMenuPane* myToolsMenu = nullptr;
707
FXMenuPane* myToolsAssignMenu = nullptr;
708
FXMenuPane* myToolsDetectorMenu = nullptr;
709
FXMenuPane* myToolsDistrictMenu = nullptr;
710
FXMenuPane* myToolsDRTMenu = nullptr;
711
FXMenuPane* myToolsEmissionsMenu = nullptr;
712
FXMenuPane* myToolsImportMenu = nullptr;
713
FXMenuPane* myToolsImportCityBrainMenu = nullptr;
714
FXMenuPane* myToolsImportGTFSMenu = nullptr;
715
FXMenuPane* myToolsImportVissim = nullptr;
716
FXMenuPane* myToolsImportVisum = nullptr;
717
FXMenuPane* myToolsNetMenu = nullptr;
718
FXMenuPane* myToolsRouteMenu = nullptr;
719
FXMenuPane* myToolsOutputMenu = nullptr;
720
FXMenuPane* myToolsShapes = nullptr;
721
FXMenuPane* myToolsTLS = nullptr;
722
FXMenuPane* myToolsTriggerMenu = nullptr;
723
FXMenuPane* myToolsTurnDefs = nullptr;
724
FXMenuPane* myToolsVisualizationMenu = nullptr;
725
FXMenuPane* myToolsXML = nullptr;
726
FXMenuPane* myWindowMenu = nullptr;
727
FXMenuPane* myHelpMenu = nullptr;
728
729
/// @brief map with menu pane tools and strings
730
std::map<std::string, FXMenuPane*> myMenuPaneToolMaps;
731
732
/// @brief menu title for modes
733
FXMenuTitle* myModesMenuTitle = nullptr;
734
735
/// @brief menu title for lock
736
FXMenuTitle* myLockMenuTitle = nullptr;
737
738
/// @brief A window to display messages, warnings and error in
739
GUIMessageWindow* myMessageWindow = nullptr;
740
741
/// @brief The splitter that divides the main window into view and the log window
742
FXSplitter* myMainSplitter = nullptr;
743
744
/// @brief Button used for show if recomputing is needed
745
MFXButtonTooltip* myRequireRecomputingButton = nullptr;
746
747
/// @brief List of load requests
748
MFXSynchQue<GUIEvent*> myThreadEvents;
749
750
/// @brief io-event with the load-thread
751
FXEX::MFXThreadEvent myLoadThreadEvent;
752
753
/// @brief check if had dependent build
754
bool myHadDependentBuild = false;
755
756
/// @brief tagProperties database
757
const GNETagPropertiesDatabase* myTagPropertiesDatabase = nullptr;
758
759
/// @brief we are responsible for the net
760
GNENet* myNet = nullptr;
761
762
/// @brief the one and only undo list
763
GNEUndoList* myUndoList = nullptr;
764
765
/// @brief Input file pattern
766
std::string myConfigPattern;
767
768
/// @brief string to check if undo/redo list is enabled (a String is used to keep the disabling reason)
769
std::string myUndoRedoListEnabled;
770
771
/// @brief original netedit options container
772
OptionsCont myOriginalNeteditOptions;
773
774
/// @brief sumo options container
775
OptionsCont mySumoOptions;
776
777
/// @brief netconvert options container
778
OptionsCont myNetconvertOptions;
779
780
/// @brief original sumo options container
781
OptionsCont myOriginalSumoOptions;
782
783
/// @brief netgenerate options container
784
OptionsCont myNetgenerateOptions;
785
786
/// @brief original netgenerate options container
787
OptionsCont myOriginalNetgenerateOptions;
788
789
/// @brief flag for check if console options was already loaded
790
bool myConsoleOptionsLoaded = true;
791
792
private:
793
/// @brief Toolbars Grip
794
GNEApplicationWindowHelper::ToolbarsGrip myToolbarsGrip;
795
796
/// @brief MenuBarFile
797
GNEApplicationWindowHelper::MenuBarFile myMenuBarFile;
798
799
/// @brief File Menu Commands
800
GNEApplicationWindowHelper::FileMenuCommands myFileMenuCommands;
801
802
/// @brief Modes Menu Commands
803
GNEApplicationWindowHelper::ModesMenuCommands myModesMenuCommands;
804
805
/// @brief Edit Menu Commands
806
GNEApplicationWindowHelper::EditMenuCommands myEditMenuCommands;
807
808
/// @brief Lock Menu Commands
809
GNEApplicationWindowHelper::LockMenuCommands myLockMenuCommands;
810
811
/// @brief Processing Menu Commands
812
GNEApplicationWindowHelper::ProcessingMenuCommands myProcessingMenuCommands;
813
814
/// @brief Locate Menu Commands
815
GNEApplicationWindowHelper::LocateMenuCommands myLocateMenuCommands;
816
817
/// @brief Tools Menu Commands
818
GNEApplicationWindowHelper::ToolsMenuCommands myToolsMenuCommands;
819
820
/// @brief Windows Menu Commands
821
GNEApplicationWindowHelper::WindowsMenuCommands myWindowsMenuCommands;
822
823
/// @brief Help Menu Commands
824
GNEApplicationWindowHelper::HelpMenuCommands myHelpMenuCommands;
825
826
/// @brief Supermode Commands
827
GNEApplicationWindowHelper::SupermodeCommands mySupermodeCommands;
828
829
/// @brief saving files handler
830
GNEApplicationWindowHelper::FileBucketHandler* myFileBucketHandler = nullptr;
831
832
/// @brief pointer to current view net
833
GNEViewNet* myViewNet = nullptr;
834
835
/// @brief the prefix for the window title
836
const FXString myTitlePrefix;
837
838
/// @brief allow undo-redo (read from registry)
839
bool myAllowUndoRedo = true;
840
841
/// @brief allow undo-redo loading (read from registry)
842
bool myAllowUndoRedoLoading = true;
843
844
/// @brief The menu used for the MDI-windows
845
FXMDIMenu* myMDIMenu = nullptr;
846
847
/// @brief Builds the menu bar
848
void fillMenuBar();
849
850
/// @brief this method closes all windows and deletes the current simulation
851
void closeAllWindows(const bool resetFilenames);
852
853
/// @brief warns about unsaved changes and gives the user the option to abort
854
bool askSaveElements(FXObject* sender, FXSelector sel, void* ptr);
855
856
/// @brief Invalidated copy constructor.
857
GNEApplicationWindow(const GNEApplicationWindow&) = delete;
858
859
/// @brief Invalidated assignment operator.
860
GNEApplicationWindow& operator=(const GNEApplicationWindow&) = delete;
861
};
862
863