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-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 add additional elements
16 /****************************************************************************/
17 #ifndef GNEAdditionalFrame_h
18 #define GNEAdditionalFrame_h
19 
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include "GNEFrame.h"
25 
26 
27 // ===========================================================================
28 // class definitions
29 // ===========================================================================
34 class GNEAdditionalFrame : public GNEFrame {
35 
36 public:
37 
38  // ===========================================================================
39  // class SelectorLaneParents
40  // ===========================================================================
41 
42  class SelectorLaneParents : protected FXGroupBox {
45  public:
47  SelectorLaneParents(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 RGBColor& getSelectedLaneColor() const;
81 
83  const std::vector<std::pair<GNELane*, double> >& getSelectedLanes() const;
84 
88  long onCmdStopSelection(FXObject*, FXSelector, void*);
89 
91  long onCmdAbortSelection(FXObject*, FXSelector, void*);
93 
94  protected:
97 
98  private:
101 
104 
107 
109  std::vector<std::pair<GNELane*, double> > mySelectedLanes;
110 
112  std::vector<GNELane*> myCandidateLanes;
113 
116 
119 
121  bool isLaneSelected(GNELane* lane) const;
122  };
123 
124  // ===========================================================================
125  // class SelectorEdgeChildren
126  // ===========================================================================
127 
128  class SelectorEdgeChildren : protected FXGroupBox {
131 
132  public:
134  SelectorEdgeChildren(GNEAdditionalFrame* additionalFrameParent);
135 
138 
140  std::string getEdgeIdsSelected() const;
141 
143  void showSelectorEdgeChildrenModul(std::string search = "");
144 
147 
149  void updateUseSelectedEdges();
150 
154  long onCmdUseSelectedEdges(FXObject*, FXSelector, void*);
155 
157  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
158 
160  long onCmdSelectEdge(FXObject*, FXSelector, void*);
161 
163  long onCmdClearSelection(FXObject*, FXSelector, void*);
164 
166  long onCmdInvertSelection(FXObject*, FXSelector, void*);
168 
169  protected:
172 
173  private:
176 
179 
181  FXList* myList;
182 
184  FXTextField* myEdgesSearch;
185 
188 
191  };
192 
193  // ===========================================================================
194  // class SelectorLaneChildren
195  // ===========================================================================
196 
197  class SelectorLaneChildren : protected FXGroupBox {
200 
201  public:
203  SelectorLaneChildren(GNEAdditionalFrame* additionalFrameParent);
204 
207 
209  std::string getLaneIdsSelected() const;
210 
212  void showSelectorLaneChildrenModul(std::string search = "");
213 
216 
217  // @brief Update use selectedLanes
218  void updateUseSelectedLanes();
219 
223  long onCmdUseSelectedLanes(FXObject*, FXSelector, void*);
224 
226  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
227 
229  long onCmdSelectLane(FXObject*, FXSelector, void*);
230 
232  long onCmdClearSelection(FXObject*, FXSelector, void*);
233 
235  long onCmdInvertSelection(FXObject*, FXSelector, void*);
237 
238  protected:
241 
242  private:
245 
248 
250  FXList* myList;
251 
253  FXTextField* myLanesSearch;
254 
257 
260  };
261 
266  GNEAdditionalFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
267 
270 
272  void show();
273 
278  bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor& objectsUnderCursor);
279 
282 
285 
286 protected:
288  void tagSelected();
289 
290 private:
292  std::string generateID(GNENetElement* netElement) const;
293 
295  bool buildAdditionalCommonAttributes(std::map<SumoXMLAttr, std::string>& valuesMap, const GNEAttributeCarrier::TagProperties& tagValues);
296 
298  bool buildAdditionalWithParent(std::map<SumoXMLAttr, std::string>& valuesMap, GNEAdditional* parent, const GNEAttributeCarrier::TagProperties& tagValues);
299 
301  bool buildAdditionalOverEdge(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNEAttributeCarrier::TagProperties& tagValues);
302 
304  bool buildAdditionalOverLane(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNEAttributeCarrier::TagProperties& tagValues);
305 
307  bool buildAdditionalOverLanes(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNEAttributeCarrier::TagProperties& tagValues);
308 
310  bool buildAdditionalOverView(std::map<SumoXMLAttr, std::string>& valuesMap, const GNEAttributeCarrier::TagProperties& tagValues);
311 
314 
317 
320 
323 
326 
329 
332 };
333 
334 
335 #endif
336 
337 /****************************************************************************/
GNEAdditionalFrame::SelectorEdgeChildren::showSelectorEdgeChildrenModul
void showSelectorEdgeChildrenModul(std::string search="")
Show SelectorEdgeChildren Modul.
Definition: GNEAdditionalFrame.cpp:357
GNEAdditionalFrame
Definition: GNEAdditionalFrame.h:34
GNEAdditionalFrame::myAdditionalAttributes
GNEFrameAttributesModuls::AttributesCreator * myAdditionalAttributes
internal additional attributes
Definition: GNEAdditionalFrame.h:316
GNEAdditionalFrame::SelectorEdgeChildren::myAdditionalFrameParent
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additional frame parent
Definition: GNEAdditionalFrame.h:175
GNEAdditional
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:47
GNEAttributeCarrier::TagProperties
struct with the attribute Properties
Definition: GNEAttributeCarrier.h:324
GNEAdditionalFrame::SelectorLaneParents::getSelectedLanes
const std::vector< std::pair< GNELane *, double > > & getSelectedLanes() const
get current selected lanes
Definition: GNEAdditionalFrame.cpp:272
GNEAdditionalFrame::SelectorLaneChildren::myAdditionalFrameParent
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additional frame parent
Definition: GNEAdditionalFrame.h:244
GNEAdditionalFrame::SelectorLaneChildren::SelectorLaneChildren
SelectorLaneChildren()
FOX needs this.
Definition: GNEAdditionalFrame.h:240
GNEAdditionalFrame::buildAdditionalCommonAttributes
bool buildAdditionalCommonAttributes(std::map< SumoXMLAttr, std::string > &valuesMap, const GNEAttributeCarrier::TagProperties &tagValues)
build common additional attributes
Definition: GNEAdditionalFrame.cpp:794
GNEAdditionalFrame::SelectorLaneChildren::invertLanesSelection
FXButton * invertLanesSelection
button for invert selection
Definition: GNEAdditionalFrame.h:259
GNEAdditionalFrame::SelectorLaneParents::mySelectedLaneColor
RGBColor mySelectedLaneColor
color for selected lanes
Definition: GNEAdditionalFrame.h:118
GNEAdditionalFrame::SelectorLaneParents::onCmdAbortSelection
long onCmdAbortSelection(FXObject *, FXSelector, void *)
Called when the user press abort selection button.
Definition: GNEAdditionalFrame.cpp:285
GNEAdditionalFrame::SelectorEdgeChildren::updateUseSelectedEdges
void updateUseSelectedEdges()
Update use selectedEdges.
Definition: GNEAdditionalFrame.cpp:388
GNEAdditionalFrame::SelectorLaneParents::stopConsecutiveLaneSelector
bool stopConsecutiveLaneSelector()
stop selection of consecutive lanes
Definition: GNEAdditionalFrame.cpp:122
GNEAdditionalFrame::SelectorLaneParents::removeLastSelectedLane
void removeLastSelectedLane()
remove last added point
Definition: GNEAdditionalFrame.cpp:244
GNEFrameAttributesModuls::NeteditAttributes
Definition: GNEFrameAttributesModuls.h:548
GNEAdditionalFrame::SelectorLaneChildren::~SelectorLaneChildren
~SelectorLaneChildren()
destructor
Definition: GNEAdditionalFrame.cpp:486
GNEAdditionalFrame::SelectorEdgeChildren::myInvertEdgesSelection
FXButton * myInvertEdgesSelection
button for invert selection
Definition: GNEAdditionalFrame.h:190
GNEAdditionalFrame::SelectorLaneChildren
Definition: GNEAdditionalFrame.h:197
GNEAdditionalFrame::myAdditionalTagSelector
GNEFrameModuls::TagSelector * myAdditionalTagSelector
item selector
Definition: GNEAdditionalFrame.h:313
GNEAdditionalFrame::addAdditional
bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor)
add additional element
Definition: GNEAdditionalFrame.cpp:648
GNEFrameAttributesModuls::AttributesCreator
Definition: GNEFrameAttributesModuls.h:157
GNEAdditionalFrame::SelectorLaneParents::showSelectorLaneParentsModul
void showSelectorLaneParentsModul()
show SelectorLaneParents modul
Definition: GNEAdditionalFrame.cpp:91
GNEAdditionalFrame::SelectorEdgeChildren::onCmdTypeInSearchBox
long onCmdTypeInSearchBox(FXObject *, FXSelector, void *)
called when user type in search box
Definition: GNEAdditionalFrame.cpp:420
GNEAdditionalFrame::SelectorEdgeChildren::getEdgeIdsSelected
std::string getEdgeIdsSelected() const
get list of selecte id's in string format
Definition: GNEAdditionalFrame.cpp:335
GNEAdditionalFrame::myNeteditAttributes
GNEFrameAttributesModuls::NeteditAttributes * myNeteditAttributes
Netedit parameter.
Definition: GNEAdditionalFrame.h:319
GNEAdditionalFrame::SelectorLaneParents::onCmdStopSelection
long onCmdStopSelection(FXObject *, FXSelector, void *)
Definition: GNEAdditionalFrame.cpp:278
GNEFrame
Definition: GNEFrame.h:35
GNEViewNet
Definition: GNEViewNet.h:43
GNEAdditionalFrame::buildAdditionalOverEdge
bool buildAdditionalOverEdge(std::map< SumoXMLAttr, std::string > &valuesMap, GNELane *lane, const GNEAttributeCarrier::TagProperties &tagValues)
build additional over an edge (parent of lane)
Definition: GNEAdditionalFrame.cpp:837
GNEAdditionalFrame::SelectorLaneChildren::myUseSelectedLanesCheckButton
FXCheckButton * myUseSelectedLanesCheckButton
CheckBox for selected lanes.
Definition: GNEAdditionalFrame.h:247
GNEAdditionalFrame::SelectorEdgeChildren::onCmdSelectEdge
long onCmdSelectEdge(FXObject *, FXSelector, void *)
called when user select a edge of the list
Definition: GNEAdditionalFrame.cpp:428
GNEAdditionalFrame::SelectorLaneChildren::updateUseSelectedLanes
void updateUseSelectedLanes()
Definition: GNEAdditionalFrame.cpp:534
GNEAdditionalFrame::SelectorEdgeChildren::SelectorEdgeChildren
SelectorEdgeChildren()
FOX needs this.
Definition: GNEAdditionalFrame.h:171
GNEAdditionalFrame::SelectorLaneParents
Definition: GNEAdditionalFrame.h:42
GNEAdditionalFrame::SelectorLaneParents::getSelectedLaneColor
const RGBColor & getSelectedLaneColor() const
get selected lane color
Definition: GNEAdditionalFrame.cpp:266
GNEAdditionalFrame::SelectorLaneChildren::onCmdInvertSelection
long onCmdInvertSelection(FXObject *, FXSelector, void *)
called when invert selection button is pressed
Definition: GNEAdditionalFrame.cpp:591
GNEAdditionalFrame::SelectorLaneChildren::showSelectorLaneChildrenModul
void showSelectorLaneChildrenModul(std::string search="")
Show list of SelectorLaneChildren Modul.
Definition: GNEAdditionalFrame.cpp:512
GNEAdditionalFrame::SelectorEdgeChildren::~SelectorEdgeChildren
~SelectorEdgeChildren()
destructor
Definition: GNEAdditionalFrame.cpp:331
GNEAdditionalFrame::SelectorLaneParents::myStopSelectingButton
FXButton * myStopSelectingButton
button for stop selecting
Definition: GNEAdditionalFrame.h:103
RGBColor
Definition: RGBColor.h:40
GNEAdditionalFrame::SelectorLaneChildren::onCmdTypeInSearchBox
long onCmdTypeInSearchBox(FXObject *, FXSelector, void *)
called when user type in search box
Definition: GNEAdditionalFrame.cpp:566
GNEAdditionalFrame::SelectorEdgeChildren
Definition: GNEAdditionalFrame.h:128
GNEFrameModuls::SelectorParent
Definition: GNEFrameModuls.h:485
GNEAdditionalFrame::SelectorLaneParents::myAdditionalFrameParent
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additionalFrameParent
Definition: GNEAdditionalFrame.h:100
GNEViewNetHelper::ObjectsUnderCursor
class used to group all variables related with objects under cursor after a click over view
Definition: GNEViewNetHelper.h:149
GNEFrameModuls::TagSelector
Definition: GNEFrameModuls.h:45
GNEAdditionalFrame::buildAdditionalOverLane
bool buildAdditionalOverLane(std::map< SumoXMLAttr, std::string > &valuesMap, GNELane *lane, const GNEAttributeCarrier::TagProperties &tagValues)
build additional over a single lane
Definition: GNEAdditionalFrame.cpp:874
GNEAdditionalFrame::SelectorEdgeChildren::onCmdUseSelectedEdges
long onCmdUseSelectedEdges(FXObject *, FXSelector, void *)
Definition: GNEAdditionalFrame.cpp:399
GNEAdditionalFrame::getConsecutiveLaneSelector
GNEAdditionalFrame::SelectorLaneParents * getConsecutiveLaneSelector() const
getConsecutive Lane Selector
Definition: GNEAdditionalFrame.cpp:696
GNEAdditionalFrame::~GNEAdditionalFrame
~GNEAdditionalFrame()
Destructor.
Definition: GNEAdditionalFrame.cpp:635
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
GNEAdditionalFrame::SelectorLaneParents::isShown
bool isShown() const
return true if modul is shown
Definition: GNEAdditionalFrame.cpp:260
GNEAdditionalFrame::myAdditionalParent
GNEFrameModuls::SelectorParent * myAdditionalParent
Modul for select a single additional parent.
Definition: GNEAdditionalFrame.h:325
GNEAdditionalFrame::SelectorLaneParents::myCandidateLaneColor
RGBColor myCandidateLaneColor
color for candidate lanes
Definition: GNEAdditionalFrame.h:115
GNENetElement
Definition: GNENetElement.h:42
GNEAdditionalFrame::SelectorLaneParents::addSelectedLane
bool addSelectedLane(GNELane *lane, const Position &clickedPosition)
return true if lane can be selected as consecutive lane
Definition: GNEAdditionalFrame.cpp:194
GNEAdditionalFrame::SelectorEdgeChildren::hideSelectorEdgeChildrenModul
void hideSelectorEdgeChildrenModul()
hide SelectorEdgeChildren Modul
Definition: GNEAdditionalFrame.cpp:382
GNEAdditionalFrame::mySelectorLaneChildren
SelectorLaneChildren * mySelectorLaneChildren
Modul for select lane children.
Definition: GNEAdditionalFrame.h:331
GNEAdditionalFrame::SelectorEdgeChildren::onCmdInvertSelection
long onCmdInvertSelection(FXObject *, FXSelector, void *)
called when invert selection button is pressed
Definition: GNEAdditionalFrame.cpp:445
GNEAdditionalFrame::SelectorEdgeChildren::myUseSelectedEdgesCheckButton
FXCheckButton * myUseSelectedEdgesCheckButton
CheckBox for selected edges.
Definition: GNEAdditionalFrame.h:178
GNEAdditionalFrame::SelectorLaneChildren::onCmdUseSelectedLanes
long onCmdUseSelectedLanes(FXObject *, FXSelector, void *)
Definition: GNEAdditionalFrame.cpp:545
GNEAdditionalFrame::SelectorLaneParents::~SelectorLaneParents
~SelectorLaneParents()
destructor
Definition: GNEAdditionalFrame.cpp:87
GNEAdditionalFrame::SelectorLaneParents::hideSelectorLaneParentsModul
void hideSelectorLaneParentsModul()
hide SelectorLaneParents
Definition: GNEAdditionalFrame.cpp:100
GNEAdditionalFrame::showSelectorLaneChildrenModul
void showSelectorLaneChildrenModul()
show selector lane child and update use selected edges/lanes
Definition: GNEAdditionalFrame.cpp:685
GNEAdditionalFrame::SelectorLaneParents::SelectorLaneParents
SelectorLaneParents()
FOX needs this.
Definition: GNEAdditionalFrame.h:96
GNEAdditionalFrame::SelectorLaneChildren::onCmdClearSelection
long onCmdClearSelection(FXObject *, FXSelector, void *)
called when clear selection button is pressed
Definition: GNEAdditionalFrame.cpp:580
GNEAdditionalFrame::SelectorEdgeChildren::onCmdClearSelection
long onCmdClearSelection(FXObject *, FXSelector, void *)
called when clear selection button is pressed
Definition: GNEAdditionalFrame.cpp:434
GNEAdditionalFrame::tagSelected
void tagSelected()
Tag selected in TagSelector.
Definition: GNEAdditionalFrame.cpp:702
GNEAdditionalFrame::SelectorEdgeChildren::myList
FXList * myList
List of SelectorEdgeChildren.
Definition: GNEAdditionalFrame.h:181
GNEAdditionalFrame::buildAdditionalOverView
bool buildAdditionalOverView(std::map< SumoXMLAttr, std::string > &valuesMap, const GNEAttributeCarrier::TagProperties &tagValues)
build additional over view
Definition: GNEAdditionalFrame.cpp:973
GNEAdditionalFrame::mySelectorLaneParents
SelectorLaneParents * mySelectorLaneParents
Modul for select lane parents (currently only consecutives)
Definition: GNEAdditionalFrame.h:322
GNEAdditionalFrame::SelectorLaneParents::myCandidateLanes
std::vector< GNELane * > myCandidateLanes
Vector with the colored lanes.
Definition: GNEAdditionalFrame.h:112
GNEAdditionalFrame::SelectorLaneChildren::myList
FXList * myList
List of SelectorLaneChildren.
Definition: GNEAdditionalFrame.h:250
GNEAdditionalFrame::SelectorLaneParents::isLaneSelected
bool isLaneSelected(GNELane *lane) const
check if certain lane is selected
Definition: GNEAdditionalFrame.cpp:292
GNEAdditionalFrame::generateID
std::string generateID(GNENetElement *netElement) const
generate a ID for an additiona element
Definition: GNEAdditionalFrame.cpp:749
GNEAdditionalFrame::show
void show()
show Frame
Definition: GNEAdditionalFrame.cpp:639
GNEAdditionalFrame::SelectorLaneChildren::clearLanesSelection
FXButton * clearLanesSelection
button for clear selection
Definition: GNEAdditionalFrame.h:256
GNEAdditionalFrame::buildAdditionalOverLanes
bool buildAdditionalOverLanes(std::map< SumoXMLAttr, std::string > &valuesMap, GNELane *lane, const GNEAttributeCarrier::TagProperties &tagValues)
build additional over lanes
Definition: GNEAdditionalFrame.cpp:915
GNEAdditionalFrame::mySelectorEdgeChildren
SelectorEdgeChildren * mySelectorEdgeChildren
Modul for select edge children.
Definition: GNEAdditionalFrame.h:328
GNEAdditionalFrame::SelectorLaneChildren::myLanesSearch
FXTextField * myLanesSearch
text field for search lane IDs
Definition: GNEAdditionalFrame.h:253
GNEAdditionalFrame::SelectorLaneChildren::hideSelectorLaneChildrenModul
void hideSelectorLaneChildrenModul()
hide SelectorLaneChildren Modul
Definition: GNEAdditionalFrame.cpp:528
GNEAdditionalFrame::SelectorEdgeChildren::myClearEdgesSelection
FXButton * myClearEdgesSelection
button for clear selection
Definition: GNEAdditionalFrame.h:187
GNEAdditionalFrame::GNEAdditionalFrame
GNEAdditionalFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
Definition: GNEAdditionalFrame.cpp:606
GNEAdditionalFrame::buildAdditionalWithParent
bool buildAdditionalWithParent(std::map< SumoXMLAttr, std::string > &valuesMap, GNEAdditional *parent, const GNEAttributeCarrier::TagProperties &tagValues)
build additional with Parent
Definition: GNEAdditionalFrame.cpp:776
GNEAdditionalFrame::SelectorLaneChildren::getLaneIdsSelected
std::string getLaneIdsSelected() const
get list of selecte lane ids in string format
Definition: GNEAdditionalFrame.cpp:490
GNEAdditionalFrame::SelectorLaneParents::abortConsecutiveLaneSelector
void abortConsecutiveLaneSelector()
abort selection of consecutive lanes
Definition: GNEAdditionalFrame.cpp:172
GNEAdditionalFrame::SelectorLaneParents::isSelectingLanes
bool isSelectingLanes() const
return true if modul is selecting lane
Definition: GNEAdditionalFrame.cpp:254
GNEFrame.h
GNEAdditionalFrame::SelectorLaneParents::myAbortSelectingButton
FXButton * myAbortSelectingButton
button for abort selecting
Definition: GNEAdditionalFrame.h:106
GNEAdditionalFrame::SelectorLaneChildren::onCmdSelectLane
long onCmdSelectLane(FXObject *, FXSelector, void *)
called when user select a lane of the list
Definition: GNEAdditionalFrame.cpp:574
GNELane
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:46
GNEAdditionalFrame::SelectorLaneParents::mySelectedLanes
std::vector< std::pair< GNELane *, double > > mySelectedLanes
Vector with the selected lanes and the clicked position.
Definition: GNEAdditionalFrame.h:109
GNEAdditionalFrame::SelectorLaneParents::startConsecutiveLaneSelector
void startConsecutiveLaneSelector(GNELane *lane, const Position &clickedPosition)
start selection of consecutive lanes
Definition: GNEAdditionalFrame.cpp:109
GNEAdditionalFrame::SelectorEdgeChildren::myEdgesSearch
FXTextField * myEdgesSearch
text field for search edge IDs
Definition: GNEAdditionalFrame.h:184