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 
120 
123 
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 
195 
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 
GNERouteFrame::drawTemporalRoute
void drawTemporalRoute() const
draw temporal route
Definition: GNERouteFrame.cpp:850
GNERouteFrame::ConsecutiveEdges::myRouteEdges
std::vector< GNEEdge * > myRouteEdges
vector with current route edges
Definition: GNERouteFrame.h:175
SUMOVehicleClass
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
Definition: SUMOVehicleClass.h:134
GNERouteFrame::ConsecutiveEdges::myRouteFrameParent
GNERouteFrame * myRouteFrameParent
pointer to Frame Parent
Definition: GNERouteFrame.h:160
GNERouteFrame::NonConsecutiveEdges::onCmdCreateRoute
long onCmdCreateRoute(FXObject *, FXSelector, void *)
Definition: GNERouteFrame.cpp:608
GNERouteFrame::hotkeyEnter
void hotkeyEnter()
function called when user press ENTER key
Definition: GNERouteFrame.cpp:787
GNERouteFrame::NonConsecutiveEdges
Definition: GNERouteFrame.h:182
GNERouteFrame::RouteModeSelector::setCurrentRouteMode
void setCurrentRouteMode(RouteMode routemode)
set current route mode type manually
Definition: GNERouteFrame.cpp:130
GNERouteFrame::NonConsecutiveEdges::hideNonConsecutiveEdgesModul
void hideNonConsecutiveEdgesModul()
show NonConsecutiveEdges
Definition: GNERouteFrame.cpp:536
GNERouteFrame::RouteModeSelector::myCurrentRouteMode
RouteMode myCurrentRouteMode
current selected route mode
Definition: GNERouteFrame.h:94
GNERouteFrame::hotkeyEsc
void hotkeyEsc()
function called when user press ESC key
Definition: GNERouteFrame.cpp:829
GNERouteFrame::NonConsecutiveEdges::getSelectedEdges
std::vector< GNEEdge * > getSelectedEdges() const
get current selected edgesm
Definition: GNERouteFrame.cpp:542
GNERouteFrame::RouteModeSelector::~RouteModeSelector
~RouteModeSelector()
destructor
Definition: GNERouteFrame.cpp:108
GNERouteFrame::ConsecutiveEdges::myRemoveLastInsertedEdge
FXButton * myRemoveLastInsertedEdge
button for removing last inserted edge
Definition: GNERouteFrame.h:172
GNEFrameAttributesModuls::AttributesCreator
Definition: GNEFrameAttributesModuls.h:157
GNERouteFrame::ConsecutiveEdges::updateInfoRouteLabel
void updateInfoRouteLabel()
update InfoRouteLabel
Definition: GNERouteFrame.cpp:475
GNERouteFrame::NonConsecutiveEdges::myAbortCreationButton
FXButton * myAbortCreationButton
button for abort route creation
Definition: GNERouteFrame.h:250
GNERouteFrame::ConsecutiveEdges::myAbortCreationButton
FXButton * myAbortCreationButton
@bief FXButton for abort creating route
Definition: GNERouteFrame.h:169
GNERouteFrame::ConsecutiveEdges::ConsecutiveEdges
ConsecutiveEdges()
FOX needs this.
Definition: GNERouteFrame.h:153
GNERouteFrame::ConsecutiveEdges::onCmdCreateRoute
long onCmdCreateRoute(FXObject *, FXSelector, void *)
Definition: GNERouteFrame.cpp:385
GNEFrame
Definition: GNEFrame.h:35
GNERouteFrame::myRouteModeSelector
RouteModeSelector * myRouteModeSelector
route mode selector
Definition: GNERouteFrame.h:288
GNEViewNet
Definition: GNEViewNet.h:43
GNERouteFrame::ConsecutiveEdges::~ConsecutiveEdges
~ConsecutiveEdges()
destructor
Definition: GNERouteFrame.cpp:270
GNERouteFrame::RouteModeSelector::onCmdSelectRouteMode
long onCmdSelectRouteMode(FXObject *, FXSelector, void *)
Definition: GNERouteFrame.cpp:163
GNERouteFrame::myNonConsecutiveEdges
NonConsecutiveEdges * myNonConsecutiveEdges
Create routes using non consecutive edges modul.
Definition: GNERouteFrame.h:297
GNERouteFrame::RouteModeSelector::myRouteModeMatchBox
FXComboBox * myRouteModeMatchBox
comboBox with the list of route modes
Definition: GNERouteFrame.h:88
GNERouteFrame::ConsecutiveEdges::getRouteEdges
const std::vector< GNEEdge * > & getRouteEdges() const
get temporal route
Definition: GNERouteFrame.cpp:379
GNERouteFrame::NonConsecutiveEdges::myRemoveLastInsertedEdge
FXButton * myRemoveLastInsertedEdge
button for removing last inserted edge
Definition: GNERouteFrame.h:253
GNEEdge
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:50
GNERouteFrame::NonConsecutiveEdges::clearEdges
void clearEdges()
clear edges (and restore colors)
Definition: GNERouteFrame.cpp:582
GNERouteFrame::show
void show()
show delete frame
Definition: GNERouteFrame.cpp:741
GNERouteFrame::NonConsecutiveEdges::myFinishCreationButton
FXButton * myFinishCreationButton
button for finish route creation
Definition: GNERouteFrame.h:247
GNERouteFrame::ConsecutiveEdges::myCreateRouteButton
FXButton * myCreateRouteButton
FXButton for create routes.
Definition: GNERouteFrame.h:166
GNERouteFrame::RouteModeSelector::getCurrentVehicleClass
SUMOVehicleClass getCurrentVehicleClass() const
get current selected VClass
Definition: GNERouteFrame.cpp:118
GNERouteFrame::RouteModeSelector::myRouteFrameParent
GNERouteFrame * myRouteFrameParent
pointer to Frame Parent
Definition: GNERouteFrame.h:85
GNERouteFrame::myRouteAttributes
GNEFrameAttributesModuls::AttributesCreator * myRouteAttributes
internal additional attributes
Definition: GNERouteFrame.h:291
GNERouteFrame::ConsecutiveEdges::showConsecutiveEdgesModul
void showConsecutiveEdgesModul()
show ConsecutiveEdges modul
Definition: GNERouteFrame.cpp:274
GNERouteFrame
Definition: GNERouteFrame.h:32
GNERouteFrame::NonConsecutiveEdges::myRouteFrameParent
GNERouteFrame * myRouteFrameParent
pointer to Vehicle Frame Parent
Definition: GNERouteFrame.h:235
GNERouteFrame::hotkeyBackSpace
void hotkeyBackSpace()
function called when user press BACKSPACE key
Definition: GNERouteFrame.cpp:808
GNERouteFrame::RouteModeSelector::getCurrentRouteMode
const RouteMode & getCurrentRouteMode() const
get current route mode
Definition: GNERouteFrame.cpp:112
GNERouteFrame::ROUTEMODE_INVALID
Definition: GNERouteFrame.h:38
GNERouteFrame::NonConsecutiveEdges::NonConsecutiveEdges
NonConsecutiveEdges()
FOX needs this.
Definition: GNERouteFrame.h:228
GNERouteFrame::NonConsecutiveEdges::onCmdRemoveLastRouteEdge
long onCmdRemoveLastRouteEdge(FXObject *, FXSelector, void *)
Called when the user click over button "Remove las inserted edge".
Definition: GNERouteFrame.cpp:661
GNERouteFrame::ConsecutiveEdges
Definition: GNERouteFrame.h:110
GNERouteFrame::RouteModeSelector::RouteModeSelector
RouteModeSelector()
FOX needs this.
Definition: GNERouteFrame.h:81
GNERouteFrame::ConsecutiveEdges::onCmdRemoveLastRouteEdge
long onCmdRemoveLastRouteEdge(FXObject *, FXSelector, void *)
Called when the user click over button "Remove las inserted edge".
Definition: GNERouteFrame.cpp:435
GNERouteFrame::RouteMode
RouteMode
route creation modes
Definition: GNERouteFrame.h:37
GNERouteFrame::RouteModeSelector::myVClassMatchBox
FXComboBox * myVClassMatchBox
comboBox with the list of VClass
Definition: GNERouteFrame.h:91
GNERouteFrame::NonConsecutiveEdges::mySelectedEdges
std::vector< GNEEdge * > mySelectedEdges
current selected edges
Definition: GNERouteFrame.h:241
GNERouteFrame::NonConsecutiveEdges::myTemporalRoute
std::vector< GNEEdge * > myTemporalRoute
vector with temporal route edges
Definition: GNERouteFrame.h:244
GNERouteFrame::RouteModeSelector::isValidVehicleClass
bool isValidVehicleClass() const
check if current VClass is Valid
Definition: GNERouteFrame.cpp:124
GNERouteFrame::myConsecutiveEdges
ConsecutiveEdges * myConsecutiveEdges
Create routes using consecutive edges modul.
Definition: GNERouteFrame.h:294
GNERouteFrame::NonConsecutiveEdges::getTemporalRoute
const std::vector< GNEEdge * > & getTemporalRoute() const
get temporal route
Definition: GNERouteFrame.cpp:596
GNERouteFrame::ConsecutiveEdges::refreshEdgeCandidates
void refreshEdgeCandidates()
refresh edge candidates
Definition: GNERouteFrame.cpp:333
GNERouteFrame::ConsecutiveEdges::hideConsecutiveEdgesModul
void hideConsecutiveEdgesModul()
hide ConsecutiveEdges modul
Definition: GNERouteFrame.cpp:283
GNERouteFrame::RouteModeSelector::myCurrentVehicleClass
SUMOVehicleClass myCurrentVehicleClass
current selected VClass
Definition: GNERouteFrame.h:97
GNERouteFrame::ConsecutiveEdges::addEdge
bool addEdge(GNEEdge *edge)
add edge to current route (note: edge must be included in set of candidate edges
Definition: GNERouteFrame.cpp:292
GNERouteFrame::~GNERouteFrame
~GNERouteFrame()
Destructor.
Definition: GNERouteFrame.cpp:737
GNERouteFrame::NonConsecutiveEdges::myInfoRouteLabel
FXLabel * myInfoRouteLabel
label with route info
Definition: GNERouteFrame.h:238
GNERouteFrame::handleEdgeClick
void handleEdgeClick(GNEEdge *clickedEdge)
handle edge click
Definition: GNERouteFrame.cpp:756
GNERouteFrame::ROUTEMODE_NONCONSECUTIVE_EDGES
Definition: GNERouteFrame.h:40
GNERouteFrame::ROUTEMODE_CONSECUTIVE_EDGES
Definition: GNERouteFrame.h:39
GNERouteFrame::ConsecutiveEdges::myInfoRouteLabel
FXLabel * myInfoRouteLabel
label with route info
Definition: GNERouteFrame.h:163
GNERouteFrame::GNERouteFrame
GNERouteFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
Definition: GNERouteFrame.cpp:717
GNERouteFrame::NonConsecutiveEdges::updateInfoRouteLabel
void updateInfoRouteLabel()
update InfoRouteLabel
Definition: GNERouteFrame.cpp:691
GNERouteFrame::ConsecutiveEdges::onCmdAbortRoute
long onCmdAbortRoute(FXObject *, FXSelector, void *)
Called when the user press create route button.
Definition: GNERouteFrame.cpp:414
GNERouteFrame::ConsecutiveEdges::clearEdges
void clearEdges()
clear edges (and restore colors)
Definition: GNERouteFrame.cpp:360
GNERouteFrame::NonConsecutiveEdges::onCmdAbortRoute
long onCmdAbortRoute(FXObject *, FXSelector, void *)
Called when the user click over button "Abort route creation".
Definition: GNERouteFrame.cpp:640
GNERouteFrame::NonConsecutiveEdges::~NonConsecutiveEdges
~NonConsecutiveEdges()
destructor
Definition: GNERouteFrame.cpp:518
GNERouteFrame::hide
void hide()
hide delete frame
Definition: GNERouteFrame.cpp:750
GNERouteFrame::RouteModeSelector
Definition: GNERouteFrame.h:47
GNERouteFrame::RouteModeSelector::myValidVClass
bool myValidVClass
flag to check if VClass is Valid
Definition: GNERouteFrame.h:100
GNEFrame.h
GNERouteFrame::NonConsecutiveEdges::showNonConsecutiveEdgesModul
void showNonConsecutiveEdgesModul()
show NonConsecutiveEdges
Definition: GNERouteFrame.cpp:523
GNERouteFrame::RouteModeSelector::onCmdSelectVClass
long onCmdSelectVClass(FXObject *, FXSelector, void *)
Called when the user select another VClass.
Definition: GNERouteFrame.cpp:204
GNERouteFrame::RouteModeSelector::myRouteModesStrings
std::vector< std::pair< RouteMode, std::string > > myRouteModesStrings
list of Route modes that will be shown in Match Box
Definition: GNERouteFrame.h:103
GNERouteFrame::NonConsecutiveEdges::isValid
bool isValid(SUMOVehicleClass vehicleClass) const
check if from and to edges create a valid route
Definition: GNERouteFrame.cpp:602
GNERouteFrame::NonConsecutiveEdges::addEdge
bool addEdge(GNEEdge *edge)
set edge from (and change color)
Definition: GNERouteFrame.cpp:548