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 /****************************************************************************/
14 // The Widget for create route elements
15 /****************************************************************************/
16 #ifndef GNERouteFrame_h
17 #define GNERouteFrame_h
18 
19 // ===========================================================================
20 // included modules
21 // ===========================================================================
22 #include "GNEFrame.h"
23 
24 // ===========================================================================
25 // class definitions
26 // ===========================================================================
31 class GNERouteFrame : public GNEFrame {
32 
33 public:
34 
36  enum RouteMode {
37  ROUTEMODE_INVALID, // invalid RouteMode
38  ROUTEMODE_CONSECUTIVE_EDGES, // Create route clicking over consecutive edges
39  ROUTEMODE_NONCONSECUTIVE_EDGES // Create route clicking over non consecutive edges
40  };
41 
42  // ===========================================================================
43  // class RouteModeSelector
44  // ===========================================================================
45 
46  class RouteModeSelector : protected FXGroupBox {
49 
50  public:
52  RouteModeSelector(GNERouteFrame* routeFrameParent);
53 
56 
58  const RouteMode& getCurrentRouteMode() const;
59 
62 
64  bool isValidVehicleClass() const;
65 
67  void setCurrentRouteMode(RouteMode routemode);
68 
72  long onCmdSelectRouteMode(FXObject*, FXSelector, void*);
73 
75  long onCmdSelectVClass(FXObject*, FXSelector, void*);
77 
78  protected:
80 
81  private:
84 
86  FXComboBox* myRouteModeMatchBox;
87 
89  FXComboBox* myVClassMatchBox;
90 
93 
96 
99 
101  std::vector<std::pair<RouteMode, std::string> > myRouteModesStrings;
102  };
103 
104  // ===========================================================================
105  // class ConsecutiveEdges
106  // ===========================================================================
107 
108  class ConsecutiveEdges : protected FXGroupBox {
111 
112  public:
114  ConsecutiveEdges(GNERouteFrame* routeFrameParent);
115 
118 
121 
124 
126  bool addEdge(GNEEdge* edge);
127 
129  void refreshEdgeCandidates();
130 
132  void clearEdges();
133 
135  const std::vector<GNEEdge*>& getRouteEdges() const;
136 
140  long onCmdCreateRoute(FXObject*, FXSelector, void*);
141 
143  long onCmdAbortRoute(FXObject*, FXSelector, void*);
144 
146  long onCmdRemoveLastRouteEdge(FXObject*, FXSelector, void*);
148 
149  protected:
151 
152 
153  void updateInfoRouteLabel();
154 
155  private:
158 
161 
164 
167 
170 
172  std::vector<GNEEdge*> myRouteEdges;
173  };
174 
175  // ===========================================================================
176  // class NonConsecutiveEdges
177  // ===========================================================================
178 
179  class NonConsecutiveEdges : protected FXGroupBox {
182 
183  public:
185  NonConsecutiveEdges(GNERouteFrame* routeFrameParent);
186 
189 
192 
195 
197  bool isValid(SUMOVehicleClass vehicleClass) const;
198 
200  std::vector<GNEEdge*> getSelectedEdges() const;
201 
203  bool addEdge(GNEEdge* edge);
204 
206  void clearEdges();
207 
209  const std::vector<GNEEdge*>& getTemporalRoute() const;
210 
214  long onCmdCreateRoute(FXObject*, FXSelector, void*);
215 
217  long onCmdAbortRoute(FXObject*, FXSelector, void*);
218 
220  long onCmdRemoveLastRouteEdge(FXObject*, FXSelector, void*);
222 
223  protected:
225 
226 
227  void updateInfoRouteLabel();
228 
229  private:
232 
235 
237  std::vector<GNEEdge*> mySelectedEdges;
238 
240  std::vector<GNEEdge*> myTemporalRoute;
241 
244 
247 
250  };
251 
256  GNERouteFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
257 
259  ~GNERouteFrame();
260 
262  void show();
263 
265  void hide();
266 
268  void handleEdgeClick(GNEEdge* clickedEdge);
269 
271  void hotkeyEnter();
272 
274  void hotkeyBackSpace();
275 
277  void hotkeyEsc();
278 
280  void drawTemporalRoute() const;
281 
282 private:
285 
288 
291 
294 };
295 
296 
297 #endif
298 
299 /****************************************************************************/
300 
GNERouteFrame::drawTemporalRoute
void drawTemporalRoute() const
draw temporal route
Definition: GNERouteFrame.cpp:859
GNERouteFrame::ConsecutiveEdges::myRouteEdges
std::vector< GNEEdge * > myRouteEdges
vector with current route edges
Definition: GNERouteFrame.h:172
SUMOVehicleClass
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
Definition: SUMOVehicleClass.h:133
GNERouteFrame::ConsecutiveEdges::myRouteFrameParent
GNERouteFrame * myRouteFrameParent
pointer to Frame Parent
Definition: GNERouteFrame.h:157
GNERouteFrame::NonConsecutiveEdges::onCmdCreateRoute
long onCmdCreateRoute(FXObject *, FXSelector, void *)
Definition: GNERouteFrame.cpp:613
GNERouteFrame::hotkeyEnter
void hotkeyEnter()
function called when user press ENTER key
Definition: GNERouteFrame.cpp:796
GNERouteFrame::NonConsecutiveEdges
Definition: GNERouteFrame.h:179
GNERouteFrame::RouteModeSelector::setCurrentRouteMode
void setCurrentRouteMode(RouteMode routemode)
set current route mode type manually
Definition: GNERouteFrame.cpp:129
GNERouteFrame::NonConsecutiveEdges::hideNonConsecutiveEdgesModul
void hideNonConsecutiveEdgesModul()
show NonConsecutiveEdges
Definition: GNERouteFrame.cpp:541
GNERouteFrame::RouteModeSelector::myCurrentRouteMode
RouteMode myCurrentRouteMode
current selected route mode
Definition: GNERouteFrame.h:92
GNERouteFrame::hotkeyEsc
void hotkeyEsc()
function called when user press ESC key
Definition: GNERouteFrame.cpp:838
GNERouteFrame::NonConsecutiveEdges::getSelectedEdges
std::vector< GNEEdge * > getSelectedEdges() const
get current selected edgesm
Definition: GNERouteFrame.cpp:547
GNERouteFrame::RouteModeSelector::~RouteModeSelector
~RouteModeSelector()
destructor
Definition: GNERouteFrame.cpp:107
GNERouteFrame::NonConsecutiveEdges::NonConsecutiveEdges
NonConsecutiveEdges(GNERouteFrame *routeFrameParent)
FOX-declaration.
Definition: GNERouteFrame.cpp:506
GNERouteFrame::ConsecutiveEdges::myRemoveLastInsertedEdge
FXButton * myRemoveLastInsertedEdge
button for removing last inserted edge
Definition: GNERouteFrame.h:169
GNEFrameAttributesModuls::AttributesCreator
Definition: GNEFrameAttributesModuls.h:148
GNERouteFrame::ConsecutiveEdges::updateInfoRouteLabel
void updateInfoRouteLabel()
update InfoRouteLabel
Definition: GNERouteFrame.cpp:480
GNERouteFrame::NonConsecutiveEdges::myAbortCreationButton
FXButton * myAbortCreationButton
button for abort route creation
Definition: GNERouteFrame.h:246
GNERouteFrame::ConsecutiveEdges::myAbortCreationButton
FXButton * myAbortCreationButton
@bief FXButton for abort creating route
Definition: GNERouteFrame.h:166
GNERouteFrame::ConsecutiveEdges::onCmdCreateRoute
long onCmdCreateRoute(FXObject *, FXSelector, void *)
Definition: GNERouteFrame.cpp:384
GNEFrame
Definition: GNEFrame.h:34
GNERouteFrame::myRouteModeSelector
RouteModeSelector * myRouteModeSelector
route mode selector
Definition: GNERouteFrame.h:284
GNEViewNet
Definition: GNEViewNet.h:42
GNERouteFrame::ConsecutiveEdges::~ConsecutiveEdges
~ConsecutiveEdges()
destructor
Definition: GNERouteFrame.cpp:269
GNERouteFrame::RouteModeSelector::onCmdSelectRouteMode
long onCmdSelectRouteMode(FXObject *, FXSelector, void *)
Definition: GNERouteFrame.cpp:162
GNERouteFrame::myNonConsecutiveEdges
NonConsecutiveEdges * myNonConsecutiveEdges
Create routes using non consecutive edges modul.
Definition: GNERouteFrame.h:293
GNERouteFrame::RouteModeSelector::myRouteModeMatchBox
FXComboBox * myRouteModeMatchBox
comboBox with the list of route modes
Definition: GNERouteFrame.h:86
GNERouteFrame::ConsecutiveEdges::getRouteEdges
const std::vector< GNEEdge * > & getRouteEdges() const
get temporal route
Definition: GNERouteFrame.cpp:378
GNERouteFrame::NonConsecutiveEdges::myRemoveLastInsertedEdge
FXButton * myRemoveLastInsertedEdge
button for removing last inserted edge
Definition: GNERouteFrame.h:249
GNEEdge
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:51
GNERouteFrame::NonConsecutiveEdges::clearEdges
void clearEdges()
clear edges (and restore colors)
Definition: GNERouteFrame.cpp:587
GNERouteFrame::show
void show()
show delete frame
Definition: GNERouteFrame.cpp:750
GNERouteFrame::NonConsecutiveEdges::myFinishCreationButton
FXButton * myFinishCreationButton
button for finish route creation
Definition: GNERouteFrame.h:243
GNERouteFrame::ConsecutiveEdges::myCreateRouteButton
FXButton * myCreateRouteButton
FXButton for create routes.
Definition: GNERouteFrame.h:163
GNERouteFrame::RouteModeSelector::getCurrentVehicleClass
SUMOVehicleClass getCurrentVehicleClass() const
get current selected VClass
Definition: GNERouteFrame.cpp:117
GNERouteFrame::RouteModeSelector::myRouteFrameParent
GNERouteFrame * myRouteFrameParent
pointer to Frame Parent
Definition: GNERouteFrame.h:83
GNERouteFrame::myRouteAttributes
GNEFrameAttributesModuls::AttributesCreator * myRouteAttributes
internal additional attributes
Definition: GNERouteFrame.h:287
GNERouteFrame::ConsecutiveEdges::showConsecutiveEdgesModul
void showConsecutiveEdgesModul()
show ConsecutiveEdges modul
Definition: GNERouteFrame.cpp:273
GNERouteFrame
Definition: GNERouteFrame.h:31
GNERouteFrame::NonConsecutiveEdges::myRouteFrameParent
GNERouteFrame * myRouteFrameParent
pointer to Vehicle Frame Parent
Definition: GNERouteFrame.h:231
GNERouteFrame::hotkeyBackSpace
void hotkeyBackSpace()
function called when user press BACKSPACE key
Definition: GNERouteFrame.cpp:817
GNERouteFrame::RouteModeSelector::getCurrentRouteMode
const RouteMode & getCurrentRouteMode() const
get current route mode
Definition: GNERouteFrame.cpp:111
FOX_CONSTRUCTOR
#define FOX_CONSTRUCTOR(classname)
Definition: config.h:13
GNERouteFrame::ROUTEMODE_INVALID
@ ROUTEMODE_INVALID
Definition: GNERouteFrame.h:37
GNERouteFrame::NonConsecutiveEdges::onCmdRemoveLastRouteEdge
long onCmdRemoveLastRouteEdge(FXObject *, FXSelector, void *)
Called when the user click over button "Remove las inserted edge".
Definition: GNERouteFrame.cpp:670
GNERouteFrame::ConsecutiveEdges
Definition: GNERouteFrame.h:108
GNERouteFrame::ConsecutiveEdges::onCmdRemoveLastRouteEdge
long onCmdRemoveLastRouteEdge(FXObject *, FXSelector, void *)
Called when the user click over button "Remove las inserted edge".
Definition: GNERouteFrame.cpp:440
GNERouteFrame::RouteMode
RouteMode
route creation modes
Definition: GNERouteFrame.h:36
GNERouteFrame::RouteModeSelector::myVClassMatchBox
FXComboBox * myVClassMatchBox
comboBox with the list of VClass
Definition: GNERouteFrame.h:89
GNERouteFrame::NonConsecutiveEdges::mySelectedEdges
std::vector< GNEEdge * > mySelectedEdges
current selected edges
Definition: GNERouteFrame.h:237
GNERouteFrame::NonConsecutiveEdges::myTemporalRoute
std::vector< GNEEdge * > myTemporalRoute
vector with temporal route edges
Definition: GNERouteFrame.h:240
GNERouteFrame::RouteModeSelector::RouteModeSelector
RouteModeSelector(GNERouteFrame *routeFrameParent)
FOX-declaration.
Definition: GNERouteFrame.cpp:75
GNERouteFrame::RouteModeSelector::isValidVehicleClass
bool isValidVehicleClass() const
check if current VClass is Valid
Definition: GNERouteFrame.cpp:123
GNERouteFrame::myConsecutiveEdges
ConsecutiveEdges * myConsecutiveEdges
Create routes using consecutive edges modul.
Definition: GNERouteFrame.h:290
GNERouteFrame::NonConsecutiveEdges::getTemporalRoute
const std::vector< GNEEdge * > & getTemporalRoute() const
get temporal route
Definition: GNERouteFrame.cpp:601
GNERouteFrame::ConsecutiveEdges::refreshEdgeCandidates
void refreshEdgeCandidates()
refresh edge candidates
Definition: GNERouteFrame.cpp:332
GNERouteFrame::ConsecutiveEdges::hideConsecutiveEdgesModul
void hideConsecutiveEdgesModul()
hide ConsecutiveEdges modul
Definition: GNERouteFrame.cpp:282
GNERouteFrame::ConsecutiveEdges::ConsecutiveEdges
ConsecutiveEdges(GNERouteFrame *routeFrameParent)
FOX-declaration.
Definition: GNERouteFrame.cpp:250
GNERouteFrame::RouteModeSelector::myCurrentVehicleClass
SUMOVehicleClass myCurrentVehicleClass
current selected VClass
Definition: GNERouteFrame.h:95
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:291
GNERouteFrame::~GNERouteFrame
~GNERouteFrame()
Destructor.
Definition: GNERouteFrame.cpp:746
GNERouteFrame::NonConsecutiveEdges::myInfoRouteLabel
FXLabel * myInfoRouteLabel
label with route info
Definition: GNERouteFrame.h:234
GNERouteFrame::handleEdgeClick
void handleEdgeClick(GNEEdge *clickedEdge)
handle edge click
Definition: GNERouteFrame.cpp:765
GNERouteFrame::ROUTEMODE_NONCONSECUTIVE_EDGES
@ ROUTEMODE_NONCONSECUTIVE_EDGES
Definition: GNERouteFrame.h:39
GNERouteFrame::ROUTEMODE_CONSECUTIVE_EDGES
@ ROUTEMODE_CONSECUTIVE_EDGES
Definition: GNERouteFrame.h:38
GNERouteFrame::ConsecutiveEdges::myInfoRouteLabel
FXLabel * myInfoRouteLabel
label with route info
Definition: GNERouteFrame.h:160
GNERouteFrame::GNERouteFrame
GNERouteFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
Definition: GNERouteFrame.cpp:726
GNERouteFrame::NonConsecutiveEdges::updateInfoRouteLabel
void updateInfoRouteLabel()
update InfoRouteLabel
Definition: GNERouteFrame.cpp:700
GNERouteFrame::ConsecutiveEdges::onCmdAbortRoute
long onCmdAbortRoute(FXObject *, FXSelector, void *)
Called when the user press create route button.
Definition: GNERouteFrame.cpp:419
GNERouteFrame::ConsecutiveEdges::clearEdges
void clearEdges()
clear edges (and restore colors)
Definition: GNERouteFrame.cpp:359
GNERouteFrame::NonConsecutiveEdges::onCmdAbortRoute
long onCmdAbortRoute(FXObject *, FXSelector, void *)
Called when the user click over button "Abort route creation".
Definition: GNERouteFrame.cpp:649
GNERouteFrame::NonConsecutiveEdges::~NonConsecutiveEdges
~NonConsecutiveEdges()
destructor
Definition: GNERouteFrame.cpp:523
GNERouteFrame::hide
void hide()
hide delete frame
Definition: GNERouteFrame.cpp:759
GNERouteFrame::RouteModeSelector
Definition: GNERouteFrame.h:46
GNERouteFrame::RouteModeSelector::myValidVClass
bool myValidVClass
flag to check if VClass is Valid
Definition: GNERouteFrame.h:98
GNEFrame.h
GNERouteFrame::NonConsecutiveEdges::showNonConsecutiveEdgesModul
void showNonConsecutiveEdgesModul()
show NonConsecutiveEdges
Definition: GNERouteFrame.cpp:528
GNERouteFrame::RouteModeSelector::onCmdSelectVClass
long onCmdSelectVClass(FXObject *, FXSelector, void *)
Called when the user select another VClass.
Definition: GNERouteFrame.cpp:203
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:101
GNERouteFrame::NonConsecutiveEdges::isValid
bool isValid(SUMOVehicleClass vehicleClass) const
check if from and to edges create a valid route
Definition: GNERouteFrame.cpp:607
GNERouteFrame::NonConsecutiveEdges::addEdge
bool addEdge(GNEEdge *edge)
set edge from (and change color)
Definition: GNERouteFrame.cpp:553