Eclipse SUMO - Simulation of Urban MObility
GNERouteFrame.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-2019 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 // The Widget for create route elements
16 /****************************************************************************/
17 #ifndef GNERouteFrame_h
18 #define GNERouteFrame_h
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include "GNEFrame.h"
24 
25 // ===========================================================================
26 // class definitions
27 // ===========================================================================
32 class GNERouteFrame : public GNEFrame {
33 
34 public:
35 
37  enum RouteMode {
38  ROUTEMODE_INVALID, // invalid RouteMode
39  ROUTEMODE_CONSECUTIVE_EDGES, // Create route clicking over consecutive edges
40  ROUTEMODE_NONCONSECUTIVE_EDGES // Create route clicking over non consecutive edges
41  };
42 
43  // ===========================================================================
44  // class RouteModeSelector
45  // ===========================================================================
46 
47  class RouteModeSelector : protected FXGroupBox {
50 
51  public:
53  RouteModeSelector(GNERouteFrame* routeFrameParent);
54 
57 
59  const RouteMode& getCurrentRouteMode() const;
60 
63 
65  bool isValidVehicleClass() const;
66 
68  void setCurrentRouteMode(RouteMode routemode);
69 
73  long onCmdSelectRouteMode(FXObject*, FXSelector, void*);
74 
76  long onCmdSelectVClass(FXObject*, FXSelector, void*);
78 
79  protected:
82 
83  private:
86 
88  FXComboBox* myRouteModeMatchBox;
89 
91  FXComboBox* myVClassMatchBox;
92 
95 
98 
101 
103  std::vector<std::pair<RouteMode, std::string> > myRouteModesStrings;
104  };
105 
106  // ===========================================================================
107  // class ConsecutiveEdges
108  // ===========================================================================
109 
110  class ConsecutiveEdges : protected FXGroupBox {
113 
114  public:
116  ConsecutiveEdges(GNERouteFrame* routeFrameParent);
117 
119  ~ConsecutiveEdges();
120 
122  void showConsecutiveEdgesModul();
123 
125  void hideConsecutiveEdgesModul();
126 
128  bool addEdge(GNEEdge* edge);
129 
131  void refreshEdgeCandidates();
132 
134  void clearEdges();
135 
137  const std::vector<GNEEdge*>& getRouteEdges() const;
138 
142  long onCmdCreateRoute(FXObject*, FXSelector, void*);
143 
145  long onCmdAbortRoute(FXObject*, FXSelector, void*);
146 
148  long onCmdRemoveLastRouteEdge(FXObject*, FXSelector, void*);
150 
151  protected:
154 
156  void updateInfoRouteLabel();
157 
158  private:
161 
164 
167 
170 
173 
175  std::vector<GNEEdge*> myRouteEdges;
176  };
177 
178  // ===========================================================================
179  // class NonConsecutiveEdges
180  // ===========================================================================
181 
182  class NonConsecutiveEdges : protected FXGroupBox {
185 
186  public:
188  NonConsecutiveEdges(GNERouteFrame* routeFrameParent);
189 
192 
194  void showNonConsecutiveEdgesModul();
195 
197  void hideNonConsecutiveEdgesModul();
198 
200  bool isValid(SUMOVehicleClass vehicleClass) const;
201 
203  std::vector<GNEEdge*> getSelectedEdges() const;
204 
206  bool addEdge(GNEEdge* edge);
207 
209  void clearEdges();
210 
212  const std::vector<GNEEdge*>& getTemporalRoute() const;
213 
217  long onCmdCreateRoute(FXObject*, FXSelector, void*);
218 
220  long onCmdAbortRoute(FXObject*, FXSelector, void*);
221 
223  long onCmdRemoveLastRouteEdge(FXObject*, FXSelector, void*);
225 
226  protected:
229 
231  void updateInfoRouteLabel();
232 
233  private:
236 
239 
241  std::vector<GNEEdge*> mySelectedEdges;
242 
244  std::vector<GNEEdge*> myTemporalRoute;
245 
248 
251 
254  };
255 
260  GNERouteFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
261 
263  ~GNERouteFrame();
264 
266  void show();
267 
269  void hide();
270 
272  void handleEdgeClick(GNEEdge* clickedEdge);
273 
275  void hotkeyEnter();
276 
278  void hotkeyBackSpace();
279 
281  void hotkeyEsc();
282 
284  void drawTemporalRoute() const;
285 
286 private:
289 
292 
295 
298 };
299 
300 
301 #endif
302 
303 /****************************************************************************/
304 
ConsecutiveEdges()
FOX needs this.
FXButton * myCreateRouteButton
FXButton for create routes.
void hotkeyBackSpace()
function called when user press BACKSPACE key
void hotkeyEsc()
function called when user press ESC key
FXButton * myRemoveLastInsertedEdge
button for removing last inserted edge
long onCmdSelectVClass(FXObject *, FXSelector, void *)
Called when the user select another VClass.
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
FXComboBox * myRouteModeMatchBox
comboBox with the list of route modes
Definition: GNERouteFrame.h:88
RouteMode
route creation modes
Definition: GNERouteFrame.h:37
FXLabel * myInfoRouteLabel
label with route info
void drawTemporalRoute() const
draw temporal route
std::vector< std::pair< RouteMode, std::string > > myRouteModesStrings
list of Route modes that will be shown in Match Box
FXLabel * myInfoRouteLabel
label with route info
NonConsecutiveEdges * myNonConsecutiveEdges
Create routes using non consecutive edges modul.
void show()
show delete frame
GNERouteFrame * myRouteFrameParent
pointer to Vehicle Frame Parent
void handleEdgeClick(GNEEdge *clickedEdge)
handle edge click
GNERouteFrame * myRouteFrameParent
pointer to Frame Parent
Definition: GNERouteFrame.h:85
SUMOVehicleClass myCurrentVehicleClass
current selected VClass
Definition: GNERouteFrame.h:97
FXButton * myAbortCreationButton
FXButton for abort creating route
const RouteMode & getCurrentRouteMode() const
get current route mode
SUMOVehicleClass getCurrentVehicleClass() const
get current selected VClass
ConsecutiveEdges * myConsecutiveEdges
Create routes using consecutive edges modul.
bool isValidVehicleClass() const
check if current VClass is Valid
GNERouteFrame * myRouteFrameParent
pointer to Frame Parent
FXButton * myRemoveLastInsertedEdge
button for removing last inserted edge
FXButton * myFinishCreationButton
button for finish route creation
RouteModeSelector * myRouteModeSelector
route mode selector
GNEFrameAttributesModuls::AttributesCreator * myRouteAttributes
internal additional attributes
std::vector< GNEEdge * > mySelectedEdges
current selected edges
FXButton * myAbortCreationButton
button for abort route creation
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:50
std::vector< GNEEdge * > myTemporalRoute
vector with temporal route edges
void setCurrentRouteMode(RouteMode routemode)
set current route mode type manually
RouteMode myCurrentRouteMode
current selected route mode
Definition: GNERouteFrame.h:94
std::vector< GNEEdge * > myRouteEdges
vector with current route edges
bool myValidVClass
flag to check if VClass is Valid
~GNERouteFrame()
Destructor.
RouteModeSelector()
FOX needs this.
Definition: GNERouteFrame.h:81
FXComboBox * myVClassMatchBox
comboBox with the list of VClass
Definition: GNERouteFrame.h:91
long onCmdSelectRouteMode(FXObject *, FXSelector, void *)
void hotkeyEnter()
function called when user press ENTER key
void hide()
hide delete frame
GNERouteFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.