Eclipse SUMO - Simulation of Urban MObility
GNEAdditionalFrame.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 add additional elements
19 /****************************************************************************/
20 #pragma once
21 
23 
24 
25 // ===========================================================================
26 // class definitions
27 // ===========================================================================
32 class GNEAdditionalFrame : public GNEFrame {
33 
34 public:
35 
36  // ===========================================================================
37  // class SelectorParentLanes
38  // ===========================================================================
39 
40  class SelectorParentLanes : protected FXGroupBox {
43  public:
45  SelectorParentLanes(GNEAdditionalFrame* additionalFrameParent);
46 
49 
52 
55 
57  void startConsecutiveLaneSelector(GNELane* lane, const Position& clickedPosition);
58 
61 
64 
66  bool addSelectedLane(GNELane* lane, const Position& clickedPosition);
67 
70 
72  bool isSelectingLanes() const;
73 
75  bool isShown() const;
76 
78  const std::vector<std::pair<GNELane*, double> >& getSelectedLanes() const;
79 
83  long onCmdStopSelection(FXObject*, FXSelector, void*);
84 
86  long onCmdAbortSelection(FXObject*, FXSelector, void*);
88 
89  protected:
90  FOX_CONSTRUCTOR(SelectorParentLanes)
91 
92  private:
95 
98 
101 
103  std::vector<std::pair<GNELane*, double> > mySelectedLanes;
104 
106  std::vector<GNELane*> myCandidateLanes;
107 
109  bool isLaneSelected(GNELane* lane) const;
110  };
111 
112  // ===========================================================================
113  // class SelectorChildEdges
114  // ===========================================================================
115 
116  class SelectorChildEdges : protected FXGroupBox {
119 
120  public:
122  SelectorChildEdges(GNEAdditionalFrame* additionalFrameParent);
123 
126 
128  std::string getEdgeIdsSelected() const;
129 
131  void showSelectorChildEdgesModul(std::string search = "");
132 
135 
137  void updateUseSelectedEdges();
138 
142  long onCmdUseSelectedEdges(FXObject*, FXSelector, void*);
143 
145  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
146 
148  long onCmdSelectEdge(FXObject*, FXSelector, void*);
149 
151  long onCmdClearSelection(FXObject*, FXSelector, void*);
152 
154  long onCmdInvertSelection(FXObject*, FXSelector, void*);
156 
157  protected:
158  FOX_CONSTRUCTOR(SelectorChildEdges)
159 
160  private:
163 
166 
168  FXList* myList;
169 
171  FXTextField* myEdgesSearch;
172 
175 
178  };
179 
180  // ===========================================================================
181  // class SelectorChildLanes
182  // ===========================================================================
183 
184  class SelectorChildLanes : protected FXGroupBox {
187 
188  public:
190  SelectorChildLanes(GNEAdditionalFrame* additionalFrameParent);
191 
194 
196  std::string getLaneIdsSelected() const;
197 
199  void showSelectorChildLanesModul(std::string search = "");
200 
203 
204  // @brief Update use selectedLanes
205  void updateUseSelectedLanes();
206 
210  long onCmdUseSelectedLanes(FXObject*, FXSelector, void*);
211 
213  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
214 
216  long onCmdSelectLane(FXObject*, FXSelector, void*);
217 
219  long onCmdClearSelection(FXObject*, FXSelector, void*);
220 
222  long onCmdInvertSelection(FXObject*, FXSelector, void*);
224 
225  protected:
226  FOX_CONSTRUCTOR(SelectorChildLanes)
227 
228  private:
231 
234 
236  FXList* myList;
237 
239  FXTextField* myLanesSearch;
240 
243 
246  };
247 
248  // ===========================================================================
249  // class E2MultilaneLaneSelector
250  // ===========================================================================
251 
252  class E2MultilaneLaneSelector : protected FXGroupBox {
255 
256  public:
258  E2MultilaneLaneSelector(GNEAdditionalFrame* additionalFrameParent);
259 
262 
265 
268 
270  bool addLane(GNELane* lane);
271 
274 
276  void updateLaneColors();
277 
280 
282  bool createPath();
283 
285  void abortPathCreation();
286 
288  void removeLastElement();
289 
293  long onCmdCreatePath(FXObject*, FXSelector, void*);
294 
296  long onCmdAbortPathCreation(FXObject*, FXSelector, void*);
297 
299  long onCmdRemoveLastElement(FXObject*, FXSelector, void*);
300 
302  long onCmdShowCandidateLanes(FXObject*, FXSelector, void*);
304 
305  protected:
307  FOX_CONSTRUCTOR(E2MultilaneLaneSelector)
308 
309 
310  void updateInfoRouteLabel();
311 
313  void clearPath();
314 
317 
319  std::vector<std::pair<GNELane*, double> > myLanePath;
320 
323 
326 
329 
332 
334  FXCheckButton* myShowCandidateLanes;
335 
336  private:
339 
342  };
343 
348  GNEAdditionalFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
349 
352 
354  void show();
355 
360  bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor& objectsUnderCursor);
361 
364 
367 
370 
371 protected:
373  void tagSelected();
374 
375 private:
377  std::string generateID(GNENetworkElement* networkElement) const;
378 
380  bool buildAdditionalCommonAttributes(std::map<SumoXMLAttr, std::string>& valuesMap, const GNETagProperties& tagValues);
381 
383  bool buildSlaveAdditional(std::map<SumoXMLAttr, std::string>& valuesMap, GNEAdditional* parent, const GNETagProperties& tagValues);
384 
386  bool buildAdditionalOverEdge(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNETagProperties& tagValues);
387 
389  bool buildAdditionalOverLane(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNETagProperties& tagValues);
390 
392  bool buildAdditionalOverView(std::map<SumoXMLAttr, std::string>& valuesMap, const GNETagProperties& tagValues);
393 
396 
399 
402 
405 
408 
411 
414 
417 };
bool drawCandidateLanesWithSpecialColor() const
draw candidate lanes with special color (Only for candidates, special and conflicted)
long onCmdCreatePath(FXObject *, FXSelector, void *)
void hideE2MultilaneLaneSelectorModul()
show E2MultilaneLaneSelector
GNEAdditionalFrame * myAdditionalFrameParent
current additional frame parent
E2MultilaneLaneSelector(GNEAdditionalFrame *additionalFrameParent)
FOX-declaration.
long onCmdRemoveLastElement(FXObject *, FXSelector, void *)
Called when the user click over button "Remove las inserted lane".
E2MultilaneLaneSelector & operator=(E2MultilaneLaneSelector *)=delete
Invalidated assignment operator.
void drawTemporalE2Multilane(const GUIVisualizationSettings &s) const
draw temporal E2Multilane
FXButton * myRemoveLastInsertedElement
button for removing last inserted element
void showE2MultilaneLaneSelectorModul()
show E2MultilaneLaneSelector
std::vector< std::pair< GNELane *, double > > myLanePath
vector with lanes and clicked positions
FXLabel * myInfoRouteLabel
label with route info
FXButton * myFinishCreationButton
button for finish route creation
void clearPath()
clear lanes (and restore colors)
E2MultilaneLaneSelector(E2MultilaneLaneSelector *)=delete
Invalidated copy constructor.
FXButton * myAbortCreationButton
button for abort route creation
long onCmdShowCandidateLanes(FXObject *, FXSelector, void *)
Called when the user click over check button "show candidate lanes".
FXCheckButton * myShowCandidateLanes
CheckBox for show candidate lanes.
long onCmdAbortPathCreation(FXObject *, FXSelector, void *)
Called when the user click over button "Abort route creation".
long onCmdTypeInSearchBox(FXObject *, FXSelector, void *)
called when user type in search box
void showSelectorChildEdgesModul(std::string search="")
Show SelectorChildEdges Modul.
long onCmdSelectEdge(FXObject *, FXSelector, void *)
called when user select a edge of the list
FXButton * myClearEdgesSelection
button for clear selection
FXButton * myInvertEdgesSelection
button for invert selection
void updateUseSelectedEdges()
Update use selectedEdges.
FXCheckButton * myUseSelectedEdgesCheckButton
CheckBox for selected edges.
long onCmdInvertSelection(FXObject *, FXSelector, void *)
called when invert selection button is pressed
long onCmdClearSelection(FXObject *, FXSelector, void *)
called when clear selection button is pressed
std::string getEdgeIdsSelected() const
get list of selecte id's in string format
FXList * myList
List of SelectorChildEdges.
FXTextField * myEdgesSearch
text field for search edge IDs
SelectorChildEdges(GNEAdditionalFrame *additionalFrameParent)
FOX-declaration.
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additional frame parent
void hideSelectorChildEdgesModul()
hide SelectorChildEdges Modul
long onCmdUseSelectedEdges(FXObject *, FXSelector, void *)
FXList * myList
List of SelectorChildLanes.
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additional frame parent
long onCmdUseSelectedLanes(FXObject *, FXSelector, void *)
void hideSelectorChildLanesModul()
hide SelectorChildLanes Modul
long onCmdClearSelection(FXObject *, FXSelector, void *)
called when clear selection button is pressed
FXTextField * myLanesSearch
text field for search lane IDs
long onCmdTypeInSearchBox(FXObject *, FXSelector, void *)
called when user type in search box
FXButton * clearLanesSelection
button for clear selection
void showSelectorChildLanesModul(std::string search="")
Show list of SelectorChildLanes Modul.
SelectorChildLanes(GNEAdditionalFrame *additionalFrameParent)
FOX-declaration.
long onCmdInvertSelection(FXObject *, FXSelector, void *)
called when invert selection button is pressed
long onCmdSelectLane(FXObject *, FXSelector, void *)
called when user select a lane of the list
FXButton * invertLanesSelection
button for invert selection
FXCheckButton * myUseSelectedLanesCheckButton
CheckBox for selected lanes.
std::string getLaneIdsSelected() const
get list of selecte lane ids in string format
bool isSelectingLanes() const
return true if modul is selecting lane
const std::vector< std::pair< GNELane *, double > > & getSelectedLanes() const
get current selected lanes
void hideSelectorParentLanesModul()
hide SelectorParentLanes
bool isShown() const
return true if modul is shown
bool isLaneSelected(GNELane *lane) const
check if certain lane is selected
long onCmdStopSelection(FXObject *, FXSelector, void *)
FXButton * myAbortSelectingButton
button for abort selecting
std::vector< std::pair< GNELane *, double > > mySelectedLanes
Vector with the selected lanes and the clicked position.
bool stopConsecutiveLaneSelector()
stop selection of consecutive lanes
void removeLastSelectedLane()
remove last added point
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additionalFrameParent
std::vector< GNELane * > myCandidateLanes
Vector with the colored lanes.
long onCmdAbortSelection(FXObject *, FXSelector, void *)
Called when the user press abort selection button.
void startConsecutiveLaneSelector(GNELane *lane, const Position &clickedPosition)
start selection of consecutive lanes
void showSelectorParentLanesModul()
show SelectorParentLanes modul
bool addSelectedLane(GNELane *lane, const Position &clickedPosition)
return true if lane can be selected as consecutive lane
SelectorParentLanes(GNEAdditionalFrame *additionalFrameParent)
FOX-declaration.
FXButton * myStopSelectingButton
button for stop selecting
void abortConsecutiveLaneSelector()
abort selection of consecutive lanes
void showSelectorChildLanesModul()
show selector child lane and update use selected edges/lanes
SelectorChildEdges * mySelectorChildEdges
Modul for select child edges.
GNEAdditionalFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
SelectorParentLanes * mySelectorParentLanes
Modul for select parent lanes (currently only consecutives)
std::string generateID(GNENetworkElement *networkElement) const
generate a ID for an additiona element
bool buildAdditionalOverEdge(std::map< SumoXMLAttr, std::string > &valuesMap, GNELane *lane, const GNETagProperties &tagValues)
build additional over an edge (parent of lane)
bool buildAdditionalCommonAttributes(std::map< SumoXMLAttr, std::string > &valuesMap, const GNETagProperties &tagValues)
build common additional attributes
SelectorChildLanes * mySelectorChildLanes
Modul for select child lanes.
GNEAdditionalFrame::SelectorParentLanes * getConsecutiveLaneSelector() const
get consecutive Lane Selector
bool buildAdditionalOverLane(std::map< SumoXMLAttr, std::string > &valuesMap, GNELane *lane, const GNETagProperties &tagValues)
build additional over a single lane
void tagSelected()
Tag selected in TagSelector.
GNEFrameModuls::SelectorParent * myParentAdditional
Modul for select a single parent additional.
GNEFrameAttributesModuls::NeteditAttributes * myNeteditAttributes
Netedit parameter.
E2MultilaneLaneSelector * myE2MultilaneLaneSelector
Modul for E2Multilane lane selector.
bool buildAdditionalOverView(std::map< SumoXMLAttr, std::string > &valuesMap, const GNETagProperties &tagValues)
build additional over view
GNEFrameModuls::TagSelector * myAdditionalTagSelector
item selector
~GNEAdditionalFrame()
Destructor.
GNEAdditionalFrame::E2MultilaneLaneSelector * getE2MultilaneLaneSelector() const
getConsecutive Lane Selector
bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor)
add additional element
GNEFrameAttributesModuls::AttributesCreator * myAdditionalAttributes
internal additional attributes
bool buildSlaveAdditional(std::map< SumoXMLAttr, std::string > &valuesMap, GNEAdditional *parent, const GNETagProperties &tagValues)
build slave additional
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:47
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:45
class used to group all variables related with objects under cursor after a click over view
Stores the information about how to visualize structures.
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:36