Eclipse SUMO - Simulation of Urban MObility
GNECreateEdgeFrame.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-2022 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 /****************************************************************************/
18 // The Widget for create edges (and junctions)
19 /****************************************************************************/
20 #pragma once
21 #include <config.h>
22 
25 
26 
27 // ===========================================================================
28 // class declaration
29 // ===========================================================================
30 
31 class GNEEdgeType;
32 
33 // ===========================================================================
34 // class definitions
35 // ===========================================================================
40 class GNECreateEdgeFrame : public GNEFrame {
41 
42 public:
43 
44  // ===========================================================================
45  // class EdgeTypeSelector
46  // ===========================================================================
47 
51 
52  public:
54  EdgeTypeSelector(GNECreateEdgeFrame* createEdgeFrameParent);
55 
58 
61 
63  void updateIDinComboBox(const std::string& oldID, const std::string& newID);
64 
66  bool useEdgeTemplate() const;
67 
69  bool useDefaultEdgeType() const;
70 
73 
76 
79 
81  bool isNoPedestriansEnabled() const;
82 
84  bool isAddSidewalkEnabled() const;
85 
87  void clearEdgeTypeSelected();
88 
90  void setCurrentEdgeType(const GNEEdgeType* edgeType);
91 
93  void useTemplate();
94 
98  long onCmdRadioButton(FXObject*, FXSelector, void*);
99 
101  long onCmdAddEdgeType(FXObject*, FXSelector, void*);
102 
104  long onCmdDeleteEdgeType(FXObject*, FXSelector, void*);
105 
107  long onCmdSelectEdgeTypeOrTemplate(FXObject*, FXSelector, void*);
108 
110  long onCmdCreateFromTemplate(FXObject*, FXSelector, void*);
111 
113  long onUpdAddSideWalk(FXObject*, FXSelector, void*);
114 
116 
117  protected:
120 
122  void fillComboBox();
123 
124  private:
127 
130 
133 
136 
138  FXRadioButton* myUseDefaultEdgeType = nullptr;
139 
141  FXCheckButton* myNoPedestriansCheckButton = nullptr;
142 
144  FXCheckButton* myAddSidewalkCheckButton = nullptr;
145 
147  FXRadioButton* myUseCustomEdgeType = nullptr;
148 
150  FXComboBox* myEdgeTypesComboBox = nullptr;
151 
153  FXButton* myAddEdgeTypeButton = nullptr;
154 
156  FXButton* myDeleteEdgeTypeButton = nullptr;
157 
159  FXButton* myCreateFromTemplate = nullptr;
160  };
161 
162  // ===========================================================================
163  // class LaneTypeSelector
164  // ===========================================================================
165 
169 
170  public:
172  LaneTypeSelector(GNECreateEdgeFrame* createEdgeFrameParent);
173 
176 
178  void showLaneTypeSelector();
179 
181  void hideLaneTypeSelector();
182 
185 
189  long onCmdAddLaneType(FXObject*, FXSelector, void*);
190 
192  long onCmdDeleteLaneType(FXObject*, FXSelector, void*);
193 
195  long onCmdSelectLaneType(FXObject*, FXSelector, void*);
196 
198 
199  protected:
202 
204  void updateComboBox();
205 
206  private:
209 
213  FXComboBox* myLaneTypesComboBox = nullptr;
214 
216  FXButton* myAddLaneTypeButton = nullptr;
217 
219  FXButton* myDeleteLaneTypeButton = nullptr;
220  };
221 
222  // ===========================================================================
223  // class Legend
224  // ===========================================================================
225 
226  class Legend : public MFXGroupBoxModule {
227 
228  public:
230  Legend(GNECreateEdgeFrame* createEdgeFrameParent);
231 
233  ~Legend();
234  };
235 
240  GNECreateEdgeFrame(GNEViewParent* viewParent, GNEViewNet* viewNet);
241 
244 
251  void processClick(const Position& clickedPosition, const GNEViewNetHelper::ObjectsUnderCursor& objectsUnderCursor, const bool oppositeEdge, const bool chainEdge);
252 
254  void abortEdgeCreation();
255 
257  const GNEJunction* getJunctionSource() const;
258 
260  void updateObjectsUnderSnappedCursor(const std::vector<GUIGlObject*>& GUIGlObjects);
261 
263  void show();
264 
266  void hide();
267 
270 
273 
276 
279 
281  void setUseEdgeTemplate();
282 
283 protected:
286 
289 
292 
295 
298 
300  void disablePedestrians(GNEEdge* edge) const;
301 
303  void addSidewalk(GNEEdge* edge) const;
304 
305 private:
308 
311 };
GNEEdgeType * getEdgeTypeSelected() const
get edgeType selected
FXRadioButton * myUseCustomEdgeType
create custom edge
GNEEdgeType * getDefaultEdgeType() const
get default edgeType
FXComboBox * myEdgeTypesComboBox
ComboBox for edge types.
bool useEdgeTemplate() const
check if we have to use edge template
void updateIDinComboBox(const std::string &oldID, const std::string &newID)
update id in comboBox
long onCmdAddEdgeType(FXObject *, FXSelector, void *)
Called when the user press button for add a new edge type.
void enableCheckBoxDisablePedestrians()
void enable checkbox for disable pedestrians
bool useDefaultEdgeType() const
check if we're using default edge type
FOX_CONSTRUCTOR(EdgeTypeSelector)
FOX need this.
FXButton * myDeleteEdgeTypeButton
button for delete edge type
long onCmdDeleteEdgeType(FXObject *, FXSelector, void *)
Called when the user press button for delete edge type.
long onUpdAddSideWalk(FXObject *, FXSelector, void *)
Called when add sidewalk check buton is updated.
GNEEdgeType * myDefaultEdgeType
default edge type
FXCheckButton * myAddSidewalkCheckButton
add sidewalk check button
long onCmdCreateFromTemplate(FXObject *, FXSelector, void *)
Called when the user press create edgeType from Template.
bool isAddSidewalkEnabled() const
check if add sidewalk check button is enabled
FXButton * myCreateFromTemplate
button for create edgeType from template
FXRadioButton * myUseDefaultEdgeType
create default edge
void refreshEdgeTypeSelector()
refresh edge type selector
FXCheckButton * myNoPedestriansCheckButton
no pedestrian check button
bool isNoPedestriansEnabled() const
check if no pedestrian check button is enabled
long onCmdRadioButton(FXObject *, FXSelector, void *)
GNEEdgeType * myEdgeTypeSelected
selected edgeType
EdgeTypeSelector(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
GNECreateEdgeFrame * myCreateEdgeFrameParent
pointer to createEdgeFrameParent
void setCurrentEdgeType(const GNEEdgeType *edgeType)
set current edgeType
void clearEdgeTypeSelected()
clear edgeType selected
long onCmdSelectEdgeTypeOrTemplate(FXObject *, FXSelector, void *)
Called when the user press select an edgeType or template in comboBox.
FXButton * myAddEdgeTypeButton
button for create new edge type
GNECreateEdgeFrame * myCreateEdgeFrameParent
pointer to createEdgeFrameParent
FOX_CONSTRUCTOR(LaneTypeSelector)
FOX need this.
long onCmdSelectLaneType(FXObject *, FXSelector, void *)
Called when the user press select an laneType in comboBox.
FXButton * myDeleteLaneTypeButton
button for delete lane type
FXComboBox * myLaneTypesComboBox
ComboBox for lane types.
void showLaneTypeSelector()
show lane type selector
LaneTypeSelector(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
void hideLaneTypeSelector()
hide lane type selector
long onCmdAddLaneType(FXObject *, FXSelector, void *)
FXButton * myAddLaneTypeButton
button for create new lane type
long onCmdDeleteLaneType(FXObject *, FXSelector, void *)
Called when the user press button for delete lane type.
void refreshLaneTypeSelector()
refresh LaneTypeSelector
Legend(GNECreateEdgeFrame *createEdgeFrameParent)
constructor
void processClick(const Position &clickedPosition, const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor, const bool oppositeEdge, const bool chainEdge)
handle processClick and set the relative colouring
EdgeTypeSelector * getEdgeTypeSelector() const
get edgeType selector
void abortEdgeCreation()
abort current edge creation
void show()
show create edge frame
GNECreateEdgeFrame::LaneTypeSelector * myLaneTypeSelector
lane type selector
GNEAttributesCreator * getLaneTypeAttributes() const
get laneType attributes
void updateObjectsUnderSnappedCursor(const std::vector< GUIGlObject * > &GUIGlObjects)
update objects under snapped cursor
GNEAttributesCreator * myEdgeTypeAttributes
internal edgeType attributes
GNEAttributesCreator * getEdgeTypeAttributes() const
get edgeType attributes
const GNEJunction * getJunctionSource() const
get junction source for new edge
GNEAttributesCreator * myLaneTypeAttributes
internal laneType attributes
~GNECreateEdgeFrame()
Destructor.
void disablePedestrians(GNEEdge *edge) const
disable pedestrians in the given edge (within undoRedo)
GNECreateEdgeFrame::Legend * myLegend
Legend.
GNEJunction * myCreateEdgeSource
source junction for new edge
GNEViewNetHelper::ObjectsUnderCursor myObjectsUnderSnappedCursor
objects under snapped cursor
GNECreateEdgeFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
void hide()
hide create edge frame
void addSidewalk(GNEEdge *edge) const
disable pedestrians in the given edge (within undoRedo)
EdgeTypeSelector * myEdgeTypeSelector
edge type selector
void setUseEdgeTemplate()
set default to using edge template
LaneTypeSelector * getLaneTypeSelector()
get lane type selector
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:53
class used to group all variables related with objects under cursor after a click over view
A single child window which contains a view of the simulation area.
Definition: GNEViewParent.h:84
MFXGroupBoxModule (based on FXGroupBox)
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:37