SUMO - Simulation of Urban MObility
GNEViewNet.h
Go to the documentation of this file.
1 /****************************************************************************/
7 // A view on the network being edited (adapted from GUIViewTraffic)
8 /****************************************************************************/
9 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
10 // Copyright (C) 2001-2017 DLR (http://www.dlr.de/) and contributors
11 /****************************************************************************/
12 //
13 // This file is part of SUMO.
14 // SUMO is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation, either version 3 of the License, or
17 // (at your option) any later version.
18 //
19 /****************************************************************************/
20 #ifndef GNEViewNet_h
21 #define GNEViewNet_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <string>
35 #include <utils/geom/Boundary.h>
36 #include <utils/geom/Position.h>
37 #include <utils/common/RGBColor.h>
39 #include <utils/shapes/Polygon.h>
43 
44 // ===========================================================================
45 // enum
46 // ===========================================================================
47 enum EditMode {
68 };
69 
70 // ===========================================================================
71 // class declarations
72 // ===========================================================================
73 class GNENet;
74 class GNEJunction;
75 class GNEEdge;
76 class GNELane;
77 class GNEViewParent;
78 class GNEUndoList;
79 class GNEAdditional;
80 class GNEPoly;
81 class GNEPOI;
82 class GNEFrame;
83 
84 // ===========================================================================
85 // class definitions
86 // ===========================================================================
93  FXDECLARE(GNEViewNet)
94 
95 public:
96  /* @brief constructor
97  * @param[in] tmpParent temporal FXFrame parent so that we can add items to view area in the desired order
98  * @param[in] actualParent FXFrame parent of GNEViewNet
99  * @param[in] app main windows
100  * @param[in] viewParent viewParent of this viewNet
101  * @param[in] net traffic net
102  * @param[in] undoList pointer to UndoList modul
103  * @param[in] glVis a reference to GLVisuals
104  * @param[in] share a reference to FXCanvas
105  * @param[in] toolbar A reference to the parents toolbar
106  */
107  GNEViewNet(FXComposite* tmpParent, FXComposite* actualParent, GUIMainWindow& app,
108  GNEViewParent* viewParent, GNENet* net, GNEUndoList* undoList,
109  FXGLVisual* glVis, FXGLCanvas* share, FXToolBar* toolBar);
110 
112  virtual ~GNEViewNet();
113 
115  virtual void buildViewToolBars(GUIGlChildWindow&);
116 
118  bool setColorScheme(const std::string& name);
119 
122 
124  long onLeftBtnPress(FXObject*, FXSelector, void*);
125 
127  long onLeftBtnRelease(FXObject*, FXSelector, void*);
128 
130  long onDoubleClicked(FXObject*, FXSelector, void*);
131 
133  long onMouseMove(FXObject*, FXSelector, void*);
135 
138 
140  long onCmdSetModeCreateEdge(FXObject*, FXSelector, void*);
141 
143  long onCmdSetModeMove(FXObject*, FXSelector, void*);
144 
146  long onCmdSetModeDelete(FXObject*, FXSelector, void*);
147 
149  long onCmdSetModeInspect(FXObject*, FXSelector, void*);
150 
152  long onCmdSetModeSelect(FXObject*, FXSelector, void*);
153 
155  long onCmdSetModeConnect(FXObject*, FXSelector, void*);
156 
158  long onCmdSetModeTLS(FXObject*, FXSelector, void*);
159 
161  long onCmdSetModeAdditional(FXObject*, FXSelector, void*);
162 
164  long onCmdSetModeCrossing(FXObject*, FXSelector, void*);
165 
167 
169  long onCmdSplitEdge(FXObject*, FXSelector, void*);
170 
172  long onCmdSplitEdgeBidi(FXObject*, FXSelector, void*);
173 
175  long onCmdReverseEdge(FXObject*, FXSelector, void*);
176 
178  long onCmdAddReversedEdge(FXObject*, FXSelector, void*);
179 
181  long onCmdSetEdgeEndpoint(FXObject*, FXSelector, void*);
182 
184  long onCmdResetEdgeEndpoint(FXObject*, FXSelector, void*);
185 
187  long onCmdStraightenEdges(FXObject*, FXSelector, void*);
188 
190  long onCmdSimplifyShape(FXObject*, FXSelector, void*);
191 
193  long onCmdDeleteGeometry(FXObject*, FXSelector, void*);
194 
196  long onCmdDuplicateLane(FXObject*, FXSelector, void*);
197 
199  long onCmdRestrictLaneSidewalk(FXObject*, FXSelector typeOfTransformation, void*);
200 
202  long onCmdRestrictLaneBikelane(FXObject*, FXSelector typeOfTransformation, void*);
203 
205  long onCmdRestrictLaneBuslane(FXObject*, FXSelector typeOfTransformation, void*);
206 
208  long onCmdRevertRestriction(FXObject*, FXSelector, void*);
209 
211  long onCmdAddRestrictedLaneSidewalk(FXObject*, FXSelector typeOfTransformation, void*);
212 
214  long onCmdAddRestrictedLaneBikelane(FXObject*, FXSelector typeOfTransformation, void*);
215 
217  long onCmdAddRestrictedLaneBuslane(FXObject*, FXSelector typeOfTransformation, void*);
218 
220  long onCmdRemoveRestrictedLaneSidewalk(FXObject*, FXSelector typeOfTransformation, void*);
221 
223  long onCmdRemoveRestrictedLaneBikelane(FXObject*, FXSelector typeOfTransformation, void*);
224 
226  long onCmdRemoveRestrictedLaneBuslane(FXObject*, FXSelector typeOfTransformation, void*);
227 
229  long onCmdNodeShape(FXObject*, FXSelector, void*);
230 
232  long onCmdNodeReplace(FXObject*, FXSelector, void*);
233 
235  long onCmdToogleShowConnection(FXObject*, FXSelector, void*);
236 
238  long onCmdToogleSelectEdges(FXObject*, FXSelector, void*);
239 
241  long onCmdToogleShowBubbles(FXObject*, FXSelector, void*);
242 
244  long onCmdShowGrid(FXObject*, FXSelector, void*);
245 
249  void setEditModeFromHotkey(FXushort selid);
250 
252  void abortOperation(bool clearSelection = true);
253 
255  void hotkeyDel();
256 
258  void hotkeyEnter();
259 
261  void hotkeyFocusFrame();
262 
264  void markPopupPosition();
265 
267  GNEViewParent* getViewParent() const;
268 
270  GNENet* getNet() const;
271 
273  GNEUndoList* getUndoList() const;
274 
277 
279  bool showLockIcon() const;
280 
282  void setStatusBarText(const std::string& text);
283 
285  bool selectEdges();
286 
288  bool showConnections();
289 
291  bool autoSelectNodes();
292 
294  void setSelectionScaling(double selectionScale);
295 
297  void updateControls();
298 
300  bool changeAllPhases() const;
301 
303  bool showJunctionAsBubbles() const;
304 
306  bool isTestingModeEnabled() const;
307 
308 protected:
311 
313  int doPaintGL(int mode, const Boundary& bound);
314 
316  void doInit();
317 
318 private:
321 
324 
327 
330 
333 
336 
339 
342 
345 
347  FXMenuCheck* myMenuCheckShowGrid;
348 
351 
354 
356  // @{
359 
361  FXMenuCheck* myChainCreateEdge;
363  // @}
364 
366  // @{
367 
370 
373 
376 
379 
382 
385 
388 
391 
394 
397 
400  // @}
401 
403  // @{
406 
409 
412  // @}
413 
415  FXToolBar* myToolbar;
416 
421 
424 
427 
430 
433 
436 
439 
442 
446 
451 
455 
458 
461 
464 
469 
472 
476 
478  void setEditMode(EditMode mode);
479 
481  void buildEditModeControls();
482 
485 
488 
490  void deleteSelectedEdges();
491 
494 
496  bool mergeJunctions(GNEJunction* moved);
497 
500 
503 
506 
508  std::set<GNEEdge*> getEdgesAtCursorPosition(Position& pos);
509 
511  void removeCurrentPoly();
512 
514  bool restrictLane(SUMOVehicleClass vclass);
515 
517  bool addRestrictedLane(SUMOVehicleClass vclass);
518 
521 
523  void processClick(FXEvent* e, void* data);
524 
526  GNEViewNet(const GNEViewNet&);
527 
530 };
531 
532 
533 #endif
534 
535 /****************************************************************************/
536 
long onCmdAddRestrictedLaneSidewalk(FXObject *, FXSelector typeOfTransformation, void *)
Add restricted lane for pedestrians.
long onCmdResetEdgeEndpoint(FXObject *, FXSelector, void *)
restore geometry endpoint to node position
long onCmdDeleteGeometry(FXObject *, FXSelector, void *)
delete the closes geometry point
GNEViewParent * myViewParent
view parent
Definition: GNEViewNet.h:320
long onCmdRestrictLaneBikelane(FXObject *, FXSelector typeOfTransformation, void *)
restrict lane to bikes
bool selectEdges()
whether inspection, selection and inversion should apply to edges or to lanes
Definition: GNEViewNet.cpp:363
GNEJunction * getJunctionAtCursorPosition(Position &pos)
try to retrieve a junction at the given position
Position myPopupSpot
Poput spot.
Definition: GNEViewNet.h:460
void abortOperation(bool clearSelection=true)
abort current edition operation
Definition: GNEViewNet.cpp:955
void deleteSelectedJunctions()
delete all currently selected junctions
bool setColorScheme(const std::string &name)
set color schieme
Definition: GNEViewNet.cpp:341
long onCmdSetModeAdditional(FXObject *, FXSelector, void *)
called when user press the button for additional mode
mode for moving things
Definition: GNEViewNet.h:53
bool restrictLane(SUMOVehicleClass vclass)
restrict lane
void markPopupPosition()
store the position where a popup-menu was requested
long onCmdDuplicateLane(FXObject *, FXSelector, void *)
duplicate selected lane
bool myShowConnections
whether show connections has been activated once
Definition: GNEViewNet.h:350
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
StringBijection< EditMode > myEditModeNames
since we cannot switch on strings we map the mode names to an enum
Definition: GNEViewNet.h:450
long onMouseMove(FXObject *, FXSelector, void *)
called when user moves mouse
Definition: GNEViewNet.cpp:893
GNEViewNet()
FOX needs this.
Definition: GNEViewNet.h:310
bool mySelectEdges
flag to check if select edges is enabled
Definition: GNEViewNet.h:353
long onCmdSetModeSelect(FXObject *, FXSelector, void *)
called when user press the button for select mode
int myTestingHeight
Height of viewNet in testing mode.
Definition: GNEViewNet.h:474
void hotkeyFocusFrame()
handle focus frame keypress
FXMenuCheck * myMenuCheckShowGrid
show grid button
Definition: GNEViewNet.h:347
FXMenuCheck * myChainCreateEdge
whether the endpoint for a created edge should be set as the new source
Definition: GNEViewNet.h:361
mode for deleting things
Definition: GNEViewNet.h:55
Definition: GNEPOI.h:51
long onCmdSplitEdge(FXObject *, FXSelector, void *)
split edge at cursor position
long onCmdToogleSelectEdges(FXObject *, FXSelector, void *)
toogle selet edges
GNEViewParent * getViewParent() const
get the net object
void setEditMode(EditMode mode)
set edit mode
MFXCheckableButton * myEditModeSelect
chekable button for edit mode select
Definition: GNEViewNet.h:432
Position mySelCorner2
second corner of the rectangle-selection
Definition: GNEViewNet.h:411
mode for editing tls
Definition: GNEViewNet.h:63
long onCmdNodeShape(FXObject *, FXSelector, void *)
input custom node shape
MFXCheckableButton * myEditModeMove
chekable button for edit mode move
Definition: GNEViewNet.h:423
MFXCheckableButton * myEditModeDelete
chekable button for edit mode delete
Definition: GNEViewNet.h:426
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:88
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:54
GNEPOI * myPoiToMove
the poi which is being moved
Definition: GNEViewNet.h:384
void setEditModeFromHotkey(FXushort selid)
sets edit mode (from hotkey)
long onCmdSetEdgeEndpoint(FXObject *, FXSelector, void *)
set non-default geometry endpoint
void updateControls()
update control contents after undo/redo or recompute
EditMode myPreviousEditMode
the previous edit mode used for toggling
Definition: GNEViewNet.h:329
GNEViewNet & operator=(const GNEViewNet &)
Invalidated assignment operator.
FXMenuCheck * myMenuCheckChangeAllPhases
menu check to set change all phases
Definition: GNEViewNet.h:344
GNEEdge * myEdgeToMove
the edge of which geometry is being moved
Definition: GNEViewNet.h:378
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:48
A single child window which contains a view of the simulation area.
Definition: GNEViewParent.h:72
bool isTestingModeEnabled() const
check if netedit is running in testing mode
Definition: GNEViewNet.cpp:405
bool changeAllPhases() const
change all phases
Definition: GNEViewNet.cpp:393
bool myMoveSelection
whether a selection is being moved
Definition: GNEViewNet.h:399
long onCmdSetModeCrossing(FXObject *, FXSelector, void *)
called when user press the button for crossing mode
Position myOldAdditionalPosition
variable for saving additional position before moving
Definition: GNEViewNet.h:393
void buildEditModeControls()
adds controls for setting the edit mode
std::set< GNEEdge * > getEdgesAtCursorPosition(Position &pos)
try to retrieve multiple edges at the given position
GNEUndoList * getUndoList() const
get the undoList object
long onLeftBtnPress(FXObject *, FXSelector, void *)
called when user press mouse&#39;s left button
Definition: GNEViewNet.cpp:496
long onCmdSimplifyShape(FXObject *, FXSelector, void *)
simply shape of current polygon
bool showLockIcon() const
check if lock icon should be visible
GNEPoly * myCurrentPoly
current polygon
Definition: GNEViewNet.h:463
long onCmdRemoveRestrictedLaneBuslane(FXObject *, FXSelector typeOfTransformation, void *)
remove restricted lane for bus
mode for inspecting object attributes
Definition: GNEViewNet.h:57
FXMenuCheck * myMenuCheckShowConnections
menu check to show connections
Definition: GNEViewNet.h:338
GNEAdditional * myAdditionalToMove
the stoppingPlace element which shape is being moved
Definition: GNEViewNet.h:387
virtual ~GNEViewNet()
destructor
Definition: GNEViewNet.cpp:287
long onCmdSetModeMove(FXObject *, FXSelector, void *)
called when user press the button for move mode
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
FXMenuCheck * myMenuCheckSelectEdges
menu check to select only edges
Definition: GNEViewNet.h:335
FXToolBar * myToolbar
a reference to the toolbar in myParent
Definition: GNEViewNet.h:415
long onCmdToogleShowConnection(FXObject *, FXSelector, void *)
toogle show connections
MFXCheckableButton * myEditModeCreateEdge
Definition: GNEViewNet.h:420
bool showJunctionAsBubbles() const
return true if junction must be showed as bubbles
Definition: GNEViewNet.cpp:399
long onCmdRevertRestriction(FXObject *, FXSelector, void *)
revert transformation
bool removeRestrictedLane(SUMOVehicleClass vclass)
remove restricted lane
long onCmdSplitEdgeBidi(FXObject *, FXSelector, void *)
split edge at cursor position
bool autoSelectNodes()
whether to autoselect nodes or to lanes
Definition: GNEViewNet.cpp:381
MFXCheckableButton * myEditModeTrafficLight
chekable button for edit mode traffic light
Definition: GNEViewNet.h:438
long onCmdRemoveRestrictedLaneBikelane(FXObject *, FXSelector typeOfTransformation, void *)
remove restricted lane for bikes
mode for selecting objects
Definition: GNEViewNet.h:59
void removeCurrentPoly()
remove the currently edited polygon
GNEJunction * myJunctionToMove
the Junction to be moved.
Definition: GNEViewNet.h:375
MFXCheckableButton * myEditModeAdditional
chekable button for edit mode additional
Definition: GNEViewNet.h:441
GNELane * getLaneAtCurserPosition(Position &pos)
try to retrieve a lane at the given position
int myTestingWidth
Width of viewNet in testing mode.
Definition: GNEViewNet.h:471
Position mySelCorner1
firstcorner of the rectangle-selection
Definition: GNEViewNet.h:408
Position myAdditionalMovingReference
variable for calculating moving offset of additionals
Definition: GNEViewNet.h:390
long onCmdRestrictLaneBuslane(FXObject *, FXSelector typeOfTransformation, void *)
restrict lane to buslanes
EditMode
Definition: GNEViewNet.h:47
void doInit()
called after some features are already initialized
Definition: GNEViewNet.cpp:291
placeholder mode
Definition: GNEViewNet.h:49
FXMenuCheck * myAutoCreateOppositeEdge
Definition: GNEViewNet.h:362
void setSelectionScaling(double selectionScale)
set selection scaling
Definition: GNEViewNet.cpp:387
EditMode getCurrentEditMode() const
get the current edit mode
bool mergeJunctions(GNEJunction *moved)
try to merge moved junction with another junction in that spot return true if merging did take place ...
MFXCheckableButton * myEditModeInspect
chekable button for edit mode inspect
Definition: GNEViewNet.h:429
FXMenuCheck * myMenuCheckExtendToEdgeNodes
menu check to extend to edge nodes
Definition: GNEViewNet.h:341
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:57
FXMenuCheck * myMenuCheckWarnAboutMerge
whether we should warn about merging junctions
Definition: GNEViewNet.h:369
Position myMoveSrc
position from which to move edge geometry
Definition: GNEViewNet.h:396
long onCmdAddRestrictedLaneBikelane(FXObject *, FXSelector typeOfTransformation, void *)
Add restricted lane for bikes.
FXMenuCheck * myMenuCheckShowBubbleOverJunction
show connection as buuble in "Move" mode.
Definition: GNEViewNet.h:372
An Element which don&#39;t belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:62
MFXCheckableButton * myEditModeConnection
chekable button for edit mode connection
Definition: GNEViewNet.h:435
bool showConnections()
show connections over junctions
Definition: GNEViewNet.cpp:369
long onCmdReverseEdge(FXObject *, FXSelector, void *)
reverse edge
long onCmdSetModeTLS(FXObject *, FXSelector, void *)
called when user press the button for traffic lights mode
int doPaintGL(int mode, const Boundary &bound)
do paintGL
Definition: GNEViewNet.cpp:410
GNEJunction * myCreateEdgeSource
source junction for new edge 0 if no edge source is selected an existing (or newly created) junction ...
Definition: GNEViewNet.h:358
long onCmdAddRestrictedLaneBuslane(FXObject *, FXSelector typeOfTransformation, void *)
Add restricted lane for buses.
long onCmdRemoveRestrictedLaneSidewalk(FXObject *, FXSelector typeOfTransformation, void *)
remove restricted lane for pedestrians
void deleteSelectedAdditionals()
delete all currently selected additionals
GNENet * getNet() const
get the net object
long onCmdRestrictLaneSidewalk(FXObject *, FXSelector typeOfTransformation, void *)
restrict lane to pedestrians
void updateModeSpecificControls()
updates mode specific controls
MFXCheckableButton * myEditModeCrossing
chekable button for edit mode crossing
Definition: GNEViewNet.h:444
void setStatusBarText(const std::string &text)
set staturBar text
Definition: GNEViewNet.cpp:357
long onCmdSetModeConnect(FXObject *, FXSelector, void *)
called when user press the button for connect mode
Mode for editing additionals.
Definition: GNEViewNet.h:65
StringBijection< EditMode > myEditAdditionalModeNames
stringBijection for edit additional mode names
Definition: GNEViewNet.h:453
virtual void buildViewToolBars(GUIGlChildWindow &)
builds the view toolbars
Definition: GNEViewNet.cpp:295
Mode for editing crossing.
Definition: GNEViewNet.h:67
long onCmdStraightenEdges(FXObject *, FXSelector, void *)
makes selected edges straight
long onCmdSetModeInspect(FXObject *, FXSelector, void *)
called when user press the button for inspect mode
mode for connecting lanes
Definition: GNEViewNet.h:61
mode for creating new edges
Definition: GNEViewNet.h:51
long onDoubleClicked(FXObject *, FXSelector, void *)
called when user press mouse&#39;s left button two times
Definition: GNEViewNet.cpp:870
long onCmdToogleShowBubbles(FXObject *, FXSelector, void *)
toogle show bubbles
GNEEdge * getEdgeAtCursorPosition(Position &pos)
try to retrieve an edge at the given position
long onCmdNodeReplace(FXObject *, FXSelector, void *)
replace node by geometry
void hotkeyDel()
handle del keypress
Definition: GNEViewNet.cpp:979
long onCmdAddReversedEdge(FXObject *, FXSelector, void *)
add reversed edge
bool myAmInRectSelect
whether we have started rectangle-selection
Definition: GNEViewNet.h:405
GNENet * myNet
we are not responsible for deletion
Definition: GNEViewNet.h:323
void hotkeyEnter()
handle enter keypress
Definition: GNEViewNet.cpp:994
long onLeftBtnRelease(FXObject *, FXSelector, void *)
called when user releases mouse&#39;s left button
Definition: GNEViewNet.cpp:822
long onCmdShowGrid(FXObject *, FXSelector, void *)
toogle show grid
void processClick(FXEvent *e, void *data)
Auxiliar function used by onLeftBtnPress(...)
long onCmdSetModeCreateEdge(FXObject *, FXSelector, void *)
called when user press the button for create edge mode
long onCmdSetModeDelete(FXObject *, FXSelector, void *)
called when user press the button for delete mode
void deleteSelectedEdges()
delete all currently selected edges
GNEUndoList * myUndoList
a reference to the undolist maintained in the application
Definition: GNEViewNet.h:457
EditMode myEditMode
the current edit mode
Definition: GNEViewNet.h:326
bool addRestrictedLane(SUMOVehicleClass vclass)
add restricted lane
bool myTestingMode
Definition: GNEViewNet.h:468
GNEFrame * myCurrentFrame
the current frame
Definition: GNEViewNet.h:332
GNEPoly * myPolyToMove
the poly of which geometry is being moved
Definition: GNEViewNet.h:381