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