Eclipse SUMO - Simulation of Urban MObility
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
GNECreateEdgeFrame.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2025 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// class declaration
27// ===========================================================================
28
29class GNEEdgeType;
31
32// ===========================================================================
33// class definitions
34// ===========================================================================
35
37
38public:
39
40 // ===========================================================================
41 // class EdgeTypeSelector
42 // ===========================================================================
43
47
48 public:
50 EdgeTypeSelector(GNECreateEdgeFrame* createEdgeFrameParent);
51
54
57
59 void updateIDinComboBox(const std::string& oldID, const std::string& newID);
60
62 bool useDefaultEdgeType() const;
63
65 bool useDefaultEdgeTypeShort() const;
66
68 bool useEdgeTemplate() const;
69
72
75
78
80 bool isNoPedestriansEnabled() const;
81
83 bool isAddSidewalkEnabled() const;
84
86 bool isAddBikelaneEnabled() const;
87
90
92 void setCurrentEdgeType(const GNEEdgeType* edgeType);
93
95 void useTemplate();
96
100 long onCmdRadioButton(FXObject*, FXSelector, void*);
101
103 long onCmdAddEdgeType(FXObject*, FXSelector, void*);
104
106 long onCmdDeleteEdgeType(FXObject*, FXSelector, void*);
107
109 long onCmdSelectEdgeTypeOrTemplate(FXObject*, FXSelector, void*);
110
112 long onCmdCreateFromTemplate(FXObject*, FXSelector, void*);
113
115 long onUpdCheckButtons(FXObject*, FXSelector, void*);
116
118
119 protected:
122
124 void fillComboBox();
125
126 private:
129
132
135
138
140 FXRadioButton* myCreateDefaultEdgeType = nullptr;
141
143 FXRadioButton* myCreateDefaultShortEdgeType = nullptr;
144
146 FXCheckButton* myNoPedestriansCheckButton = nullptr;
147
149 FXCheckButton* myAddSidewalkCheckButton = nullptr;
150
152 FXCheckButton* myAddBikelaneCheckButton = nullptr;
153
155 FXRadioButton* myCreateCustomEdgeType = nullptr;
156
159
161 FXButton* myAddEdgeTypeButton = nullptr;
162
164 FXButton* myDeleteEdgeTypeButton = nullptr;
165
167 FXButton* myCreateFromTemplate = nullptr;
168 };
169
170 // ===========================================================================
171 // class LaneTypeSelector
172 // ===========================================================================
173
177
178 public:
180 LaneTypeSelector(GNECreateEdgeFrame* createEdgeFrameParent);
181
184
187
190
193
197 long onCmdAddLaneType(FXObject*, FXSelector, void*);
198
200 long onCmdDeleteLaneType(FXObject*, FXSelector, void*);
201
203 long onCmdSelectLaneType(FXObject*, FXSelector, void*);
204
206
207 protected:
210
212 void updateComboBox();
213
214 private:
217
222
224 FXButton* myAddLaneTypeButton = nullptr;
225
227 FXButton* myDeleteLaneTypeButton = nullptr;
228 };
229
230 // ===========================================================================
231 // class Legend
232 // ===========================================================================
233
234 class Legend : public MFXGroupBoxModule {
235
236 public:
238 Legend(GNECreateEdgeFrame* createEdgeFrameParent);
239
241 ~Legend();
242 };
243
248 GNECreateEdgeFrame(GNEViewParent* viewParent, GNEViewNet* viewNet);
249
252
259 void processClick(const Position& clickedPosition, const GNEViewNetHelper::ViewObjectsSelector& viewObjects, const bool oppositeEdge, const bool chainEdge);
260
262 void abortEdgeCreation();
263
265 const GNEJunction* getJunctionSource() const;
266
268 void show();
269
271 void hide();
272
275
278
281
284
286 void setUseEdgeTemplate();
287
288protected:
291
294
297
300
303
305 void disablePedestrians(GNEEdge* edge) const;
306
308 void addSidewalk(GNEEdge* edge, const std::string& sidewalkWidth) const;
309
311 void addBikelane(GNEEdge* edge, const std::string& bikelaneWidth) const;
312
313private:
316};
GNEEdgeType * getEdgeTypeSelected() const
get edgeType selected
FXRadioButton * myCreateDefaultShortEdgeType
create default edge short
GNEEdgeType * getDefaultEdgeType() const
get default edgeType
bool useEdgeTemplate() const
check if we have to use edge template
bool useDefaultEdgeTypeShort() const
check if we're using default edge type short
long onUpdCheckButtons(FXObject *, FXSelector, void *)
Called when check buttons are updated.
FXCheckButton * myAddBikelaneCheckButton
add bike check button
bool isAddBikelaneEnabled() const
check if add bikelane check button is enabled
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.
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 * myCreateCustomEdgeType
create custom edge
MFXComboBoxIcon * myEdgeTypesComboBox
ComboBox for edge types.
FXRadioButton * myCreateDefaultEdgeType
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
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
MFXComboBoxIcon * myLaneTypesComboBox
ComboBox for lane types.
void showLaneTypeSelector()
show lane type selector
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
EdgeTypeSelector * getEdgeTypeSelector() const
get edgeType selector
GNEJunction * myJunctionSource
source junction for new edge
void processClick(const Position &clickedPosition, const GNEViewNetHelper::ViewObjectsSelector &viewObjects, const bool oppositeEdge, const bool chainEdge)
handle processClick and set the relative coloring
void abortEdgeCreation()
abort current edge creation
void show()
show create edge frame
GNECreateEdgeFrame::LaneTypeSelector * myLaneTypeSelector
lane type selector
void addSidewalk(GNEEdge *edge, const std::string &sidewalkWidth) const
add sidewalk in the given edge
GNEAttributesEditor * getLaneTypeAttributes() const
get laneType attributes
const GNEJunction * getJunctionSource() const
get junction source for new edge
GNEAttributesEditor * getEdgeTypeAttributes() const
get edgeType attributes
GNEAttributesEditor * myLaneTypeAttributesEditor
internal laneType attributes
GNEAttributesEditor * myEdgeTypeAttributesEditor
internal edgeType attributes
void disablePedestrians(GNEEdge *edge) const
disable pedestrians in the given edge (within undoRedo)
GNECreateEdgeFrame::Legend * myLegend
Legend.
void addBikelane(GNEEdge *edge, const std::string &bikelaneWidth) const
add bikelane in the given edge
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
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.
MFXGroupBoxModule (based on FXGroupBox)
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37