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-2022 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 #include <config.h>
22 
25 
26 
27 // ===========================================================================
28 // class definitions
29 // ===========================================================================
34 class GNEAdditionalFrame : public GNEFrame {
35 
36 public:
37 
38  // ===========================================================================
39  // class SelectorParentLanes
40  // ===========================================================================
41 
45  public:
47  SelectorParentLanes(GNEAdditionalFrame* additionalFrameParent);
48 
51 
54 
57 
59  void startConsecutiveLaneSelector(GNELane* lane, const Position& clickedPosition);
60 
63 
66 
68  bool addSelectedLane(GNELane* lane, const Position& clickedPosition);
69 
72 
74  bool isSelectingLanes() const;
75 
77  bool isShown() const;
78 
80  const std::vector<std::pair<GNELane*, double> >& getSelectedLanes() const;
81 
85  long onCmdStopSelection(FXObject*, FXSelector, void*);
86 
88  long onCmdAbortSelection(FXObject*, FXSelector, void*);
90 
91  protected:
92  FOX_CONSTRUCTOR(SelectorParentLanes)
93 
94  private:
97 
100 
103 
105  std::vector<std::pair<GNELane*, double> > mySelectedLanes;
106 
108  std::vector<GNELane*> myCandidateLanes;
109 
111  bool isLaneSelected(GNELane* lane) const;
112  };
113 
114  // ===========================================================================
115  // class SelectorChildEdges
116  // ===========================================================================
117 
121 
122  public:
124  SelectorChildEdges(GNEAdditionalFrame* additionalFrameParent);
125 
128 
130  std::vector<std::string> getEdgeIdsSelected() const;
131 
133  void showSelectorChildEdgesModule(std::string search = "");
134 
137 
139  void updateUseSelectedEdges();
140 
144  long onCmdUseSelectedEdges(FXObject*, FXSelector, void*);
145 
147  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
148 
150  long onCmdSelectEdge(FXObject*, FXSelector, void*);
151 
153  long onCmdClearSelection(FXObject*, FXSelector, void*);
154 
156  long onCmdInvertSelection(FXObject*, FXSelector, void*);
158 
159  protected:
160  FOX_CONSTRUCTOR(SelectorChildEdges)
161 
162  private:
165 
168 
170  FXList* myList;
171 
173  FXTextField* myEdgesSearch;
174 
177 
180  };
181 
182  // ===========================================================================
183  // class SelectorChildLanes
184  // ===========================================================================
185 
189 
190  public:
192  SelectorChildLanes(GNEAdditionalFrame* additionalFrameParent);
193 
196 
198  std::vector<std::string> getLaneIdsSelected() const;
199 
201  void showSelectorChildLanesModule(std::string search = "");
202 
205 
206  // @brief Update use selectedLanes
207  void updateUseSelectedLanes();
208 
212  long onCmdUseSelectedLanes(FXObject*, FXSelector, void*);
213 
215  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
216 
218  long onCmdSelectLane(FXObject*, FXSelector, void*);
219 
221  long onCmdClearSelection(FXObject*, FXSelector, void*);
222 
224  long onCmdInvertSelection(FXObject*, FXSelector, void*);
226 
227  protected:
228  FOX_CONSTRUCTOR(SelectorChildLanes)
229 
230  private:
233 
236 
238  FXList* myList;
239 
241  FXTextField* myLanesSearch;
242 
245 
248  };
249 
250  // ===========================================================================
251  // class E2MultilaneLaneSelector
252  // ===========================================================================
253 
257 
258  public:
260  E2MultilaneLaneSelector(GNEAdditionalFrame* additionalFrameParent);
261 
264 
267 
270 
272  bool addLane(GNELane* lane);
273 
276 
278  void updateLaneColors();
279 
282 
284  bool createPath();
285 
287  void abortPathCreation();
288 
290  void removeLastElement();
291 
295  long onCmdCreatePath(FXObject*, FXSelector, void*);
296 
298  long onCmdAbortPathCreation(FXObject*, FXSelector, void*);
299 
301  long onCmdRemoveLastElement(FXObject*, FXSelector, void*);
302 
304  long onCmdShowCandidateLanes(FXObject*, FXSelector, void*);
306 
307  protected:
309  FOX_CONSTRUCTOR(E2MultilaneLaneSelector)
310 
311 
312  void updateInfoRouteLabel();
313 
315  void clearPath();
316 
319 
321  std::vector<std::pair<GNELane*, double> > myLanePath;
322 
325 
328 
331 
334 
336  FXCheckButton* myShowCandidateLanes;
337 
338  private:
341 
344  };
345 
350  GNEAdditionalFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
351 
354 
356  void show();
357 
362  bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor& objectsUnderCursor);
363 
366 
369 
372 
373 protected:
376 
378  void tagSelected();
379 
380 private:
381  // @brief create baseAdditionalObject
382  bool createBaseAdditionalObject(const GNETagProperties& tagProperty);
383 
385  bool buildAdditionalCommonAttributes(const GNETagProperties& tagValues);
386 
388  bool buildAdditionalOverEdge(GNELane* lane, const GNETagProperties& tagValues);
389 
391  bool buildAdditionalOverLane(GNELane* lane, const GNETagProperties& tagValues);
392 
394  bool buildAdditionalOverView(const GNETagProperties& tagValues);
395 
398 
401 
404 
407 
410 
413 
416 
419 };
FXGroupBoxModule (based on FXGroupBox)
bool drawCandidateLanesWithSpecialColor() const
draw candidate lanes with special color (Only for candidates, special and conflicted)
long onCmdCreatePath(FXObject *, FXSelector, void *)
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
std::vector< std::pair< GNELane *, double > > myLanePath
vector with lanes and clicked positions
FXLabel * myInfoRouteLabel
label with route info
void showE2MultilaneLaneSelectorModule()
show E2MultilaneLaneSelector
FXButton * myFinishCreationButton
button for finish route creation
void clearPath()
clear lanes (and restore colors)
E2MultilaneLaneSelector(E2MultilaneLaneSelector *)=delete
Invalidated copy constructor.
void hideE2MultilaneLaneSelectorModule()
show E2MultilaneLaneSelector
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".
std::vector< std::string > getEdgeIdsSelected() const
get list of selecte id's in string format
long onCmdTypeInSearchBox(FXObject *, FXSelector, void *)
called when user type in search box
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.
void showSelectorChildEdgesModule(std::string search="")
Show SelectorChildEdges Module.
void hideSelectorChildEdgesModule()
hide SelectorChildEdges Module
long onCmdInvertSelection(FXObject *, FXSelector, void *)
called when invert selection button is pressed
long onCmdClearSelection(FXObject *, FXSelector, void *)
called when clear selection button is pressed
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
long onCmdUseSelectedEdges(FXObject *, FXSelector, void *)
FXList * myList
List of SelectorChildLanes.
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additional frame parent
void hideSelectorChildLanesModule()
hide SelectorChildLanes Module
void showSelectorChildLanesModule(std::string search="")
Show list of SelectorChildLanes Module.
long onCmdUseSelectedLanes(FXObject *, FXSelector, void *)
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
std::vector< std::string > getLaneIdsSelected() const
get list of selecte lane ids in string format
FXButton * clearLanesSelection
button for clear selection
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.
bool isSelectingLanes() const
return true if modul is selecting lane
const std::vector< std::pair< GNELane *, double > > & getSelectedLanes() const
get current selected lanes
bool isShown() const
return true if modul is shown
bool isLaneSelected(GNELane *lane) const
check if certain lane is selected
void showSelectorParentLanesModule()
show SelectorParentLanes modul
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.
void hideSelectorParentLanesModule()
hide SelectorParentLanes
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
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
GNEFrameModules::TagSelector * myAdditionalTagSelector
item selector
SelectorChildEdges * mySelectorChildEdges
Module for select child edges.
GNEAdditionalFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
bool buildAdditionalOverLane(GNELane *lane, const GNETagProperties &tagValues)
build additional over a single lane
SelectorChildLanes * mySelectorChildLanes
Module for select child lanes.
GNEAdditionalFrame::SelectorParentLanes * getConsecutiveLaneSelector() const
get consecutive Lane Selector
SelectorParentLanes * mySelectorLaneParents
Module for select parent lanes (currently only consecutives)
void tagSelected()
Tag selected in TagSelector.
bool buildAdditionalOverView(const GNETagProperties &tagValues)
build additional over view
GNEFrameModules::SelectorParent * mySelectorAdditionalParent
Module for select a single parent additional.
bool buildAdditionalCommonAttributes(const GNETagProperties &tagValues)
build common additional attributes
void showSelectorChildLanesModule()
show selector child lane and update use selected edges/lanes
E2MultilaneLaneSelector * myE2MultilaneLaneSelector
Module for E2Multilane lane selector.
~GNEAdditionalFrame()
Destructor.
GNEFrameAttributeModules::NeteditAttributes * myNeteditAttributes
Netedit parameter.
GNEAdditionalFrame::E2MultilaneLaneSelector * getE2MultilaneLaneSelector() const
getConsecutive Lane Selector
CommonXMLStructure::SumoBaseObject * myBaseAdditional
SumoBaseObject used for create additional.
bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor)
add additional element
bool createBaseAdditionalObject(const GNETagProperties &tagProperty)
bool buildAdditionalOverEdge(GNELane *lane, const GNETagProperties &tagValues)
build additional over an edge (parent of lane)
GNEFrameAttributeModules::AttributesCreator * myAdditionalAttributes
internal additional attributes
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:46
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:37