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 
24 
25 
26 // ===========================================================================
27 // class declaration
28 // ===========================================================================
29 
30 class GNEEdgeType;
31 
32 // ===========================================================================
33 // class definitions
34 // ===========================================================================
39 class GNECreateEdgeFrame : public GNEFrame {
40 
41 public:
42 
43  // ===========================================================================
44  // class EdgeTypeSelector
45  // ===========================================================================
46 
50 
51  public:
53  EdgeTypeSelector(GNECreateEdgeFrame* createEdgeFrameParent);
54 
57 
60 
62  void updateIDinComboBox(const std::string& oldID, const std::string& newID);
63 
65  bool useEdgeTemplate() const;
66 
68  bool useDefaultEdgeType() const;
69 
72 
75 
77  void clearEdgeTypeSelected();
78 
80  void setCurrentEdgeType(const GNEEdgeType* edgeType);
81 
83  void useTemplate();
84 
88  long onCmdRadioButton(FXObject*, FXSelector, void*);
89 
91  long onCmdAddEdgeType(FXObject*, FXSelector, void*);
92 
94  long onCmdDeleteEdgeType(FXObject*, FXSelector, void*);
95 
97  long onCmdSelectEdgeType(FXObject*, FXSelector, void*);
98 
100  long onCmdCreateFromTemplate(FXObject*, FXSelector, void*);
101 
103 
104  protected:
107 
109  void fillComboBox();
110 
111  private:
114 
117 
120 
123 
125  FXRadioButton* myUseDefaultEdgeType = nullptr;
126 
128  FXRadioButton* myUseCustomEdgeType = nullptr;
129 
131  FXComboBox* myEdgeTypesComboBox = nullptr;
132 
134  FXButton* myAddEdgeTypeButton = nullptr;
135 
137  FXButton* myDeleteEdgeTypeButton = nullptr;
138 
140  FXButton* myCreateFromTemplate = nullptr;
141  };
142 
143  // ===========================================================================
144  // class LaneTypeSelector
145  // ===========================================================================
146 
150 
151  public:
153  LaneTypeSelector(GNECreateEdgeFrame* createEdgeFrameParent);
154 
157 
159  void showLaneTypeSelector();
160 
162  void hideLaneTypeSelector();
163 
166 
170  long onCmdAddLaneType(FXObject*, FXSelector, void*);
171 
173  long onCmdDeleteLaneType(FXObject*, FXSelector, void*);
174 
176  long onCmdSelectLaneType(FXObject*, FXSelector, void*);
177 
179 
180  protected:
183 
185  void updateComboBox();
186 
187  private:
190 
194  FXComboBox* myLaneTypesComboBox = nullptr;
195 
197  FXButton* myAddLaneTypeButton = nullptr;
198 
200  FXButton* myDeleteLaneTypeButton = nullptr;
201  };
202 
203  // ===========================================================================
204  // class Legend
205  // ===========================================================================
206 
207  class Legend : public FXGroupBoxModule {
208 
209  public:
211  Legend(GNECreateEdgeFrame* createEdgeFrameParent);
212 
214  ~Legend();
215  };
216 
221  GNECreateEdgeFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
222 
225 
232  void processClick(const Position& clickedPosition, const GNEViewNetHelper::ObjectsUnderCursor& objectsUnderCursor, const bool oppositeEdge, const bool chainEdge);
233 
235  void abortEdgeCreation();
236 
238  const GNEJunction* getJunctionSource() const;
239 
241  void updateObjectsUnderSnappedCursor(const std::vector<GUIGlObject*>& GUIGlObjects);
242 
244  void show();
245 
247  void hide();
248 
251 
254 
257 
260 
262  void setUseEdgeTemplate();
263 
264 protected:
267 
270 
273 
276 
279 
280 private:
283 
286 };
FXGroupBoxModule (based on FXGroupBox)
GNEEdgeType * getEdgeTypeSelected() const
get edgeType selected
FXRadioButton * myUseCustomEdgeType
create custom edge
long onCmdSelectEdgeType(FXObject *, FXSelector, void *)
Called when the user press select an edgeType in comboBox.
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.
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.
GNEEdgeType * myDefaultEdgeType
default edge type
long onCmdCreateFromTemplate(FXObject *, FXSelector, void *)
Called when the user press create edgeType from Template.
FXButton * myCreateFromTemplate
button for create edgeType from template
FXRadioButton * myUseDefaultEdgeType
create default edge
void refreshEdgeTypeSelector()
refresh edge type selector
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
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(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
GNECreateEdgeFrame::LaneTypeSelector * myLaneTypeSelector
lane type selector
void updateObjectsUnderSnappedCursor(const std::vector< GUIGlObject * > &GUIGlObjects)
update objects under snapped cursor
GNEFrameAttributeModules::AttributesCreator * getEdgeTypeAttributes() const
get edgeType attributes
GNEFrameAttributeModules::AttributesCreator * myLaneTypeAttributes
internal laneType attributes
GNEFrameAttributeModules::AttributesCreator * getLaneTypeAttributes() const
get laneType attributes
const GNEJunction * getJunctionSource() const
get junction source for new edge
~GNECreateEdgeFrame()
Destructor.
GNEFrameAttributeModules::AttributesCreator * myEdgeTypeAttributes
internal edgeType attributes
GNECreateEdgeFrame::Legend * myLegend
Legend.
GNEJunction * myCreateEdgeSource
source junction for new edge
GNEViewNetHelper::ObjectsUnderCursor myObjectsUnderSnappedCursor
objects under snapped cursor
void hide()
hide create edge frame
EdgeTypeSelector * myEdgeTypeSelector
edge type selector
void setUseEdgeTemplate()
set default to using edge template
LaneTypeSelector * getLaneTypeSelector()
get lane type selector
class used to group all variables related with objects under cursor after a click over view
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:37