Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/netedit/GNEViewNet.h
169666 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 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 GNEViewNet.h
15
/// @author Jakob Erdmann
16
/// @date Feb 2011
17
///
18
// A view on the network being edited (adapted from GUIViewTraffic)
19
/****************************************************************************/
20
#pragma once
21
#include <config.h>
22
23
#include <utils/gui/windows/GUISUMOAbstractView.h>
24
25
#include "GNEViewNetHelper.h"
26
27
// ===========================================================================
28
// class definitions
29
// ===========================================================================
30
31
class GNEViewNet : public GUISUMOAbstractView {
32
/// @brief FOX-declaration
33
FXDECLARE(GNEViewNet)
34
35
/// @brief declare GNEViewNetHelper as friend struct
36
friend struct GNEViewNetHelper;
37
38
public:
39
/* @brief constructor
40
* @param[in] tmpParent temporal FXFrame parent so that we can add items to view area in the desired order
41
* @param[in] actualParent FXFrame parent of GNEViewNet
42
* @param[in] app main windows
43
* @param[in] viewParent viewParent of this viewNet
44
* @param[in] net traffic net
45
* @param[in] undoList pointer to UndoList module
46
* @param[in] glVis a reference to GLVisuals
47
* @param[in] share a reference to FXCanvas
48
*/
49
GNEViewNet(FXComposite* tmpParent, FXComposite* actualParent, GUIMainWindow& app,
50
GNEViewParent* viewParent, GNENet* net, GNEUndoList* undoList,
51
FXGLVisual* glVis, FXGLCanvas* share);
52
53
/// @brief destructor
54
~GNEViewNet();
55
56
/// @brief recalculate boundaries
57
void recalculateBoundaries();
58
59
/// @brief builds the view toolbars
60
void buildViewToolBars(GUIGlChildWindow* v);
61
62
/// @brief Mark the entire GNEViewNet to be repainted later
63
void updateViewNet(const bool ignoreViewUpdater = true) const;
64
65
/// @brief force supermode network(used after load/create new network)
66
void forceSupemodeNetwork();
67
68
/// @brief called when view is updated
69
void viewUpdated();
70
71
/// @brief get objects under cursor
72
const GNEViewNetHelper::ViewObjectsSelector& getViewObjectsSelector() const;
73
74
/// @brief get move single element values
75
const GNEViewNetHelper::MoveSingleElementModul& getMoveSingleElementValues() const;
76
77
/// @brief get move multiple element values
78
const GNEViewNetHelper::MoveMultipleElementModul& getMoveMultipleElementValues() const;
79
80
/// @brief update objects and boundaries in position
81
void updateObjectsInPosition(const Position& pos);
82
83
/// @brief get objects in the given shape (using triangulation)
84
void updateObjectsInShape(const PositionVector& shape);
85
86
/// @brief redraw elements only for calculating boundary
87
void redrawPathElementContours();
88
89
/// @brief set color scheme
90
bool setColorScheme(const std::string& name);
91
92
///@brief recalibrate color scheme according to the current value range
93
void buildColorRainbow(const GUIVisualizationSettings& s, GUIColorScheme& scheme, int active, GUIGlObjectType objectType,
94
const GUIVisualizationRainbowSettings& rs);
95
96
/// @brief return list of available edge parameters
97
std::vector<std::string> getEdgeLaneParamKeys(bool edgeKeys) const;
98
99
/// @brief return list of loaded edgeData attributes
100
std::vector<std::string> getEdgeDataAttrs() const;
101
102
/// @brief return list of loaded edgeRelation and tazRelation attributes
103
std::vector<std::string> getRelDataAttrs() const;
104
105
/// @brief get draw toggle (used to avoid drawing junctions twice)
106
int getDrawingToggle() const;
107
108
/// @brief check if select edges (toggle using button or shift)
109
bool checkSelectEdges() const;
110
111
/// @brief open object dialog
112
void openObjectDialogAtCursor(const FXEvent* ev);
113
114
/// @brief open delete dialog at cursor
115
void openDeleteDialogAtCursor(const std::vector<GUIGlObject*>& GLObjects);
116
117
/// @brief open select dialog at cursor
118
void openSelectDialogAtCursor(const std::vector<GUIGlObject*>& GLObjects);
119
120
// save visualization settings
121
void saveVisualizationSettings() const;
122
123
/// @brief get edit modes
124
const GNEViewNetHelper::EditModes& getEditModes() const;
125
126
/// @brief get testing mode
127
const GNEViewNetHelper::TestingMode& getTestingMode() const;
128
129
/// @brief get network view options
130
const GNEViewNetHelper::NetworkViewOptions& getNetworkViewOptions() const;
131
132
/// @brief get demand view options
133
const GNEViewNetHelper::DemandViewOptions& getDemandViewOptions() const;
134
135
/// @brief get data view options
136
const GNEViewNetHelper::DataViewOptions& getDataViewOptions() const;
137
138
/// @brief get Key Pressed module
139
const GNEViewNetHelper::MouseButtonKeyPressed& getMouseButtonKeyPressed() const;
140
141
/// @brief get Edit Shape module
142
const GNEViewNetHelper::EditNetworkElementShapes& getEditNetworkElementShapes() const;
143
144
/// @name overloaded handlers
145
/// @{
146
/// @brief called when user press mouse's left button
147
long onLeftBtnPress(FXObject*, FXSelector, void*);
148
149
/// @brief called when user releases mouse's left button
150
long onLeftBtnRelease(FXObject*, FXSelector, void*);
151
152
/// @brief called when user press mouse's left button
153
long onMiddleBtnPress(FXObject*, FXSelector, void*);
154
155
/// @brief called when user releases mouse's left button
156
long onMiddleBtnRelease(FXObject*, FXSelector, void*);
157
158
/// @brief called when user press mouse's right button
159
long onRightBtnPress(FXObject*, FXSelector, void*);
160
161
/// @brief called when user releases mouse's right button
162
long onRightBtnRelease(FXObject*, FXSelector, void*);
163
164
/// @brief called when user moves mouse
165
long onMouseMove(FXObject*, FXSelector, void*);
166
167
/// @brief called when user press a key
168
long onKeyPress(FXObject* o, FXSelector sel, void* data);
169
170
/// @brief called when user release a key
171
long onKeyRelease(FXObject* o, FXSelector sel, void* data);
172
/// @}
173
174
/// @name set modes call backs
175
/// @{
176
/// @brief called when user press a supermode button
177
long onCmdSetSupermode(FXObject*, FXSelector sel, void*);
178
179
/// @brief called when user press a mode button (Network or demand)
180
long onCmdSetMode(FXObject*, FXSelector sel, void*);
181
182
/// @}
183
184
/// @brief split edge at cursor position
185
long onCmdSplitEdge(FXObject*, FXSelector, void*);
186
187
/// @brief split edge at cursor position
188
long onCmdSplitEdgeBidi(FXObject*, FXSelector, void*);
189
190
/// @brief reverse edge
191
long onCmdReverseEdge(FXObject*, FXSelector, void*);
192
193
/// @brief add reversed edge
194
long onCmdAddReversedEdge(FXObject*, FXSelector, void*);
195
196
/// @brief add reversed edge disconnected
197
long onCmdAddReversedEdgeDisconnected(FXObject*, FXSelector, void*);
198
199
/// @brief change geometry endpoint
200
long onCmdEditEdgeEndpoint(FXObject*, FXSelector, void*);
201
202
/// @brief change geometry endpoint
203
long onCmdResetEdgeEndpoint(FXObject*, FXSelector, void*);
204
205
/// @brief makes selected edges straight
206
long onCmdStraightenEdges(FXObject*, FXSelector, void*);
207
208
/// @brief smooth geometry
209
long onCmdSmoothEdges(FXObject*, FXSelector, void*);
210
211
/// @brief interpolate z values linear between junctions
212
long onCmdStraightenEdgesElevation(FXObject*, FXSelector, void*);
213
214
/// @brief smooth elevation with regard to adjoining edges
215
long onCmdSmoothEdgesElevation(FXObject*, FXSelector, void*);
216
217
/// @brief reset custom edge lengths
218
long onCmdResetLength(FXObject*, FXSelector, void*);
219
220
/// @brief use edge as template
221
long onCmdEdgeUseAsTemplate(FXObject*, FXSelector, void*);
222
223
/// @brief apply template to edge
224
long onCmdEgeApplyTemplate(FXObject*, FXSelector, void*);
225
226
/// @name specific of shape edited
227
/// @{
228
229
/// @brief simply shape of current polygon
230
long onCmdSimplifyShape(FXObject*, FXSelector, void*);
231
232
/// @brief delete the closes geometry point
233
long onCmdDeleteGeometryPoint(FXObject*, FXSelector, void*);
234
235
/// @brief close opened polygon
236
long onCmdClosePolygon(FXObject*, FXSelector, void*);
237
238
/// @brief open closed polygon
239
long onCmdOpenPolygon(FXObject*, FXSelector, void*);
240
241
/// @brief select elements within polygon boundary
242
long onCmdSelectPolygonElements(FXObject*, FXSelector, void*);
243
244
/// @brief triangulate polygon
245
long onCmdTriangulatePolygon(FXObject*, FXSelector, void*);
246
247
/// @brief set as first geometry point the closes geometry point
248
long onCmdSetFirstGeometryPoint(FXObject*, FXSelector, void*);
249
250
/// @}
251
252
/// @name specific of shape edited
253
/// @{
254
/// @brief simply shape edited
255
long onCmdSimplifyShapeEdited(FXObject*, FXSelector, void*);
256
257
/// @brief straight shape edited
258
long onCmdStraightenShapeEdited(FXObject*, FXSelector, void*);
259
260
/// @brief close opened shape edited
261
long onCmdCloseShapeEdited(FXObject*, FXSelector, void*);
262
263
/// @brief open closed shape edited
264
long onCmdOpenShapeEdited(FXObject*, FXSelector, void*);
265
266
/// @brief set first geometry point in shape edited
267
long onCmdSetFirstGeometryPointShapeEdited(FXObject*, FXSelector, void*);
268
269
/// @brief delete the closes geometry point in shape edited
270
long onCmdDeleteGeometryPointShapeEdited(FXObject*, FXSelector, void*);
271
272
/// @brief reset shape edited
273
long onCmdResetShapeEdited(FXObject*, FXSelector, void*);
274
275
/// @brief finish shape edited
276
long onCmdFinishShapeEdited(FXObject*, FXSelector, void*);
277
278
/// @}
279
280
/// @brief transform POI to POILane, and vice versa
281
long onCmdTransformPOI(FXObject*, FXSelector, void*);
282
283
/// @brief reverse current demand element
284
long onCmdReverse(FXObject*, FXSelector, void*);
285
286
/// @brief add a reverse demand element
287
long onCmdAddReverse(FXObject*, FXSelector, void*);
288
289
/// @brief set custom geometry point
290
long onCmdSetCustomGeometryPoint(FXObject*, FXSelector, void*);
291
292
/// @brief reset edge end points
293
long onCmdResetEndPoints(FXObject*, FXSelector, void*);
294
295
/// @brief duplicate selected lane
296
long onCmdDuplicateLane(FXObject*, FXSelector, void*);
297
298
/// @brief edit lane shape
299
long onCmdEditLaneShape(FXObject*, FXSelector, void*);
300
301
/// @brief reset custom shapes of selected lanes
302
long onCmdResetLaneCustomShape(FXObject*, FXSelector, void*);
303
304
/// @brief reset oppositeLane of current lane
305
long onCmdResetOppositeLane(FXObject*, FXSelector, void*);
306
307
/// @brief add/remove/restrict lane
308
long onCmdLaneOperation(FXObject*, FXSelector sel, void*);
309
310
/// @brief show lane reachability
311
long onCmdLaneReachability(FXObject*, FXSelector sel, void*);
312
313
/// @brief open additional dialog
314
long onCmdOpenAdditionalDialog(FXObject*, FXSelector, void*);
315
316
/// @brief edit junction shape
317
long onCmdResetEdgeEndPoints(FXObject*, FXSelector, void*);
318
319
/// @brief edit junction shape
320
long onCmdEditJunctionShape(FXObject*, FXSelector, void*);
321
322
/// @brief reset junction shape
323
long onCmdResetJunctionShape(FXObject*, FXSelector, void*);
324
325
/// @brief replace node by geometry
326
long onCmdReplaceJunction(FXObject*, FXSelector, void*);
327
328
/// @brief split junction into multiple junctions
329
long onCmdSplitJunction(FXObject*, FXSelector, void*);
330
331
/// @brief split junction into multiple junctions and reconnect them
332
long onCmdSplitJunctionReconnect(FXObject*, FXSelector, void*);
333
334
/// @brief select all roundabout nodes and edges
335
long onCmdSelectRoundabout(FXObject*, FXSelector, void*);
336
337
/// @brief convert junction to roundabout
338
long onCmdConvertRoundabout(FXObject*, FXSelector, void*);
339
340
/// @brief enter to convert junction to roundabout
341
long onEnterConvertRoundabout(FXObject*, FXSelector, void*);
342
343
/// @brief leave to convert junction to roundabout
344
long onLeaveConvertRoundabout(FXObject*, FXSelector, void*);
345
346
/// @brief clear junction connections
347
long onCmdClearConnections(FXObject*, FXSelector, void*);
348
349
/// @brief reset junction connections
350
long onCmdResetConnections(FXObject*, FXSelector, void*);
351
352
/// @brief add TLS
353
long onCmdAddTLS(FXObject*, FXSelector, void*);
354
355
/// @brief add Join TLS
356
long onCmdAddJoinTLS(FXObject*, FXSelector, void*);
357
358
/// @brief edit connection shape
359
long onCmdEditConnectionShape(FXObject*, FXSelector, void*);
360
361
/// @brief edit connection shape
362
long onCmdSmoothConnectionShape(FXObject*, FXSelector, void*);
363
364
/// @brief edit crossing shape
365
long onCmdEditCrossingShape(FXObject*, FXSelector, void*);
366
367
/// @brief edit walkingArea shape
368
long onCmdEditWalkingAreaShape(FXObject*, FXSelector, void*);
369
370
/// @name View options network call backs
371
/// @{
372
373
/// @brief toggle select edges
374
long onCmdToggleSelectEdges(FXObject*, FXSelector, void*);
375
376
/// @brief toggle show connections
377
long onCmdToggleShowConnections(FXObject*, FXSelector, void*);
378
379
/// @brief toggle hide connections
380
long onCmdToggleHideConnections(FXObject*, FXSelector, void*);
381
382
/// @brief toggle show additional sub-elements
383
long onCmdToggleShowAdditionalSubElements(FXObject*, FXSelector, void*);
384
385
/// @brief toggle show TAZ elements
386
long onCmdToggleShowTAZElements(FXObject*, FXSelector, void*);
387
388
/// @brief toggle extend selection
389
long onCmdToggleExtendSelection(FXObject*, FXSelector, void*);
390
391
/// @brief toggle change all phases
392
long onCmdToggleChangeAllPhases(FXObject*, FXSelector, void*);
393
394
/// @brief toggle show grid
395
long onCmdToggleShowGrid(FXObject*, FXSelector, void*);
396
397
/// @brief toggle draw junction shape
398
long onCmdToggleDrawJunctionShape(FXObject*, FXSelector, void*);
399
400
/// @brief toggle draw vehicles in begin position or spread in lane
401
long onCmdToggleDrawSpreadVehicles(FXObject*, FXSelector, void*);
402
403
/// @brief toggle warn for merge
404
long onCmdToggleMergeAutomatically(FXObject*, FXSelector, void*);
405
406
/// @brief toggle show junction bubbles
407
long onCmdToggleShowJunctionBubbles(FXObject*, FXSelector, void*);
408
409
/// @brief toggle move elevation
410
long onCmdToggleMoveElevation(FXObject*, FXSelector, void*);
411
412
/// @brief toggle chain edges
413
long onCmdToggleChainEdges(FXObject*, FXSelector, void*);
414
415
/// @brief toggle autoOpposite edge
416
long onCmdToggleAutoOppositeEdge(FXObject*, FXSelector, void*);
417
418
/// @brief toggle hide non inspected demand elements
419
long onCmdToggleHideNonInspecteDemandElements(FXObject*, FXSelector, void*);
420
421
/// @brief toggle hide non inspected demand elements
422
long onCmdToggleShowOverlappedRoutes(FXObject*, FXSelector, void*);
423
424
/// @brief toggle hide shapes in super mode demand
425
long onCmdToggleHideShapes(FXObject*, FXSelector, void*);
426
427
/// @brief toggle show all trips in super mode demand
428
long onCmdToggleShowTrips(FXObject*, FXSelector, void*);
429
430
/// @brief toggle show all person plans in super mode demand
431
long onCmdToggleShowAllPersonPlans(FXObject*, FXSelector, void*);
432
433
/// @brief toggle lock person in super mode demand
434
long onCmdToggleLockPerson(FXObject*, FXSelector, void*);
435
436
/// @brief toggle show all container plans in super mode demand
437
long onCmdToggleShowAllContainerPlans(FXObject*, FXSelector, void*);
438
439
/// @brief toggle lock container in super mode demand
440
long onCmdToggleLockContainer(FXObject*, FXSelector, void*);
441
442
/// @brief toggle show additionals in super mode data
443
long onCmdToggleShowAdditionals(FXObject*, FXSelector, void*);
444
445
/// @brief toggle show shapes in super mode data
446
long onCmdToggleShowShapes(FXObject*, FXSelector, void*);
447
448
/// @brief toggle show demand elements (network)
449
long onCmdToggleShowDemandElementsNetwork(FXObject*, FXSelector, void*);
450
451
/// @brief toggle show demand elements (data)
452
long onCmdToggleShowDemandElementsData(FXObject*, FXSelector, void*);
453
454
/// @brief toggle TAZRel drawing
455
long onCmdToggleTAZRelDrawing(FXObject*, FXSelector, void*);
456
457
/// @brief toggle TAZdrawFill
458
long onCmdToggleTAZDrawFill(FXObject*, FXSelector, void*);
459
460
/// @brief toggle TAZRez only from
461
long onCmdToggleTAZRelOnlyFrom(FXObject*, FXSelector, void*);
462
463
/// @brief toggle TAZRez only to
464
long onCmdToggleTAZRelOnlyTo(FXObject*, FXSelector, void*);
465
466
/// @}
467
468
//// @name interval bar functions
469
/// @{
470
471
/// @brief change generic data type in interval bar
472
long onCmdIntervalBarGenericDataType(FXObject*, FXSelector, void*);
473
474
/// @brief change data set in interval bar
475
long onCmdIntervalBarDataSet(FXObject*, FXSelector, void*);
476
477
/// @brief change limit interval in interval bar
478
long onCmdIntervalBarLimit(FXObject*, FXSelector, void*);
479
480
/// @brief change begin in interval bar
481
long onCmdIntervalBarSetBegin(FXObject*, FXSelector, void*);
482
483
/// @brief change end in interval bar
484
long onCmdIntervalBarSetEnd(FXObject*, FXSelector, void*);
485
486
/// @brief change parameter in interval bar
487
long onCmdIntervalBarSetParameter(FXObject*, FXSelector, void*);
488
489
/// @}
490
491
/// @brief select AC under cursor
492
long onCmdAddSelected(FXObject*, FXSelector, void*);
493
494
/// @brief unselect AC under cursor
495
long onCmdRemoveSelected(FXObject*, FXSelector, void*);
496
497
/// @brief select Edge under cursor
498
long onCmdAddEdgeSelected(FXObject*, FXSelector, void*);
499
500
/// @brief unselect Edge under cursor
501
long onCmdRemoveEdgeSelected(FXObject*, FXSelector, void*);
502
503
/// @brief called when a new view is set
504
long onCmdSetNeteditView(FXObject*, FXSelector sel, void*);
505
506
/// @brief abort current edition operation
507
void abortOperation(bool clearSelection = true);
508
509
/// @brief handle del keypress
510
void hotkeyDel();
511
512
/// @brief handle enter keypress
513
void hotkeyEnter();
514
515
/// @brief handle backspace keypress
516
void hotkeyBackSpace();
517
518
/// @brief handle focus frame keypress
519
void hotkeyFocusFrame();
520
521
/// @brief get the net object
522
GNEViewParent* getViewParent() const;
523
524
/// @brief get the net object
525
GNENet* getNet() const;
526
527
/// @brief get the undoList object
528
GNEUndoList* getUndoList() const;
529
530
/// @brief get interval bar
531
GNEViewNetHelper::IntervalBar& getIntervalBar();
532
533
/// @brief get lock manager
534
GNEViewNetHelper::LockManager& getLockManager();
535
536
/// @brief get inspected elements
537
GNEViewNetHelper::InspectedElements& getInspectedElements();
538
539
/// @brief get marked for drawing front elements
540
GNEViewNetHelper::MarkFrontElements& getMarkFrontElements();
541
542
/// @brief check if an element is being moved
543
bool isCurrentlyMovingElements() const;
544
545
/// @brief check if given element is locked (used for drawing select and delete contour)
546
bool checkOverLockedElement(const GUIGlObject* GLObject, const bool isSelected) const;
547
548
/// @brief get last created route
549
GNEDemandElement* getLastCreatedRoute() const;
550
551
/// @brief set last created route
552
void setLastCreatedRoute(GNEDemandElement* lastCreatedRoute);
553
554
/// @brief set statusBar text
555
void setStatusBarText(const std::string& text);
556
557
/// @brief whether to autoselect nodes or to lanes
558
bool autoSelectNodes();
559
560
/// @brief set selection scaling (in GNESelectorFrame)
561
void setSelectorFrameScale(double selectionScale);
562
563
/// @brief update control contents after undo/redo or recompute
564
void updateControls();
565
566
/// @brief change all phases
567
bool changeAllPhases() const;
568
569
/// @brief return true if junction must be showed as bubbles
570
bool showJunctionAsBubbles() const;
571
572
/// @brief ask merge junctions
573
bool askMergeJunctions(const GNEJunction* movedJunction, const GNEJunction* targetJunction, bool& alreadyAsked);
574
575
/// @brief ask about change supermode
576
bool aksChangeSupermode(const std::string& operation, Supermode expectedSupermode);
577
578
/// @brief check if we're selecting detectors in TLS mode
579
bool selectingDetectorsTLSMode() const;
580
581
/// @brief check if we're selecting junctions in TLS mode
582
bool selectingJunctionsTLSMode() const;
583
584
/// @brief get variable used to save elements
585
GNEViewNetHelper::SaveElements& getSaveElements();
586
587
/// @brief get variable used to switch between time formats
588
GNEViewNetHelper::TimeFormat& getTimeFormat();
589
590
/// @brief restrict lane
591
bool restrictLane(GNELane* lane, SUMOVehicleClass vclass);
592
593
/// @brief add restricted lane
594
bool addRestrictedLane(GNELane* lane, SUMOVehicleClass vclass, const bool insertAtFront);
595
596
/// @brief remove restricted lane
597
bool removeRestrictedLane(GNELane* lane, SUMOVehicleClass vclass);
598
599
protected:
600
/// @brief FOX needs this
601
GNEViewNet();
602
603
/// @brief do paintGL
604
int doPaintGL(int mode, const Boundary& drawingBoundary);
605
606
/// @brief called after some features are already initialized
607
void doInit();
608
609
/// @brief returns the id of object under cursor to show their tooltip
610
GUIGlID getToolTipID();
611
612
private:
613
/// @brief variable use to select objects in view
614
GNEViewNetHelper::ViewObjectsSelector myViewObjectsSelector;
615
616
/// @name structs related with modes and testing mode
617
/// @{
618
619
/// @brief variable used to save variables related with edit moves modes
620
GNEViewNetHelper::EditModes myEditModes;
621
622
/// @brief variable used to save variables related with testing mode
623
GNEViewNetHelper::TestingMode myTestingMode;
624
625
/// @}
626
627
/// @name structs related with input (keyboard and mouse)
628
/// @{
629
630
/// @brief variable used to save key status after certain events
631
GNEViewNetHelper::MouseButtonKeyPressed myMouseButtonKeyPressed;
632
633
/// @}
634
635
/// @name structs related with checkable buttons
636
/// @{
637
638
/// @brief variable used to save checkable buttons for common supermodes
639
GNEViewNetHelper::CommonCheckableButtons myCommonCheckableButtons;
640
641
/// @brief variable used to save checkable buttons for Supermode Network
642
GNEViewNetHelper::NetworkCheckableButtons myNetworkCheckableButtons;
643
644
/// @brief variable used to save checkable buttons for Supermode Demand
645
GNEViewNetHelper::DemandCheckableButtons myDemandCheckableButtons;
646
647
/// @brief variable used to save checkable buttons for Supermode Data
648
GNEViewNetHelper::DataCheckableButtons myDataCheckableButtons;
649
650
/// @}
651
652
/// @name structs related with view options
653
/// @{
654
655
/// @brief variable used to save variables related with view options in supermode Network
656
GNEViewNetHelper::NetworkViewOptions myNetworkViewOptions;
657
658
/// @brief variable used to save variables related with view options in supermode Demand
659
GNEViewNetHelper::DemandViewOptions myDemandViewOptions;
660
661
/// @brief variable used to save variables related with view options in supermode Data
662
GNEViewNetHelper::DataViewOptions myDataViewOptions;
663
664
/// @}
665
666
/// @brief variable used to save IntervalBar
667
GNEViewNetHelper::IntervalBar myIntervalBar;
668
669
/// @name structs related with move elements
670
/// @{
671
672
/// @brief modul used for moving single element
673
GNEViewNetHelper::MoveSingleElementModul myMoveSingleElement;
674
675
/// @brief modul used for moving multiple elements
676
GNEViewNetHelper::MoveMultipleElementModul myMoveMultipleElements;
677
678
// @}
679
680
/// @name structs related with Demand options
681
/// @{
682
683
/// @brief variable used to save variables related with vehicle options
684
GNEViewNetHelper::VehicleOptions myVehicleOptions;
685
686
/// @brief variable used to save variables related with vehicle type options
687
GNEViewNetHelper::VehicleTypeOptions myVehicleTypeOptions;
688
689
// @}
690
691
/// @brief variable used for grouping all variables related with salve elements
692
GNEViewNetHelper::SaveElements mySaveElements;
693
694
/// @brief variable used for grouping all variables related with switch time
695
GNEViewNetHelper::TimeFormat myTimeFormat;
696
697
/// @brief variable used for grouping all variables related with selecting areas
698
GNEViewNetHelper::SelectingArea mySelectingArea;
699
700
/// @brief struct for grouping all variables related with edit shapes
701
GNEViewNetHelper::EditNetworkElementShapes myEditNetworkElementShapes;
702
703
/// @brief lock manager
704
GNEViewNetHelper::LockManager myLockManager;
705
706
/// @brief inspected element
707
GNEViewNetHelper::InspectedElements myInspectedElements;
708
709
/// @brief front element
710
GNEViewNetHelper::MarkFrontElements myMarkFrontElements;
711
712
/// @brief view parent
713
GNEViewParent* myViewParent = nullptr;
714
715
/// @brief Pointer to current net. (We are not responsible for deletion)
716
GNENet* myNet = nullptr;
717
718
/// @brief the current frame
719
GNEFrame* myCurrentFrame = nullptr;
720
721
/// @brief a reference to the undolist maintained in the application
722
GNEUndoList* myUndoList = nullptr;
723
724
/// @brief last created route
725
GNEDemandElement* myLastCreatedRoute = nullptr;
726
727
/// @brief draw preview roundabout
728
bool myDrawPreviewRoundabout = false;
729
730
/// @brief flag for mark if during this frame a popup was created (needed to avoid problems in linux with CursorDialogs)
731
bool myCreatedPopup = false;
732
733
/// @brief drawin toggle (used in drawGLElements to avoid draw elements twice)
734
int myDrawingToggle = 0;
735
736
/// @brief create edit mode buttons and elements
737
void buildEditModeControls();
738
739
/// @brief updates Network mode specific controls
740
void updateNetworkModeSpecificControls();
741
742
/// @brief updates Demand mode specific controls
743
void updateDemandModeSpecificControls();
744
745
/// @brief updates Data mode specific controls
746
void updateDataModeSpecificControls();
747
748
/// @brief delete given network attribute carriers
749
void deleteNetworkAttributeCarrier(const GNEAttributeCarrier* AC);
750
751
/// @brief delete given demand attribute carriers
752
void deleteDemandAttributeCarrier(const GNEAttributeCarrier* AC);
753
754
/// @brief delete data attribute carriers
755
void deleteDataAttributeCarrier(const GNEAttributeCarrier* AC);
756
757
/// @brief try to retrieve an edge at popup position
758
GNEEdge* getEdgeAtPopupPosition();
759
760
/// @brief try to retrieve a lane at popup position
761
GNELane* getLaneAtPopupPosition();
762
763
/// @brief try to retrieve a junction at popup position
764
GNEJunction* getJunctionAtPopupPosition();
765
766
/// @brief try to retrieve a connection at popup position
767
GNEConnection* getConnectionAtPopupPosition();
768
769
/// @brief try to retrieve a crossing at popup position
770
GNECrossing* getCrossingAtPopupPosition();
771
772
/// @brief try to retrieve a walkingArea at popup position
773
GNEWalkingArea* getWalkingAreaAtPopupPosition();
774
775
/// @brief try to retrieve a additional at popup position
776
GNEAdditional* getAdditionalAtPopupPosition();
777
778
/// @brief try to retrieve a demand element at popup position
779
GNEDemandElement* getDemandElementAtPopupPosition();
780
781
/// @brief try to retrieve a polygon at popup position
782
GNEPoly* getPolygonAtPopupPosition();
783
784
/// @brief try to retrieve a POILane at popup position
785
GNEPOI* getPOIAtPopupPosition();
786
787
/// @brief try to retrieve a TAZ at popup position
788
GNETAZ* getTAZAtPopupPosition();
789
790
/// @brief try to retreive a edited shape at popup position
791
GNENetworkElement* getShapeEditedAtPopupPosition();
792
793
/// @brief Auxiliary function used by onLeftBtnPress(...)
794
void processClick(void* eventData);
795
796
/// @brief update cursor after every click/key press/release
797
void updateCursor();
798
799
/// @brief draw functions
800
/// @{
801
802
/// @brief draw all gl elements of netedit
803
int drawGLElements(const Boundary& bound);
804
805
/// @brief draw grid and update grid button
806
void drawGrid() const;
807
808
/// @brief draw temporal polygon shape in Polygon Mode
809
void drawTemporalDrawingShape() const;
810
811
/// @brief draw temporal junction in create edge mode
812
void drawTemporalJunction() const;
813
814
/// @brief draw temporal split junction in create edge mode
815
void drawTemporalSplitJunction() const;
816
817
/// @brief draw temporal roundabout
818
void drawTemporalRoundabout() const;
819
820
/// @brief draw temporal E1 TLS Lines
821
void drawTemporalE1TLSLines() const;
822
823
/// @brief draw temporal Junction TLS Lines
824
void drawTemporalJunctionTLSLines() const;
825
826
/// @brief draw circle in testing mode (needed for grid)
827
void drawNeteditAttributesReferences();
828
829
/// @brief draw circle in testing mode (needed for grid)
830
void drawTestsCircle() const;
831
832
/// @}
833
834
/// @brief mouse process functions
835
/// @{
836
837
/// @brief process left button press function in Supermode Network
838
void processLeftButtonPressNetwork(void* eventData);
839
840
/// @brief process left button release function in Supermode Network
841
void processLeftButtonReleaseNetwork();
842
843
/// @brief process move mouse function in Supermode Network
844
void processMoveMouseNetwork(const bool mouseLeftButtonPressed);
845
846
/// @brief process left button press function in Supermode Demand
847
void processLeftButtonPressDemand(void* eventData);
848
849
/// @brief process left button release function in Supermode Demand
850
void processLeftButtonReleaseDemand();
851
852
/// @brief process move mouse function in Supermode Demand
853
void processMoveMouseDemand(const bool mouseLeftButtonPressed);
854
855
/// @brief process left button press function in Supermode Data
856
void processLeftButtonPressData(void* eventData);
857
858
/// @brief process left button release function in Supermode Data
859
void processLeftButtonReleaseData();
860
861
/// @brief process move mouse function in Supermode Data
862
void processMoveMouseData(const bool mouseLeftButtonPressed);
863
864
/// @brief Invalidated copy constructor.
865
GNEViewNet(const GNEViewNet&) = delete;
866
867
/// @brief Invalidated assignment operator.
868
GNEViewNet& operator=(const GNEViewNet&) = delete;
869
};
870
871