SUMO - Simulation of Urban MObility
GNEViewNet.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2018 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
15 // A view on the network being edited (adapted from GUIViewTraffic)
16 /****************************************************************************/
17 #ifndef GNEViewNet_h
18 #define GNEViewNet_h
19 
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include <config.h>
25 
28 #include <utils/geom/Position.h>
36 
37 
38 // ===========================================================================
39 // enum
40 // ===========================================================================
41 
42 enum EditMode {
69 };
70 
71 // ===========================================================================
72 // class declarations
73 // ===========================================================================
74 
75 class GNENet;
76 class GNENetElement;
77 class GNEJunction;
78 class GNEEdge;
79 class GNELane;
80 class GNEConnection;
81 class GNEViewParent;
82 class GNEUndoList;
83 class GNEAdditional;
84 class GNEShape;
85 class GNEPoly;
86 class GNEPOI;
87 class GNEFrame;
88 class GNECrossing;
90 class GNETAZ;
91 class GNEInternalLane;
92 
93 // ===========================================================================
94 // class definitions
95 // ===========================================================================
102  FXDECLARE(GNEViewNet)
103 
104 public:
107  public:
110 
112  void updateObjectUnderCursor(const std::vector<GUIGlObject*> &GUIGlObjects, GNEPoly* editedPolyShape);
113 
115  void swapLane2Edge();
116 
118  void setCreatedJunction(GNEJunction* junction);
119 
121  GUIGlID getGlIDFront() const;
122 
125 
128 
131 
134 
136  GNEShape* getShapeFront() const;
137 
139  GNEJunction* getJunctionFront() const;
140 
142  GNEEdge* getEdgeFront() const;
143 
145  GNELane* getLaneFront() const;
146 
148  GNECrossing* getCrossingFront() const;
149 
152 
154  GNETAZ* getTAZFront() const;
155 
157  GNEPOI* getPOIFront() const;
158 
160  GNEPoly* getPolyFront() const;
161 
163  const std::vector<GNEAttributeCarrier*> &getClickedAttributeCarriers() const;
164 
165  private:
167  std::vector<GUIGlObject*> myGUIGlObjects;
168 
170  std::vector<GNEAttributeCarrier*> myAttributeCarriers;
171 
173  std::vector<GNENetElement*> myNetElements;
174 
176  std::vector<GNEAdditional*> myAdditionals;
177 
179  std::vector<GNEShape*> myShapes;
180 
182  std::vector<GNEJunction*> myJunctions;
183 
185  std::vector<GNEEdge*> myEdges;
186 
188  std::vector<GNELane*> myLanes;
189 
191  std::vector<GNECrossing*> myCrossings;
192 
194  std::vector<GNEConnection*> myConnections;
195 
197  std::vector<GNETAZ*> myTAZs;
198 
200  std::vector<GNEPOI*> myPOIs;
201 
203  std::vector<GNEPoly*> myPolys;
204 
206  void sortGUIGlObjectsByAltitude(const std::vector<GUIGlObject*> &GUIGlObjects);
207 
209  ObjectsUnderCursor(const ObjectsUnderCursor&) = delete;
210 
213  };
214 
216  struct KeyPressed {
217 
219  KeyPressed();
220 
222  void update(void *eventData);
223 
225  bool shiftKeyPressed() const;
226 
228  bool controlKeyPressed() const;
229 
230  private:
232  FXEvent* myEventInfo;
233  };
234 
235  /* @brief constructor
236  * @param[in] tmpParent temporal FXFrame parent so that we can add items to view area in the desired order
237  * @param[in] actualParent FXFrame parent of GNEViewNet
238  * @param[in] app main windows
239  * @param[in] viewParent viewParent of this viewNet
240  * @param[in] net traffic net
241  * @param[in] undoList pointer to UndoList modul
242  * @param[in] glVis a reference to GLVisuals
243  * @param[in] share a reference to FXCanvas
244  * @param[in] toolbar A reference to the parents toolbar
245  */
246  GNEViewNet(FXComposite* tmpParent, FXComposite* actualParent, GUIMainWindow& app,
247  GNEViewParent* viewParent, GNENet* net, GNEUndoList* undoList,
248  FXGLVisual* glVis, FXGLCanvas* share, FXToolBar* toolBar);
249 
251  ~GNEViewNet();
252 
254  virtual void buildViewToolBars(GUIGlChildWindow&);
255 
257  std::set<std::pair<std::string, GNEAttributeCarrier*> > getAttributeCarriersInBoundary(const Boundary &boundary, bool forceSelectEdges = false);
258 
264 
266  bool setColorScheme(const std::string& name);
267 
269  void buildColorRainbow(const GUIVisualizationSettings& s, GUIColorScheme& scheme, int active, GUIGlObjectType objectType);
270 
271  //@brief open object dialog
272  void openObjectDialog();
273 
277  long onLeftBtnPress(FXObject*, FXSelector, void*);
278 
280  long onLeftBtnRelease(FXObject*, FXSelector, void*);
281 
283  long onRightBtnPress(FXObject*, FXSelector, void*);
284 
286  long onRightBtnRelease(FXObject*, FXSelector, void*);
287 
289  long onMouseMove(FXObject*, FXSelector, void*);
290 
292  long onKeyPress(FXObject* o, FXSelector sel, void* data);
293 
295  long onKeyRelease(FXObject* o, FXSelector sel, void* data);
297 
301  long onCmdSetModeCreateEdge(FXObject*, FXSelector, void*);
302 
304  long onCmdSetModeMove(FXObject*, FXSelector, void*);
305 
307  long onCmdSetModeDelete(FXObject*, FXSelector, void*);
308 
310  long onCmdSetModeInspect(FXObject*, FXSelector, void*);
311 
313  long onCmdSetModeSelect(FXObject*, FXSelector, void*);
314 
316  long onCmdSetModeConnect(FXObject*, FXSelector, void*);
317 
319  long onCmdSetModeTLS(FXObject*, FXSelector, void*);
320 
322  long onCmdSetModeAdditional(FXObject*, FXSelector, void*);
323 
325  long onCmdSetModeCrossing(FXObject*, FXSelector, void*);
326 
328  long onCmdSetModeTAZ(FXObject*, FXSelector, void*);
329 
331  long onCmdSetModePolygon(FXObject*, FXSelector, void*);
332 
334  long onCmdSetModeProhibition(FXObject*, FXSelector, void*);
335 
337 
339  long onCmdSplitEdge(FXObject*, FXSelector, void*);
340 
342  long onCmdSplitEdgeBidi(FXObject*, FXSelector, void*);
343 
345  long onCmdReverseEdge(FXObject*, FXSelector, void*);
346 
348  long onCmdAddReversedEdge(FXObject*, FXSelector, void*);
349 
351  long onCmdEditEdgeEndpoint(FXObject*, FXSelector, void*);
352 
354  long onCmdResetEdgeEndpoint(FXObject*, FXSelector, void*);
355 
357  long onCmdStraightenEdges(FXObject*, FXSelector, void*);
358 
360  long onCmdSmoothEdges(FXObject*, FXSelector, void*);
361 
363  long onCmdStraightenEdgesElevation(FXObject*, FXSelector, void*);
364 
366  long onCmdSmoothEdgesElevation(FXObject*, FXSelector, void*);
367 
369  long onCmdSimplifyShape(FXObject*, FXSelector, void*);
370 
372  long onCmdDeleteGeometryPoint(FXObject*, FXSelector, void*);
373 
375  long onCmdClosePolygon(FXObject*, FXSelector, void*);
376 
378  long onCmdOpenPolygon(FXObject*, FXSelector, void*);
379 
381  long onCmdSetFirstGeometryPoint(FXObject*, FXSelector, void*);
382 
384  long onCmdTransformPOI(FXObject*, FXSelector, void*);
385 
387  long onCmdDuplicateLane(FXObject*, FXSelector, void*);
388 
390  long onCmdResetLaneCustomShape(FXObject*, FXSelector, void*);
391 
393  long onCmdRestrictLaneSidewalk(FXObject*, FXSelector, void*);
394 
396  long onCmdRestrictLaneBikelane(FXObject*, FXSelector, void*);
397 
399  long onCmdRestrictLaneBuslane(FXObject*, FXSelector, void*);
400 
402  long onCmdRestrictLaneGreenVerge(FXObject*, FXSelector, void*);
403 
405  long onCmdAddRestrictedLaneSidewalk(FXObject*, FXSelector, void*);
406 
408  long onCmdAddRestrictedLaneBikelane(FXObject*, FXSelector, void*);
409 
411  long onCmdAddRestrictedLaneBuslane(FXObject*, FXSelector, void*);
412 
414  long onCmdAddRestrictedLaneGreenVerge(FXObject*, FXSelector, void*);
415 
417  long onCmdRemoveRestrictedLaneSidewalk(FXObject*, FXSelector, void*);
418 
420  long onCmdRemoveRestrictedLaneBikelane(FXObject*, FXSelector, void*);
421 
423  long onCmdRemoveRestrictedLaneBuslane(FXObject*, FXSelector, void*);
424 
426  long onCmdRemoveRestrictedLaneGreenVerge(FXObject*, FXSelector, void*);
427 
429  long onCmdOpenAdditionalDialog(FXObject*, FXSelector, void*);
430 
432  long onCmdEditJunctionShape(FXObject*, FXSelector, void*);
433 
435  long onCmdResetJunctionShape(FXObject*, FXSelector, void*);
436 
438  long onCmdReplaceJunction(FXObject*, FXSelector, void*);
439 
441  long onCmdSplitJunction(FXObject*, FXSelector, void*);
442 
444  long onCmdClearConnections(FXObject*, FXSelector, void*);
445 
447  long onCmdResetConnections(FXObject*, FXSelector, void*);
448 
450  long onCmdEditConnectionShape(FXObject*, FXSelector, void*);
451 
453  long onCmdEditCrossingShape(FXObject*, FXSelector, void*);
454 
456  long onCmdToogleShowConnection(FXObject*, FXSelector, void*);
457 
459  long onCmdToogleSelectEdges(FXObject*, FXSelector, void*);
460 
462  long onCmdToogleShowBubbles(FXObject*, FXSelector, void*);
463 
465  long onCmdToogleMoveElevation(FXObject*, FXSelector, void*);
466 
468  long onCmdAddSelected(FXObject*, FXSelector, void*);
469 
471  long onCmdRemoveSelected(FXObject*, FXSelector, void*);
472 
474  long onCmdShowGrid(FXObject*, FXSelector, void*);
475 
479  void setEditModeFromHotkey(FXushort selid);
480 
482  void abortOperation(bool clearSelection = true);
483 
485  void hotkeyDel();
486 
488  void hotkeyEnter();
489 
491  void hotkeyFocusFrame();
492 
494  GNEViewParent* getViewParent() const;
495 
497  GNENet* getNet() const;
498 
500  GNEUndoList* getUndoList() const;
501 
504 
506  const KeyPressed &getKeyPressed() const;
507 
509  FXMenuCheck* getMenuCheckShowGrid() const;
510 
512  const GNEAttributeCarrier* getDottedAC() const;
513 
515  void setDottedAC(const GNEAttributeCarrier* AC);
516 
518  bool showLockIcon() const;
519 
521  void setStatusBarText(const std::string& text);
522 
524  bool selectEdges() const;
525 
527  bool editingElevation() const;
528 
530  bool showConnections();
531 
533  bool autoSelectNodes();
534 
536  void setSelectionScaling(double selectionScale);
537 
539  void updateControls();
540 
542  bool changeAllPhases() const;
543 
545  bool showJunctionAsBubbles() const;
546 
548  void startEditCustomShape(GNENetElement* element, const PositionVector& shape, bool fill);
549 
551  void stopEditCustomShape();
552 
553 protected:
555  GNEViewNet();
556 
558  int doPaintGL(int mode, const Boundary& bound);
559 
561  void doInit();
562 
563 private:
565  struct MovedItems {
566 
568  MovedItems();
569 
572 
575 
578 
581 
584 
587  };
588 
591 
594 
596  Position calculateOffsetMovement() const;
597 
599  void calculatePolyValues();
600 
602  void calculateEdgeValues();
603 
605  void calculateTAZValues();
606 
609 
612 
615 
618 
622 
623  private:
626  };
627 
630 
633 
635  void beginMoveSelection(GNEAttributeCarrier* originAC);
636 
638  void moveSelection();
639 
641  void finishMoveSelection();
642 
644  bool isMovingSelection() const;
645 
646  private:
649 
652 
655 
657  std::map<GNEJunction*, Position> myMovedJunctionOriginPositions;
658 
660  std::map<GNEEdge*, PositionVector> myMovedEdgesOriginShape;
661 
663  std::map<GNEEdge*, MoveSingleElementValues*> myMovedEgdesGeometryPoints;
664  };
665 
668  struct SelectingArea {
669 
671  SelectingArea(GNEViewNet* viewNet);
672 
674  void beginRectangleSelection();
675 
677  void moveRectangleSelection();
678 
680  void finishRectangleSelection();
681 
683  void processRectangleSelection();
684 
686  std::vector<GNEEdge*> processEdgeRectangleSelection();
687 
689  void processShapeSelection(const PositionVector &shape);
690 
692  void drawRectangleSelection(const RGBColor& color) const;
693 
696 
699 
700  private:
702  void processBoundarySelection(const Boundary &boundary);
703 
706 
709 
712  };
713 
715  struct TestingMode {
716 
718  TestingMode(GNEViewNet* viewNet);
719 
721  void initTestingMode();
722 
724  void drawTestingElements(GUIMainWindow* mainWindow);
725 
726  private:
729 
732 
735 
738  };
739 
742 
744  CreateEdgeOptions(GNEViewNet* viewNet);
745 
747  void buildCreateEdgeOptionMenuChecks();
748 
750  void hideCreateEdgeOptionMenuChecks();
751 
754 
756  FXMenuCheck* chainCreateEdge;
757 
760 
763 
766 
769 
770  private:
773  };
774 
776  struct ViewOptions {
777 
779  ViewOptions(GNEViewNet* viewNet);
780 
782  void buildViewOptionsMenuChecks();
783 
785  void hideViewOptionsMenuChecks();
786 
788  bool selectEdges() const;
789 
791  bool showConnections() const;
792 
794  FXMenuCheck* menuCheckSelectEdges;
795 
798 
801 
804 
807 
809  FXMenuCheck* menuCheckShowGrid;
810 
811  private:
814  };
815 
818 
821 
824 
827 
830 
833 
836 
839 
842 
845 
848 
851 
854 
857  // @}
858 
860  FXToolBar* myToolbar;
861 
866 
869 
872 
875 
878 
881 
884 
887 
890 
893 
896 
899 
901 
904 
909 
914 
918 
920  void setEditMode(EditMode mode);
921 
923  void buildEditModeControls();
924 
927 
930 
932  void deleteSelectedLanes();
933 
935  void deleteSelectedEdges();
936 
939 
942 
945 
947  void deleteSelectedShapes();
948 
950  bool mergeJunctions(GNEJunction* moved, const Position& oldPos);
951 
954 
957 
960 
963 
966 
969 
972 
975 
977  bool restrictLane(SUMOVehicleClass vclass);
978 
980  bool addRestrictedLane(SUMOVehicleClass vclass);
981 
984 
986  void processClick(void* eventData);
987 
989  void updateCursor();
990 
993 
995  void drawLaneCandidates() const;
996 
998  void drawTemporalDrawShape() const;
1000 
1002  GNEViewNet(const GNEViewNet&) = delete;
1003 
1005  GNEViewNet& operator=(const GNEViewNet&) = delete;
1006 };
1007 
1008 
1009 #endif
1010 
1011 /****************************************************************************/
struct used to group all variables related with movement of groups of elements
Definition: GNEViewNet.h:629
void startEditCustomShape(GNENetElement *element, const PositionVector &shape, bool fill)
start edit custom shape
Definition: GNEViewNet.cpp:787
long onCmdResetEdgeEndpoint(FXObject *, FXSelector, void *)
change geometry endpoint
GNEViewParent * myViewParent
view parent
Definition: GNEViewNet.h:817
FXMenuCheck * getMenuCheckShowGrid() const
get grid button
long onCmdRemoveRestrictedLaneGreenVerge(FXObject *, FXSelector, void *)
remove restricted lane for all vehicles
GNEPoly * polyToMove
the poly of which geometry is being moved
Definition: GNEViewNet.h:577
long onCmdResetJunctionShape(FXObject *, FXSelector, void *)
reset junction shape
GNEEdge * edgeToMove
the edge of which geometry is being moved
Definition: GNEViewNet.h:574
GNENetElement * getNetElementFront() const
get front net element (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:317
std::set< std::pair< std::string, GNEAttributeCarrier * > > getAttributeCarriersInBoundary(const Boundary &boundary, bool forceSelectEdges=false)
get AttributeCarriers in Boundary
Definition: GNEViewNet.cpp:585
long onCmdAddRestrictedLaneSidewalk(FXObject *, FXSelector, void *)
Add restricted lane for pedestrians.
long onCmdAddRestrictedLaneBikelane(FXObject *, FXSelector, void *)
Add restricted lane for bikes.
bool selectEdges() const
whether inspection, selection and inversion should apply to edges or to lanes
Definition: GNEViewNet.cpp:733
GNEPOI * getPOIFront() const
get front POI (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:407
void abortOperation(bool clearSelection=true)
abort current edition operation
void deleteSelectedJunctions()
delete all currently selected junctions
class used to group all variables related with key pressed after certain events
Definition: GNEViewNet.h:216
bool setColorScheme(const std::string &name)
set color scheme
Definition: GNEViewNet.cpp:628
long onCmdSetModeAdditional(FXObject *, FXSelector, void *)
called when user press the button for additional mode
FXMenuCheck * menuCheckShowBubbleOverJunction
show connection as buuble in "Move" mode.
Definition: GNEViewNet.h:765
mode for moving things
Definition: GNEViewNet.h:48
bool restrictLane(SUMOVehicleClass vclass)
restrict lane
ObjectsUnderCursor & operator=(const ObjectsUnderCursor &)=delete
Invalidated assignment operator.
const KeyPressed & getKeyPressed() const
get Key Pressed modul
GUIGlObjectType
long onCmdDuplicateLane(FXObject *, FXSelector, void *)
duplicate selected lane
long onRightBtnPress(FXObject *, FXSelector, void *)
called when user press mouse&#39;s right button
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
long onMouseMove(FXObject *, FXSelector, void *)
called when user moves mouse
GNEViewNet * myViewNet
pointer to viewNet
Definition: GNEViewNet.h:772
Mode for editing connection prohibits.
Definition: GNEViewNet.h:68
GNEViewNet()
FOX needs this.
Definition: GNEViewNet.cpp:816
MovedItems myMovedItems
variable use to save pointers to moved elements
Definition: GNEViewNet.h:841
long onCmdAddSelected(FXObject *, FXSelector, void *)
select AC under cursor
long onCmdToogleMoveElevation(FXObject *, FXSelector, void *)
toogle move elevation
long onCmdSetModeSelect(FXObject *, FXSelector, void *)
called when user press the button for select mode
GNETAZ * tazToMove
the TAZ element which their Shape is being moved (it&#39;s the only additional with a shape instead a pos...
Definition: GNEViewNet.h:586
void hotkeyFocusFrame()
handle focus frame keypress
void stopEditCustomShape()
edit edit shape
Definition: GNEViewNet.cpp:803
void buildColorRainbow(const GUIVisualizationSettings &s, GUIColorScheme &scheme, int active, GUIGlObjectType objectType)
recalibrate color scheme according to the current value range
Definition: GNEViewNet.cpp:685
mode for deleting things
Definition: GNEViewNet.h:50
Definition: GNEPOI.h:45
Stores the information about how to visualize structures.
long onCmdSplitEdge(FXObject *, FXSelector, void *)
split edge at cursor position
long onCmdToogleSelectEdges(FXObject *, FXSelector, void *)
toogle selet edges
const std::vector< GNEAttributeCarrier * > & getClickedAttributeCarriers() const
get vector with clicked ACs
Definition: GNEViewNet.cpp:427
MFXCheckableButton * myEditModeTAZ
chekable button for edit mode TAZ
Definition: GNEViewNet.h:892
long onCmdAddRestrictedLaneBuslane(FXObject *, FXSelector, void *)
Add restricted lane for buses.
GNEViewParent * getViewParent() const
get the net object
GNETAZ * getTAZFront() const
get front TAZ (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:397
MoveSingleElementValues myMoveSingleElementValues
variable used to save variables related with movement of single elements
Definition: GNEViewNet.h:844
std::vector< GNEShape * > myShapes
vector with the clicked shape elements (Poly and POIs)
Definition: GNEViewNet.h:179
Position selectionCorner1
firstcorner of the rectangle-selection
Definition: GNEViewNet.h:705
CreateEdgeOptions myCreateEdgeOptions
variable used to save all elements related to creation of Edges
Definition: GNEViewNet.h:838
GNEViewNet * myViewNet
pointer to viewNet
Definition: GNEViewNet.h:728
void setEditMode(EditMode mode)
set edit mode
MFXCheckableButton * myEditModeSelect
chekable button for edit mode select
Definition: GNEViewNet.h:877
long onCmdOpenPolygon(FXObject *, FXSelector, void *)
open closed polygon
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
struct used to group all variables related with testing
Definition: GNEViewNet.h:715
mode for editing tls
Definition: GNEViewNet.h:58
bool movingStartPos
bool to indicate that startPos are being moved
Definition: GNEViewNet.h:620
GNEAdditional * getAdditionalAtPopupPosition()
try to retrieve a additional at popup position
ObjectsUnderCursor myObjectsUnderCursor
variable use to save all pointers to objects under cursor after a click
Definition: GNEViewNet.h:835
GNELane * getLaneFront() const
get front lane (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:367
void updateObjectUnderCursor(const std::vector< GUIGlObject *> &GUIGlObjects, GNEPoly *editedPolyShape)
update objects under cursor (Called only in onLeftBtnPress(...) function)
Definition: GNEViewNet.cpp:152
long onCmdAddRestrictedLaneGreenVerge(FXObject *, FXSelector, void *)
Add restricted lane for all vehicles.
MFXCheckableButton * myEditModeMove
chekable button for edit mode move
Definition: GNEViewNet.h:868
MFXCheckableButton * myEditModeDelete
chekable button for edit mode delete
Definition: GNEViewNet.h:871
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:77
bool myTestingEnabled
flag to enable or disable testing mode
Definition: GNEViewNet.h:731
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:47
GUIGlID getGlIDFront() const
get front GUI GL ID (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:287
long onCmdStraightenEdgesElevation(FXObject *, FXSelector, void *)
interpolate z values linear between junctions
void setEditModeFromHotkey(FXushort selid)
sets edit mode (from hotkey)
long onKeyPress(FXObject *o, FXSelector sel, void *data)
called when user press a key
long onCmdRemoveRestrictedLaneBikelane(FXObject *, FXSelector, void *)
remove restricted lane for bikes
long onCmdRestrictLaneGreenVerge(FXObject *, FXSelector, void *)
restrict lane to all vehicles
long onCmdEditConnectionShape(FXObject *, FXSelector, void *)
edit connection shape
GNEPoly * getPolyFront() const
get front Poly (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:417
MFXCheckableButton * myEditModeProhibition
checkable button for edit mode polygon
Definition: GNEViewNet.h:898
long onCmdRemoveSelected(FXObject *, FXSelector, void *)
unselect AC under cursor
long onCmdResetConnections(FXObject *, FXSelector, void *)
reset junction connections
void updateControls()
update control contents after undo/redo or recompute
EditMode myPreviousEditMode
the previous edit mode before edit junction&#39;s shapes
Definition: GNEViewNet.h:916
std::vector< GNETAZ * > myTAZs
vector with the clicked TAZ elements (needed because uses a shape instead a position) ...
Definition: GNEViewNet.h:197
Position originalPositionInView
original position of geometry position (needed for commmit position changes)
Definition: GNEViewNet.h:614
void deleteSelectedShapes()
delete all currently selected shapes
GNEAdditional * additionalToMove
the additional element which position is being moved
Definition: GNEViewNet.h:583
FXEvent * myEventInfo
information of event
Definition: GNEViewNet.h:232
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:42
GUIGlObjectType getGlTypeFront() const
get front GUI GL object type (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:297
A single child window which contains a view of the simulation area.
Definition: GNEViewParent.h:63
bool mergeJunctions(GNEJunction *moved, const Position &oldPos)
try to merge moved junction with another junction in that spot return true if merging did take place ...
GNEViewNet * myViewNet
pointer to viewNet
Definition: GNEViewNet.h:625
GNEJunction * createEdgeSource
source junction for new edge 0 if no edge source is selected an existing (or newly created) junction ...
Definition: GNEViewNet.h:753
bool changeAllPhases() const
change all phases
Definition: GNEViewNet.cpp:775
long onCmdSetModeCrossing(FXObject *, FXSelector, void *)
called when user press the button for crossing mode
SelectingArea mySelectingArea
variable used to save variables related with selecting areas
Definition: GNEViewNet.h:850
std::map< GNEJunction *, Position > myMovedJunctionOriginPositions
container used for move junctions
Definition: GNEViewNet.h:657
struct used to group all variables related to create edges
Definition: GNEViewNet.h:741
long onCmdSetModeTAZ(FXObject *, FXSelector, void *)
called when user press the button for TAZ mode
GNEEdge * getEdgeFront() const
get front edge (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:357
void setCreatedJunction(GNEJunction *junction)
set created junction
Definition: GNEViewNet.cpp:277
void buildEditModeControls()
adds controls for setting the edit mode
GNEUndoList * getUndoList() const
get the undoList object
long onLeftBtnPress(FXObject *, FXSelector, void *)
Definition: GNEViewNet.cpp:887
long onRightBtnRelease(FXObject *, FXSelector, void *)
called when user releases mouse&#39;s right button
long onCmdSimplifyShape(FXObject *, FXSelector, void *)
simply shape of current polygon
std::vector< GNEAttributeCarrier * > myAttributeCarriers
vector with the clicked attribute carriers
Definition: GNEViewNet.h:170
bool showLockIcon() const
check if lock icon should be visible
FXMenuCheck * menuCheckExtendSelection
menu check to extend to edge nodes
Definition: GNEViewNet.h:803
void deleteSelectedConnections()
delete all currently selected connections
mode for inspecting object attributes
Definition: GNEViewNet.h:52
void deleteSelectedCrossings()
delete all currently selected crossings
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
Definition: GNECrossing.h:45
void processClick(void *eventData)
Auxiliar function used by onLeftBtnPress(...)
~GNEViewNet()
destructor
Definition: GNEViewNet.cpp:532
GNEEdge * getEdgeAtPopupPosition()
try to retrieve an edge at popup position
void sortGUIGlObjectsByAltitude(const std::vector< GUIGlObject *> &GUIGlObjects)
invert GUIGlObjects
Definition: GNEViewNet.cpp:433
long onCmdRemoveRestrictedLaneSidewalk(FXObject *, FXSelector, void *)
remove restricted lane for pedestrians
ViewOptions myViewOptions
variable used to save variables related with view options
Definition: GNEViewNet.h:856
long onCmdSetModeMove(FXObject *, FXSelector, void *)
called when user press the button for move mode
FXMenuCheck * menuCheckShowConnections
menu check to show connections
Definition: GNEViewNet.h:797
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
GNEPOI * getPOIAtPopupPosition()
try to retrieve a POILane at popup position
A list of positions.
long onCmdReplaceJunction(FXObject *, FXSelector, void *)
replace node by geometry
long onCmdClearConnections(FXObject *, FXSelector, void *)
clear junction connections
long onCmdRestrictLaneBuslane(FXObject *, FXSelector, void *)
restrict lane to buslanes
FXToolBar * myToolbar
a reference to the toolbar in myParent
Definition: GNEViewNet.h:860
long onCmdToogleShowConnection(FXObject *, FXSelector, void *)
toogle show connections
KeyPressed myKeyPressed
variable used to save key status after certain events
Definition: GNEViewNet.h:832
void drawTemporalDrawShape() const
draw temporal polygon shape in Polygon Mode
MFXCheckableButton * myEditModeCreateEdge
Definition: GNEViewNet.h:865
FXMenuCheck * menuCheckShowGrid
show grid button
Definition: GNEViewNet.h:809
GNEViewNet * myViewNet
pointer to viewNet
Definition: GNEViewNet.h:711
bool showJunctionAsBubbles() const
return true if junction must be showed as bubbles
Definition: GNEViewNet.cpp:781
bool removeRestrictedLane(SUMOVehicleClass vclass)
remove restricted lane
void setDottedAC(const GNEAttributeCarrier *AC)
set attributeCarrier under cursor
long onCmdSplitEdgeBidi(FXObject *, FXSelector, void *)
split edge at cursor position
bool autoSelectNodes()
whether to autoselect nodes or to lanes
Definition: GNEViewNet.cpp:763
long onCmdSetModeProhibition(FXObject *, FXSelector, void *)
called when user press the button for polygon mode
bool startDrawing
whether we have started rectangle-selection
Definition: GNEViewNet.h:698
Definition: GNETAZ.h:35
MFXCheckableButton * myEditModeTrafficLight
chekable button for edit mode traffic light
Definition: GNEViewNet.h:883
FXMenuCheck * chainCreateEdge
whether the endpoint for a created edge should be set as the new source
Definition: GNEViewNet.h:756
mode for selecting objects
Definition: GNEViewNet.h:54
MFXCheckableButton * myEditModeAdditional
chekable button for edit mode additional
Definition: GNEViewNet.h:886
void updateCursor()
update cursor after every click/key press/release
std::vector< GNEEdge * > myEdges
vector with the clicked edges
Definition: GNEViewNet.h:185
void openObjectDialog()
Definition: GNEViewNet.cpp:644
struct used to group all pointers to moved elements
Definition: GNEViewNet.h:565
bool myMovingSelection
flag to check if a selection is being moved
Definition: GNEViewNet.h:654
struct used to group all variables related with selecting using a square or polygon ...
Definition: GNEViewNet.h:668
long onCmdEditEdgeEndpoint(FXObject *, FXSelector, void *)
change geometry endpoint
FXMenuCheck * menuCheckWarnAboutMerge
whether we should warn about merging junctions
Definition: GNEViewNet.h:762
std::vector< GNELane * > myLanes
vector with the clicked lanes
Definition: GNEViewNet.h:188
GNECrossing * getCrossingFront() const
get front crossing (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:377
long onCmdResetLaneCustomShape(FXObject *, FXSelector, void *)
reset custom shapes of selected lanes
GNEConnection * getConnectionAtPopupPosition()
try to retrieve a connection at popup position
Position relativeClickedPosition
relative position of Clicked Position regarding to originalGeometryPointPosition (Used when user does...
Definition: GNEViewNet.h:617
EditMode
Definition: GNEViewNet.h:42
Mode for editing TAZ.
Definition: GNEViewNet.h:64
std::vector< GNEJunction * > myJunctions
vector with the clicked junctions
Definition: GNEViewNet.h:182
void doInit()
called after some features are already initialized
Definition: GNEViewNet.cpp:536
placeholder mode
Definition: GNEViewNet.h:44
GNEAdditional * getAdditionalFront() const
get front additional element (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:327
struct used to group all variables related with movement of single elements
Definition: GNEViewNet.h:590
long onCmdSplitJunction(FXObject *, FXSelector, void *)
split junction into multiple junctions
void setSelectionScaling(double selectionScale)
set selection scaling
Definition: GNEViewNet.cpp:769
EditMode getCurrentEditMode() const
get the current edit mode
MFXCheckableButton * myEditModeInspect
chekable button for edit mode inspect
Definition: GNEViewNet.h:874
long onCmdClosePolygon(FXObject *, FXSelector, void *)
close opened polygon
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:50
unsigned int GUIGlID
Definition: GUIGlObject.h:43
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
called when user release a key
std::vector< GNEPOI * > myPOIs
vector with the clicked POIs
Definition: GNEViewNet.h:200
long onCmdRemoveRestrictedLaneBuslane(FXObject *, FXSelector, void *)
remove restricted lane for bus
GNEJunction * getJunctionAtPopupPosition()
try to retrieve a junction at popup position
long onCmdSmoothEdgesElevation(FXObject *, FXSelector, void *)
smooth elevation with regard to adjoining edges
PositionVector originalShapeBeforeMoving
original shape of element before start moving (used by polygons, edges, etc., needed for commmit posi...
Definition: GNEViewNet.h:608
Mode for editing Polygons.
Definition: GNEViewNet.h:66
void buildSelectionACPopupEntry(GUIGLObjectPopupMenu *ret, GNEAttributeCarrier *AC)
Builds an entry which allows to (de)select the object.
Definition: GNEViewNet.cpp:617
MoveMultipleElementValues myMoveMultipleElementValues
variable used to save variables related with movement of multiple elements
Definition: GNEViewNet.h:847
long onCmdDeleteGeometryPoint(FXObject *, FXSelector, void *)
delete the closes geometry point
bool selectingUsingRectangle
whether we have started rectangle-selection
Definition: GNEViewNet.h:695
GNEViewNet * myViewNet
pointer to viewNet
Definition: GNEViewNet.h:813
An Element which don&#39;t belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:48
const GNEAttributeCarrier * getDottedAC() const
get AttributeCarrier under cursor
bool editingElevation() const
return true if elevation is being edited
Definition: GNEViewNet.cpp:739
MFXCheckableButton * myEditModeConnection
chekable button for edit mode connection
Definition: GNEViewNet.h:880
bool showConnections()
show connections over junctions
Definition: GNEViewNet.cpp:749
GNEViewNet * myViewNet
pointer to viewNet
Definition: GNEViewNet.h:648
struct used to group all variables related to view options
Definition: GNEViewNet.h:776
long onCmdReverseEdge(FXObject *, FXSelector, void *)
reverse edge
GNEPOI * poiToMove
the poi which position is being moved
Definition: GNEViewNet.h:580
long onCmdSetModeTLS(FXObject *, FXSelector, void *)
called when user press the button for traffic lights mode
FXMenuCheck * menuCheckChangeAllPhases
menu check to set change all phases
Definition: GNEViewNet.h:806
int doPaintGL(int mode, const Boundary &bound)
do paintGL
Definition: GNEViewNet.cpp:827
long onCmdOpenAdditionalDialog(FXObject *, FXSelector, void *)
open additional dialog
The popup menu of a globject.
GNEJunction * junctionToMove
the Junction to be moved.
Definition: GNEViewNet.h:571
std::vector< GNEPoly * > myPolys
vector with the clicked Polys
Definition: GNEViewNet.h:203
void deleteSelectedAdditionals()
delete all currently selected additionals
std::map< GNEEdge *, PositionVector > myMovedEdgesOriginShape
container used for move entire edges
Definition: GNEViewNet.h:660
GNECrossing * getCrossingAtPopupPosition()
try to retrieve a crossing at popup position
long onCmdSmoothEdges(FXObject *, FXSelector, void *)
smooth geometry
GNEAttributeCarrier * getAttributeCarrierFront() const
get front attribute carrier (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:307
GNENet * getNet() const
get the net object
std::vector< GNENetElement * > myNetElements
vector with the clicked net elements
Definition: GNEViewNet.h:173
Position selectionCorner2
second corner of the rectangle-selection
Definition: GNEViewNet.h:708
std::vector< GNEAdditional * > myAdditionals
vector with the clicked additional elements
Definition: GNEViewNet.h:176
std::vector< GUIGlObject * > myGUIGlObjects
vector with the clicked GUIGlObjects
Definition: GNEViewNet.h:167
void updateModeSpecificControls()
updates mode specific controls
FXMenuCheck * menuCheckMoveElevation
apply movement to elevation
Definition: GNEViewNet.h:768
MFXCheckableButton * myEditModeCrossing
chekable button for edit mode crossing
Definition: GNEViewNet.h:889
long onCmdEditCrossingShape(FXObject *, FXSelector, void *)
edit crossing shape
FXMenuCheck * menuCheckHideConnections
menu check to hide connections in connect mode
Definition: GNEViewNet.h:800
void setStatusBarText(const std::string &text)
set staturBar text
Definition: GNEViewNet.cpp:727
void swapLane2Edge()
swap lane to edge
Definition: GNEViewNet.cpp:260
long onCmdSetModeConnect(FXObject *, FXSelector, void *)
called when user press the button for connect mode
Mode for editing additionals.
Definition: GNEViewNet.h:60
int myTestingWidth
Width of viewNet in testing mode.
Definition: GNEViewNet.h:734
virtual void buildViewToolBars(GUIGlChildWindow &)
builds the view toolbars
Definition: GNEViewNet.cpp:540
const GNEAttributeCarrier * myDottedAC
current AttributeCarrier that is drawn using with a dotted contour note: it&#39;s constant because is edi...
Definition: GNEViewNet.h:908
FXMenuCheck * autoCreateOppositeEdge
create auto create opposite edge
Definition: GNEViewNet.h:759
long onCmdSetModePolygon(FXObject *, FXSelector, void *)
called when user press the button for polygon mode
Mode for editing crossing.
Definition: GNEViewNet.h:62
GNEShape * getShapeFront() const
get front shape element (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:337
GNEConnection * getConnectionFront() const
get front connection (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:387
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:56
mode for creating new edges
Definition: GNEViewNet.h:46
Position myClickedPosition
original clicked position when moveSelection is called (used for calculate offset during moveSelectio...
Definition: GNEViewNet.h:651
GNEJunction * getJunctionFront() const
get front junction (or a pointer to nullptr if there isn&#39;t)
Definition: GNEViewNet.cpp:347
long onCmdSetFirstGeometryPoint(FXObject *, FXSelector, void *)
set as first geometry point the closes geometry point
std::vector< GNECrossing * > myCrossings
vector with the clicked crossings
Definition: GNEViewNet.h:191
GNELane * getLaneAtPopupPosition()
try to retrieve a lane at popup position
long onCmdToogleShowBubbles(FXObject *, FXSelector, void *)
toogle show bubbles
int myTestingHeight
Height of viewNet in testing mode.
Definition: GNEViewNet.h:737
void drawLaneCandidates() const
draw functions
long onCmdTransformPOI(FXObject *, FXSelector, void *)
Transform POI to POILane, and viceversa.
void hotkeyDel()
handle del keypress
long onCmdAddReversedEdge(FXObject *, FXSelector, void *)
add reversed edge
GNEPoly * myEditShapePoly
Definition: GNEViewNet.h:913
std::vector< GNEConnection * > myConnections
vector with the clicked connections
Definition: GNEViewNet.h:194
TestingMode myTestingMode
variable used to save variables related with testing mode
Definition: GNEViewNet.h:853
std::map< GNEEdge *, MoveSingleElementValues * > myMovedEgdesGeometryPoints
container used for move GeometryPoints of edges
Definition: GNEViewNet.h:663
GNENet * myNet
Pointer to current net. (We are not responsible for deletion)
Definition: GNEViewNet.h:820
void hotkeyEnter()
handle enter keypress
long onCmdRestrictLaneBikelane(FXObject *, FXSelector, void *)
restrict lane to bikes
void deleteSelectedLanes()
delete all currently selected lanes
long onCmdEditJunctionShape(FXObject *, FXSelector, void *)
edit junction shape
long onLeftBtnRelease(FXObject *, FXSelector, void *)
called when user releases mouse&#39;s left button
long onCmdShowGrid(FXObject *, FXSelector, void *)
toogle show grid
long onCmdSetModeCreateEdge(FXObject *, FXSelector, void *)
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:903
EditMode myEditMode
the current edit mode
Definition: GNEViewNet.h:823
bool addRestrictedLane(SUMOVehicleClass vclass)
add restricted lane
MFXCheckableButton * myEditModePolygon
chekable button for edit mode polygon
Definition: GNEViewNet.h:895
FXMenuCheck * menuCheckSelectEdges
menu check to select only edges
Definition: GNEViewNet.h:794
GNEFrame * myCurrentFrame
the current frame
Definition: GNEViewNet.h:826
long onCmdRestrictLaneSidewalk(FXObject *, FXSelector, void *)
restrict lane to pedestrians
GNEPoly * getPolygonAtPopupPosition()
try to retrieve a polygon at popup position