SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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-2016 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>
42 
43 // ===========================================================================
44 // enum
45 // ===========================================================================
46 enum EditMode {
65 };
66 
67 // ===========================================================================
68 // class declarations
69 // ===========================================================================
70 class GNENet;
71 class GNEJunction;
72 class GNEEdge;
73 class GNELane;
74 class GNEViewParent;
75 class GNEUndoList;
76 class GNEAdditional;
77 class GNEPoly;
78 
79 // ===========================================================================
80 // class definitions
81 // ===========================================================================
88  FXDECLARE(GNEViewNet)
89 
90 public:
91  /* @brief constructor
92  * @param[in] tmpParent temporal FXFrame parent so that we can add items to view area in the desired order
93  * @param[in] actualParent FXFrame parent of GNEViewNet
94  * @param[in] app main windows
95  * @param[in] viewParent viewParent of this viewNet
96  * @param[in] net traffic net
97  * @param[in] undoList pointer to UndoList modul
98  * @param[in] glVis a reference to GLVisuals
99  * @param[in] share a reference to FXCanvas
100  * @param[in] toolbar A reference to the parents toolbar
101  */
102  GNEViewNet(FXComposite* tmpParent, FXComposite* actualParent, GUIMainWindow& app,
103  GNEViewParent* viewParent, GNENet* net, GNEUndoList* undoList,
104  FXGLVisual* glVis, FXGLCanvas* share, FXToolBar* toolBar);
105 
107  virtual ~GNEViewNet();
108 
110  virtual void buildViewToolBars(GUIGlChildWindow&);
111 
113  bool setColorScheme(const std::string& name);
114 
118  long onLeftBtnPress(FXObject*, FXSelector, void*);
119 
121  long onLeftBtnRelease(FXObject*, FXSelector, void*);
122 
124  long onDoubleClicked(FXObject*, FXSelector, void*);
125 
127  long onMouseMove(FXObject*, FXSelector, void*);
129 
131  long onCmdChangeMode(FXObject*, FXSelector, void*);
132 
134  long onCmdSplitEdge(FXObject*, FXSelector, void*);
135 
137  long onCmdSplitEdgeBidi(FXObject*, FXSelector, void*);
138 
140  long onCmdReverseEdge(FXObject*, FXSelector, void*);
141 
143  long onCmdAddReversedEdge(FXObject*, FXSelector, void*);
144 
146  long onCmdSetEdgeEndpoint(FXObject*, FXSelector, void*);
147 
149  long onCmdResetEdgeEndpoint(FXObject*, FXSelector, void*);
150 
152  long onCmdStraightenEdges(FXObject*, FXSelector, void*);
153 
155  long onCmdSimplifyShape(FXObject*, FXSelector, void*);
156 
158  long onCmdDeleteGeometry(FXObject*, FXSelector, void*);
159 
161  long onCmdDuplicateLane(FXObject*, FXSelector, void*);
162 
164  long onCmdRestrictLaneSidewalk(FXObject*, FXSelector typeOfTransformation, void*);
165 
167  long onCmdRestrictLaneBikelane(FXObject*, FXSelector typeOfTransformation, void*);
168 
170  long onCmdRestrictLaneBuslane(FXObject*, FXSelector typeOfTransformation, void*);
171 
173  long onCmdRevertRestriction(FXObject*, FXSelector, void*);
174 
176  long onCmdAddRestrictedLaneSidewalk(FXObject*, FXSelector typeOfTransformation, void*);
177 
179  long onCmdAddRestrictedLaneBikelane(FXObject*, FXSelector typeOfTransformation, void*);
180 
182  long onCmdAddRestrictedLaneBuslane(FXObject*, FXSelector typeOfTransformation, void*);
183 
185  long onCmdRemoveRestrictedLaneSidewalk(FXObject*, FXSelector typeOfTransformation, void*);
186 
188  long onCmdRemoveRestrictedLaneBikelane(FXObject*, FXSelector typeOfTransformation, void*);
189 
191  long onCmdRemoveRestrictedLaneBuslane(FXObject*, FXSelector typeOfTransformation, void*);
192 
194  long onCmdNodeShape(FXObject*, FXSelector, void*);
195 
197  long onCmdNodeReplace(FXObject*, FXSelector, void*);
198 
200  long onCmdToogleShowConnection(FXObject*, FXSelector, void*);
201 
203  long onCmdToogleShowBubbles(FXObject*, FXSelector, void*);
204 
207  void setEditModeFromHotkey(FXushort selid);
208 
210  void abortOperation(bool clearSelection = true);
211 
213  void hotkeyDel();
214 
216  void hotkeyEnter();
217 
219  void markPopupPosition();
220 
222  GNEViewParent* getViewParent() const;
223 
225  GNENet* getNet() const;
226 
228  GNEUndoList* getUndoList() const;
229 
232 
234  bool showLockIcon() const;
235 
237  void setStatusBarText(const std::string& text);
238 
240  bool selectEdges();
241 
243  bool showConnections();
244 
246  bool autoSelectNodes();
247 
249  void setSelectionScaling(SUMOReal selectionScale);
250 
252  void updateControls();
253 
255  bool changeAllPhases() const;
256 
258  bool showJunctionAsBubbles() const;
259 
260 protected:
263 
265  int doPaintGL(int mode, const Boundary& bound);
266 
268  void doInit();
269 
270 private:
273 
276 
279 
282 
284  FXMenuCheck* mySelectEdges;
285 
287  FXMenuCheck* myShowConnections;
288 
291 
293  FXMenuCheck* myExtendToEdgeNodes;
294 
296  FXMenuCheck* myChangeAllPhases;
297 
299  // @{
302 
304  FXMenuCheck* myChainCreateEdge;
306  // @}
307 
309  // @{
312 
315 
318 
321 
324 
327 
330 
333 
335  FXMenuCheck* myWarnAboutMerge;
336 
339  // @}
340 
342  // @{
345 
348 
351  // @}
352 
356  FXToolBar* myToolbar;
357 
359  FXComboBox* myEditModesCombo;
360 
365 
368 
371 
374 
375 private:
377  void setEditMode(EditMode mode);
378 
380  void buildEditModeControls();
381 
384 
387 
389  void deleteSelectedEdges();
390 
392  bool mergeJunctions(GNEJunction* moved);
393 
396 
399 
402 
404  std::set<GNEEdge*> getEdgesAtCursorPosition(Position& pos);
405 
407  void removeCurrentPoly();
408 
410  bool restrictLane(SUMOVehicleClass vclass);
411 
413  bool addRestrictedLane(SUMOVehicleClass vclass);
414 
417 
419  GNEViewNet(const GNEViewNet&);
420 
423 };
424 
425 
426 #endif
427 
428 /****************************************************************************/
429 
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:272
EditMode getCurrentEditMode() const
get the current edit mode
Definition: GNEViewNet.cpp:924
long onCmdRestrictLaneBikelane(FXObject *, FXSelector typeOfTransformation, void *)
restrict lane to bikes
bool showLockIcon() const
check if lock icon should be visible
Definition: GNEViewNet.cpp:930
FXMenuCheck * mySelectEdges
menu check to select only edges
Definition: GNEViewNet.h:284
bool selectEdges()
whether inspection, selection and inversion should apply to edges or to lanes
Definition: GNEViewNet.cpp:322
GNEJunction * getJunctionAtCursorPosition(Position &pos)
try to retrieve a junction at the given position
Definition: GNEViewNet.cpp:936
Position myPopupSpot
Poput spot.
Definition: GNEViewNet.h:370
void abortOperation(bool clearSelection=true)
abort current edition operation
Definition: GNEViewNet.cpp:807
void deleteSelectedJunctions()
delete all currently selected junctions
bool setColorScheme(const std::string &name)
set color schieme
Definition: GNEViewNet.cpp:300
mode for moving things
Definition: GNEViewNet.h:52
bool changeAllPhases() const
change all phases
Definition: GNEViewNet.cpp:352
bool restrictLane(SUMOVehicleClass vclass)
restrict lane
void markPopupPosition()
store the position where a popup-menu was requested
Definition: GNEViewNet.cpp:900
long onCmdDuplicateLane(FXObject *, FXSelector, void *)
duplicate selected lane
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:362
long onMouseMove(FXObject *, FXSelector, void *)
called when user moves mouse
Definition: GNEViewNet.cpp:774
GNEViewNet()
FOX needs this.
Definition: GNEViewNet.h:262
FXMenuCheck * myChainCreateEdge
whether the endpoint for a created edge should be set as the new source
Definition: GNEViewNet.h:304
FXMenuCheck * myShowConnections
menu check to show connections
Definition: GNEViewNet.h:287
mode for deleting things
Definition: GNEViewNet.h:54
long onCmdSplitEdge(FXObject *, FXSelector, void *)
split edge at cursor position
FXMenuCheck * myChangeAllPhases
menu check to set change all phases
Definition: GNEViewNet.h:296
void setEditMode(EditMode mode)
set edit mode
Position mySelCorner2
second corner of the rectangle-selection
Definition: GNEViewNet.h:350
mode for editing tls
Definition: GNEViewNet.h:62
void setSelectionScaling(SUMOReal selectionScale)
set selection scaling
Definition: GNEViewNet.cpp:346
long onCmdNodeShape(FXObject *, FXSelector, void *)
input custom node shape
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:87
FXComboBox * myEditModesCombo
combo box for selecting the edit mode
Definition: GNEViewNet.h:359
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:55
void setEditModeFromHotkey(FXushort selid)
sets edit mode (from hotkey)
Definition: GNEViewNet.cpp:865
long onCmdSetEdgeEndpoint(FXObject *, FXSelector, void *)
set non-default geometry endpoint
GNEViewParent * getViewParent() const
get the net object
Definition: GNEViewNet.cpp:906
void updateControls()
update control contents after undo/redo or recompute
EditMode myPreviousEditMode
the previous edit mode used for toggling
Definition: GNEViewNet.h:281
GNEViewNet & operator=(const GNEViewNet &)
Invalidated assignment operator.
GNEEdge * myEdgeToMove
the edge of which geometry is being moved
Definition: GNEViewNet.h:314
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:48
long onCmdChangeMode(FXObject *, FXSelector, void *)
sets edit mode via combo box
Definition: GNEViewNet.cpp:858
bool myShowConnectionActivated
whether show connections has been activated once
Definition: GNEViewNet.h:290
A single child window which contains a view of the simulation area.
Definition: GNEViewParent.h:69
GNEUndoList * getUndoList() const
get the undoList object
Definition: GNEViewNet.cpp:918
bool myMoveSelection
whether a selection is being moved
Definition: GNEViewNet.h:332
Position myOldAdditionalPosition
variable for saving additional position before moving
Definition: GNEViewNet.h:326
void buildEditModeControls()
adds controls for setting the edit mode
std::set< GNEEdge * > getEdgesAtCursorPosition(Position &pos)
try to retrieve multiple edges at the given position
long onLeftBtnPress(FXObject *, FXSelector, void *)
overloaded handlers
Definition: GNEViewNet.cpp:419
long onCmdSimplifyShape(FXObject *, FXSelector, void *)
simply shape of current polygon
GNEPoly * myCurrentPoly
current polygon
Definition: GNEViewNet.h:373
FXMenuCheck * myShowJunctionAsBubble
show connection as buuble in "Move" mode.
Definition: GNEViewNet.h:338
long onCmdRemoveRestrictedLaneBuslane(FXObject *, FXSelector typeOfTransformation, void *)
remove restricted lane for bus
FXMenuCheck * myWarnAboutMerge
whether we should warn about merging junctions
Definition: GNEViewNet.h:335
mode for inspecting object attributes
Definition: GNEViewNet.h:56
GNEAdditional * myAdditionalToMove
the stoppingPlace element which shape is being moved
Definition: GNEViewNet.h:320
virtual ~GNEViewNet()
destructor
Definition: GNEViewNet.cpp:258
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
FXToolBar * myToolbar
Definition: GNEViewNet.h:356
long onCmdToogleShowConnection(FXObject *, FXSelector, void *)
toogle show connections
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:340
long onCmdRemoveRestrictedLaneBikelane(FXObject *, FXSelector typeOfTransformation, void *)
remove restricted lane for bikes
mode for selecting objects
Definition: GNEViewNet.h:58
void removeCurrentPoly()
remove the currently edited polygon
GNEJunction * myJunctionToMove
the Junction to be moved.
Definition: GNEViewNet.h:311
GNELane * getLaneAtCurserPosition(Position &pos)
try to retrieve a lane at the given position
Definition: GNEViewNet.cpp:983
Position mySelCorner1
firstcorner of the rectangle-selection
Definition: GNEViewNet.h:347
Position myAdditionalMovingReference
variable for calculating moving offset of additionals
Definition: GNEViewNet.h:323
long onCmdRestrictLaneBuslane(FXObject *, FXSelector typeOfTransformation, void *)
restrict lane to buslanes
EditMode
Definition: GNEViewNet.h:46
void doInit()
called after some features are already initialized
Definition: GNEViewNet.cpp:262
placeholder mode
Definition: GNEViewNet.h:48
FXMenuCheck * myAutoCreateOppositeEdge
Definition: GNEViewNet.h:305
bool mergeJunctions(GNEJunction *moved)
try to merge moved junction with another junction in that spot return true if merging did take place ...
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:55
FXMenuCheck * myExtendToEdgeNodes
menu check to extend to edge nodes
Definition: GNEViewNet.h:293
Position myMoveSrc
position from which to move edge geometry
Definition: GNEViewNet.h:329
long onCmdAddRestrictedLaneBikelane(FXObject *, FXSelector typeOfTransformation, void *)
Add restricted lane for bikes.
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:63
bool showConnections()
show connections over junctions
Definition: GNEViewNet.cpp:328
long onCmdReverseEdge(FXObject *, FXSelector, void *)
reverse edge
int doPaintGL(int mode, const Boundary &bound)
do paintGL
Definition: GNEViewNet.cpp:364
GNEJunction * myCreateEdgeSource
source junction for new edge 0 if no edge source is selected an existing (or newly created) junction ...
Definition: GNEViewNet.h:301
long onCmdAddRestrictedLaneBuslane(FXObject *, FXSelector typeOfTransformation, void *)
Add restricted lane for buses.
long onCmdRemoveRestrictedLaneSidewalk(FXObject *, FXSelector typeOfTransformation, void *)
remove restricted lane for pedestrians
GNENet * getNet() const
get the net object
Definition: GNEViewNet.cpp:912
long onCmdRestrictLaneSidewalk(FXObject *, FXSelector typeOfTransformation, void *)
restrict lane to pedestrians
void updateModeSpecificControls()
updates mode specific controls
void setStatusBarText(const std::string &text)
set staturBar text
Definition: GNEViewNet.cpp:316
#define SUMOReal
Definition: config.h:214
Mode for editing additionals.
Definition: GNEViewNet.h:64
StringBijection< EditMode > myEditAdditionalModeNames
Definition: GNEViewNet.h:363
virtual void buildViewToolBars(GUIGlChildWindow &)
builds the view toolbars
Definition: GNEViewNet.cpp:266
long onCmdStraightenEdges(FXObject *, FXSelector, void *)
makes selected edges straight
mode for connecting lanes
Definition: GNEViewNet.h:60
mode for creating new edges
Definition: GNEViewNet.h:50
long onDoubleClicked(FXObject *, FXSelector, void *)
called when user press mouse's left button two times
Definition: GNEViewNet.cpp:751
long onCmdToogleShowBubbles(FXObject *, FXSelector, void *)
toogle show bubbles
GNEEdge * getEdgeAtCursorPosition(Position &pos)
try to retrieve an edge at the given position
Definition: GNEViewNet.cpp:959
bool showJunctionAsBubbles() const
return true if junction must be showed as bubbles
Definition: GNEViewNet.cpp:358
long onCmdNodeReplace(FXObject *, FXSelector, void *)
replace node by geometry
void hotkeyDel()
handle del keypress
Definition: GNEViewNet.cpp:829
long onCmdAddReversedEdge(FXObject *, FXSelector, void *)
add reversed edge
bool myAmInRectSelect
whether we have started rectangle-selection
Definition: GNEViewNet.h:344
GNENet * myNet
we are not responsible for deletion
Definition: GNEViewNet.h:275
void hotkeyEnter()
handle enter keypress
Definition: GNEViewNet.cpp:842
long onLeftBtnRelease(FXObject *, FXSelector, void *)
called when user releases mouse's left button
Definition: GNEViewNet.cpp:705
void deleteSelectedEdges()
delete all currently selected edges
GNEUndoList * myUndoList
a reference to the undolist maintained in the application
Definition: GNEViewNet.h:367
EditMode myEditMode
the current edit mode
Definition: GNEViewNet.h:278
bool addRestrictedLane(SUMOVehicleClass vclass)
add restricted lane
GNEPoly * myPolyToMove
the poly of which geometry is being moved
Definition: GNEViewNet.h:317