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-2020 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 
23 
24 
25 // ===========================================================================
26 // class declaration
27 // ===========================================================================
28 
29 class GNEEdgeType;
30 
31 // ===========================================================================
32 // class definitions
33 // ===========================================================================
38 class GNECreateEdgeFrame : public GNEFrame {
39 
40 public:
41 
42  // ===========================================================================
43  // class EdgeTypeSelector
44  // ===========================================================================
45 
46  class EdgeTypeSelector : protected FXGroupBox {
49 
50  public:
52  EdgeTypeSelector(GNECreateEdgeFrame* createEdgeFrameParent);
53 
56 
59 
61  bool useEdgeTemplate() const;
62 
64  bool useDefaultEdgeType() const;
65 
68 
71 
73  void clearEdgeTypeSelected();
74 
78  long onCmdRadioButton(FXObject*, FXSelector, void*);
79 
81  long onCmdAddEdgeType(FXObject*, FXSelector, void*);
82 
84  long onCmdDeleteEdgeType(FXObject*, FXSelector, void*);
85 
87  long onCmdResetEdgeType(FXObject*, FXSelector, void*);
88 
90  long onCmdSelectEdgeType(FXObject*, FXSelector, void*);
91 
93 
94  protected:
97 
99  void fillComboBox();
100 
102  void fillDefaultParameters();
103 
104  private:
107 
110 
113 
115  FXRadioButton* myUseDefaultEdgeType = nullptr;
116 
118  FXRadioButton* myUseCustomEdgeType = nullptr;
119 
121  FXComboBox* myEdgeTypesComboBox = nullptr;
122 
124  FXButton* myAddEdgeTypeButton = nullptr;
125 
127  FXButton* myDeleteEdgeTypeButton = nullptr;
128 
130  FXButton* myResetEdgeTypeButton = nullptr;
131  };
132 
133  // ===========================================================================
134  // class LaneTypeParameters
135  // ===========================================================================
136 
137  class LaneTypeParameters : protected FXGroupBox {
140 
141  public:
143  LaneTypeParameters(GNECreateEdgeFrame* createEdgeFrameParent);
144 
147 
150 
152  void showLaneTypeParameters();
153 
155  void hideLaneTypeParameters();
156 
159 
162 
164  void setAttributes(GNEEdge* edge, GNEUndoList* undoList) const;
165 
167  void updateNumLanes(int numLanes);
168 
172  long onCmdSetAttribute(FXObject*, FXSelector, void*);
173 
175  long onCmdOpenAttributeDialog(FXObject*, FXSelector, void*);
176 
178  long onCmdDeleteLaneType(FXObject*, FXSelector, void*);
179 
181  long onCmdResetLaneType(FXObject*, FXSelector, void*);
182 
184 
185  protected:
188 
190  void setAttributeDefaultParameters(FXObject* obj);
191 
193  void setAttributeExistentLaneType(FXObject* obj);
194 
195  private:
198 
200  FXButton* myDeleteLaneTypeButton = nullptr;
201 
203  FXButton* myResetLaneTypeButton = nullptr;
204 
206  FXComboBox* myLaneIndex = nullptr;
207 
209  FXTextField* mySpeed = nullptr;
210 
212  FXButton* myAllowButton = nullptr;
213 
215  FXTextField* myAllow = nullptr;
216 
218  FXButton* myDisallowButton = nullptr;
219 
221  FXTextField* myDisallow = nullptr;
222 
224  FXTextField* myWidth = nullptr;
225 
227  FXButton* myParametersButton = nullptr;
228 
230  FXTextField* myParameters = nullptr;
231 
234  };
235 
236  // ===========================================================================
237  // class EdgeTypeParameters
238  // ===========================================================================
239 
240  class EdgeTypeParameters : protected FXGroupBox {
243 
244  public:
246  EdgeTypeParameters(GNECreateEdgeFrame* createEdgeFrameParent);
247 
250 
252  void showEdgeTypeParameters();
253 
255  void hideEdgeTypeParameters();
256 
259 
262 
264  void setEdgeType(GNEEdgeType* edgeType, bool showID);
265 
267  void setTemplateValues();
268 
272  long onCmdSetAttribute(FXObject* obj, FXSelector, void*);
273 
275  long onCmdOpenAttributeDialog(FXObject* obj, FXSelector, void*);
276 
278 
279  protected:
282 
284  void setAttributeDefaultParameters(FXObject* obj);
285 
287  void setAttributeExistentEdgeType(FXObject* obj);
288 
289  private:
292 
294  FXHorizontalFrame* myHorizontalFrameID;
295 
296  // @brief label frame for ID/template
297  FXLabel* myLabelID;
298 
300  FXTextField* myID = nullptr;
301 
303  FXTextField* myNumLanes = nullptr;
304 
306  FXTextField* mySpeed = nullptr;
307 
309  FXButton* myAllowButton = nullptr;
310 
312  FXTextField* myAllow = nullptr;
313 
315  FXButton* myDisallowButton = nullptr;
316 
318  FXTextField* myDisallow = nullptr;
319 
321  FXTextField* myWidth = nullptr;
322 
324  FXTextField* myPriority = nullptr;
325 
327  FXButton* myParametersButton = nullptr;
328 
330  FXTextField* myParameters = nullptr;
331 
334  };
335 
336  // ===========================================================================
337  // class EdgeTypeSelectorLegend
338  // ===========================================================================
339 
340  class EdgeTypeSelectorLegend : protected FXGroupBox {
341 
342  public:
344  EdgeTypeSelectorLegend(GNECreateEdgeFrame* createEdgeFrameParent);
345 
348  };
349 
354  GNECreateEdgeFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
355 
358 
365  void processClick(const Position& clickedPosition, const GNEViewNetHelper::ObjectsUnderCursor& objectsUnderCursor, const bool oppositeEdge, const bool chainEdge);
366 
368  void abortEdgeCreation();
369 
371  const GNEJunction* getJunctionSource() const;
372 
374  void updateObjectsUnderSnappedCursor(const std::vector<GUIGlObject*>& GUIGlObjects);
375 
377  void show();
378 
380  void hide();
381 
384 
385 protected:
388 
391 
394 
395 private:
398 
401 };
FXButton * myParametersButton
Button for edit generic parameters.
FXTextField * myWidth
textField for width
void hideEdgeTypeParameters()
hide edge parameters
void enableEdgeTypeParameters()
enable edge parameters
LaneTypeParameters * myLaneTypeParameters
lane parameters
FXHorizontalFrame * myHorizontalFrameID
horizontal frame for ID
long onCmdOpenAttributeDialog(FXObject *obj, FXSelector, void *)
Called when the user open attribute dialog.
void showEdgeTypeParameters()
show edge parameters
FXTextField * myNumLanes
textField for numLanes
FXTextField * myID
textField for id
FXButton * myDisallowButton
Button for disallow vehicles.
FXTextField * mySpeed
textField for speed
long onCmdSetAttribute(FXObject *obj, FXSelector, void *)
EdgeTypeParameters(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
void setEdgeType(GNEEdgeType *edgeType, bool showID)
set edgeType
FOX_CONSTRUCTOR(EdgeTypeParameters)
FOX need this.
void setAttributeDefaultParameters(FXObject *obj)
set attribute for default parameters
GNECreateEdgeFrame * myCreateEdgeFrameParent
pointer to createEdgeFrameParent
FXTextField * myParameters
textField for Parameters
FXTextField * myAllow
textField for allow vehicles
void setAttributeExistentEdgeType(FXObject *obj)
set attribute for existent edge type
FXTextField * myPriority
textField for priority
void disableEdgeTypeParameters()
disable edge parameters
FXTextField * myDisallow
textField for disallow vehicles
FXButton * myAllowButton
Button for allow vehicles.
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
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
FXButton * myResetEdgeTypeButton
button for reset edge type
FXRadioButton * myUseDefaultEdgeType
create default edge
void refreshEdgeTypeSelector()
refresh edge type selector
long onCmdRadioButton(FXObject *, FXSelector, void *)
GNEEdgeType * myEdgeTypeSelected
selected edgeType
void fillDefaultParameters()
fill default parameters
EdgeTypeSelector(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
GNECreateEdgeFrame * myCreateEdgeFrameParent
pointer to createEdgeFrameParent
void clearEdgeTypeSelected()
clear edgeType selected
long onCmdResetEdgeType(FXObject *, FXSelector, void *)
Called when the user press button for reset edge type.
FXButton * myAddEdgeTypeButton
button for create new edge type
EdgeTypeSelectorLegend(GNECreateEdgeFrame *createEdgeFrameParent)
constructor
long onCmdOpenAttributeDialog(FXObject *, FXSelector, void *)
Called when the user open attribute dialog.
void disableLaneTypeParameters()
disable lane parameters
void setAttributeExistentLaneType(FXObject *obj)
set attribute for existent lane type
FXTextField * mySpeed
textField for speed
long onCmdResetLaneType(FXObject *, FXSelector, void *)
Called when the user press button for reset lane type.
long onCmdSetAttribute(FXObject *, FXSelector, void *)
LaneTypeParameters(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
FXTextField * myDisallow
textField for disallow vehicles
void updateNumLanes(int numLanes)
update numLanes
FXTextField * myAllow
textField for allow vehicles
long onCmdDeleteLaneType(FXObject *, FXSelector, void *)
Called when the user press button for delete lane type.
void setAttributes(GNEEdge *edge, GNEUndoList *undoList) const
set attributes
FXButton * myResetLaneTypeButton
button for reset lane type
FXComboBox * myLaneIndex
ComboBox for laneIndex.
FXTextField * myWidth
textField for width
FXButton * myDisallowButton
Button for disallow vehicles.
void enableLaneTypeParameters()
enable lane parameters
LaneTypeParameters * myLaneTypeParameters
lane parameters
FXButton * myDeleteLaneTypeButton
button for delete lane type
FXButton * myParametersButton
Button for edit generic parameters.
FOX_CONSTRUCTOR(LaneTypeParameters)
FOX need this.
FXTextField * myParameters
textField for Parameters
void refreshLaneTypeParameters()
refresh lane paramters
GNECreateEdgeFrame * myCreateEdgeFrameParent
pointer to createEdgeFrameParent
FXButton * myAllowButton
Button for allow vehicles.
void setAttributeDefaultParameters(FXObject *obj)
set attribute for default parameters
void hideLaneTypeParameters()
hide lane parameters
void showLaneTypeParameters()
show lane parameters
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
getcustom edge selector
void abortEdgeCreation()
abort current edge creation
void show()
show create edge frame
GNECreateEdgeFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
void updateObjectsUnderSnappedCursor(const std::vector< GUIGlObject * > &GUIGlObjects)
update objects under snapped cursor
EdgeTypeParameters * myEdgeTypeParameters
edge parameters
const GNEJunction * getJunctionSource() const
get junction source for new edge
~GNECreateEdgeFrame()
Destructor.
EdgeTypeSelectorLegend * myEdgeTypeSelectorLegend
edge selector legend
GNEJunction * myCreateEdgeSource
source junction for new edge
GNEViewNetHelper::ObjectsUnderCursor myObjectsUnderSnappedCursor
objects under snapped cursor
void hide()
hide create edge frame
EdgeTypeSelector * myEdgeTypeSelector
custom edge selector
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:49
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:36