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 /****************************************************************************/
14 // The Widget for add additional elements
15 /****************************************************************************/
16 #ifndef GNEAdditionalFrame_h
17 #define GNEAdditionalFrame_h
18 
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <config.h>
24 #include "GNEFrame.h"
25 
26 
27 // ===========================================================================
28 // class definitions
29 // ===========================================================================
34 class GNEAdditionalFrame : public GNEFrame {
35 
36 public:
37 
38  // ===========================================================================
39  // class SelectorParentLanes
40  // ===========================================================================
41 
42  class SelectorParentLanes : protected FXGroupBox {
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 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:
96 
97  private:
100 
103 
106 
108  std::vector<std::pair<GNELane*, double> > mySelectedLanes;
109 
111  std::vector<GNELane*> myCandidateLanes;
112 
115 
118 
120  bool isLaneSelected(GNELane* lane) const;
121  };
122 
123  // ===========================================================================
124  // class SelectorChildEdges
125  // ===========================================================================
126 
127  class SelectorChildEdges : protected FXGroupBox {
130 
131  public:
133  SelectorChildEdges(GNEAdditionalFrame* additionalFrameParent);
134 
137 
139  std::string getEdgeIdsSelected() const;
140 
142  void showSelectorChildEdgesModul(std::string search = "");
143 
146 
148  void updateUseSelectedEdges();
149 
153  long onCmdUseSelectedEdges(FXObject*, FXSelector, void*);
154 
156  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
157 
159  long onCmdSelectEdge(FXObject*, FXSelector, void*);
160 
162  long onCmdClearSelection(FXObject*, FXSelector, void*);
163 
165  long onCmdInvertSelection(FXObject*, FXSelector, void*);
167 
168  protected:
170 
171  private:
174 
177 
179  FXList* myList;
180 
182  FXTextField* myEdgesSearch;
183 
186 
189  };
190 
191  // ===========================================================================
192  // class SelectorChildLanes
193  // ===========================================================================
194 
195  class SelectorChildLanes : protected FXGroupBox {
198 
199  public:
201  SelectorChildLanes(GNEAdditionalFrame* additionalFrameParent);
202 
205 
207  std::string getLaneIdsSelected() const;
208 
210  void showSelectorChildLanesModul(std::string search = "");
211 
214 
215  // @brief Update use selectedLanes
216  void updateUseSelectedLanes();
217 
221  long onCmdUseSelectedLanes(FXObject*, FXSelector, void*);
222 
224  long onCmdTypeInSearchBox(FXObject*, FXSelector, void*);
225 
227  long onCmdSelectLane(FXObject*, FXSelector, void*);
228 
230  long onCmdClearSelection(FXObject*, FXSelector, void*);
231 
233  long onCmdInvertSelection(FXObject*, FXSelector, void*);
235 
236  protected:
238 
239  private:
242 
245 
247  FXList* myList;
248 
250  FXTextField* myLanesSearch;
251 
254 
257  };
258 
263  GNEAdditionalFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
264 
267 
269  void show();
270 
275  bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor& objectsUnderCursor);
276 
279 
282 
283 protected:
285  void tagSelected();
286 
287 private:
289  std::string generateID(GNENetElement* netElement) const;
290 
292  bool buildAdditionalCommonAttributes(std::map<SumoXMLAttr, std::string>& valuesMap, const GNEAttributeCarrier::TagProperties& tagValues);
293 
295  bool buildAdditionalWithParent(std::map<SumoXMLAttr, std::string>& valuesMap, GNEAdditional* parent, const GNEAttributeCarrier::TagProperties& tagValues);
296 
298  bool buildAdditionalOverEdge(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNEAttributeCarrier::TagProperties& tagValues);
299 
301  bool buildAdditionalOverLane(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNEAttributeCarrier::TagProperties& tagValues);
302 
304  bool buildAdditionalOverLanes(std::map<SumoXMLAttr, std::string>& valuesMap, GNELane* lane, const GNEAttributeCarrier::TagProperties& tagValues);
305 
307  bool buildAdditionalOverView(std::map<SumoXMLAttr, std::string>& valuesMap, const GNEAttributeCarrier::TagProperties& tagValues);
308 
311 
314 
317 
320 
323 
326 
329 };
330 
331 
332 #endif
333 
334 /****************************************************************************/
GNEAdditionalFrame
Definition: GNEAdditionalFrame.h:34
GNEAdditionalFrame::SelectorParentLanes::getSelectedLanes
const std::vector< std::pair< GNELane *, double > > & getSelectedLanes() const
get current selected lanes
Definition: GNEAdditionalFrame.cpp:275
GNEAdditionalFrame::SelectorParentLanes::SelectorParentLanes
SelectorParentLanes(GNEAdditionalFrame *additionalFrameParent)
FOX-declaration.
Definition: GNEAdditionalFrame.cpp:71
GNEAdditionalFrame::myAdditionalAttributes
GNEFrameAttributesModuls::AttributesCreator * myAdditionalAttributes
internal additional attributes
Definition: GNEAdditionalFrame.h:313
GNEAdditional
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:48
GNEAdditionalFrame::SelectorParentLanes::getSelectedLaneColor
const RGBColor & getSelectedLaneColor() const
get selected lane color
Definition: GNEAdditionalFrame.cpp:269
GNEAdditionalFrame::SelectorChildEdges::myUseSelectedEdgesCheckButton
FXCheckButton * myUseSelectedEdgesCheckButton
CheckBox for selected edges.
Definition: GNEAdditionalFrame.h:176
GNEAdditionalFrame::SelectorParentLanes::showSelectorParentLanesModul
void showSelectorParentLanesModul()
show SelectorParentLanes modul
Definition: GNEAdditionalFrame.cpp:90
GNEAttributeCarrier::TagProperties
struct with the attribute Properties
Definition: GNEAttributeCarrier.h:317
GNEAdditionalFrame::SelectorParentLanes::myCandidateLaneColor
RGBColor myCandidateLaneColor
color for candidate lanes
Definition: GNEAdditionalFrame.h:114
GNEAdditionalFrame::SelectorParentLanes::onCmdStopSelection
long onCmdStopSelection(FXObject *, FXSelector, void *)
Definition: GNEAdditionalFrame.cpp:281
GNEAdditionalFrame::SelectorChildEdges::SelectorChildEdges
SelectorChildEdges(GNEAdditionalFrame *additionalFrameParent)
FOX-declaration.
Definition: GNEAdditionalFrame.cpp:308
GNEAdditionalFrame::buildAdditionalCommonAttributes
bool buildAdditionalCommonAttributes(std::map< SumoXMLAttr, std::string > &valuesMap, const GNEAttributeCarrier::TagProperties &tagValues)
build common additional attributes
Definition: GNEAdditionalFrame.cpp:792
GNEAdditionalFrame::SelectorChildEdges::hideSelectorChildEdgesModul
void hideSelectorChildEdgesModul()
hide SelectorChildEdges Modul
Definition: GNEAdditionalFrame.cpp:385
GNEAdditionalFrame::SelectorParentLanes::onCmdAbortSelection
long onCmdAbortSelection(FXObject *, FXSelector, void *)
Called when the user press abort selection button.
Definition: GNEAdditionalFrame.cpp:288
GNEFrameAttributesModuls::NeteditAttributes
Definition: GNEFrameAttributesModuls.h:714
GNEAdditionalFrame::myAdditionalTagSelector
GNEFrameModuls::TagSelector * myAdditionalTagSelector
item selector
Definition: GNEAdditionalFrame.h:310
GNEAdditionalFrame::addAdditional
bool addAdditional(const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor)
add additional element
Definition: GNEAdditionalFrame.cpp:651
GNEFrameAttributesModuls::AttributesCreator
Definition: GNEFrameAttributesModuls.h:148
GNEAdditionalFrame::myNeteditAttributes
GNEFrameAttributesModuls::NeteditAttributes * myNeteditAttributes
Netedit parameter.
Definition: GNEAdditionalFrame.h:316
GNEAdditionalFrame::SelectorChildLanes::invertLanesSelection
FXButton * invertLanesSelection
button for invert selection
Definition: GNEAdditionalFrame.h:256
GNEAdditionalFrame::showSelectorChildLanesModul
void showSelectorChildLanesModul()
show selector child lane and update use selected edges/lanes
Definition: GNEAdditionalFrame.cpp:683
GNEAdditionalFrame::SelectorChildLanes::clearLanesSelection
FXButton * clearLanesSelection
button for clear selection
Definition: GNEAdditionalFrame.h:253
GNEAdditionalFrame::SelectorChildLanes::onCmdClearSelection
long onCmdClearSelection(FXObject *, FXSelector, void *)
called when clear selection button is pressed
Definition: GNEAdditionalFrame.cpp:583
GNEAdditionalFrame::SelectorChildEdges::myClearEdgesSelection
FXButton * myClearEdgesSelection
button for clear selection
Definition: GNEAdditionalFrame.h:185
GNEFrame
Definition: GNEFrame.h:34
GNEViewNet
Definition: GNEViewNet.h:42
GNEAdditionalFrame::SelectorChildLanes::myAdditionalFrameParent
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additional frame parent
Definition: GNEAdditionalFrame.h:241
GNEAdditionalFrame::mySelectorParentLanes
SelectorParentLanes * mySelectorParentLanes
Modul for select parent lanes (currently only consecutives)
Definition: GNEAdditionalFrame.h:319
GNEAdditionalFrame::SelectorParentLanes::mySelectedLaneColor
RGBColor mySelectedLaneColor
color for selected lanes
Definition: GNEAdditionalFrame.h:117
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:835
GNEAdditionalFrame::SelectorChildEdges::onCmdClearSelection
long onCmdClearSelection(FXObject *, FXSelector, void *)
called when clear selection button is pressed
Definition: GNEAdditionalFrame.cpp:437
GNEAdditionalFrame::SelectorChildEdges::onCmdTypeInSearchBox
long onCmdTypeInSearchBox(FXObject *, FXSelector, void *)
called when user type in search box
Definition: GNEAdditionalFrame.cpp:423
GNEAdditionalFrame::SelectorChildEdges::getEdgeIdsSelected
std::string getEdgeIdsSelected() const
get list of selecte id's in string format
Definition: GNEAdditionalFrame.cpp:338
GNEAdditionalFrame::SelectorParentLanes::isShown
bool isShown() const
return true if modul is shown
Definition: GNEAdditionalFrame.cpp:263
GNEAdditionalFrame::SelectorParentLanes::stopConsecutiveLaneSelector
bool stopConsecutiveLaneSelector()
stop selection of consecutive lanes
Definition: GNEAdditionalFrame.cpp:121
GNEAdditionalFrame::SelectorParentLanes::myAdditionalFrameParent
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additionalFrameParent
Definition: GNEAdditionalFrame.h:99
GNEAdditionalFrame::SelectorParentLanes
Definition: GNEAdditionalFrame.h:42
GNEAdditionalFrame::SelectorParentLanes::myStopSelectingButton
FXButton * myStopSelectingButton
button for stop selecting
Definition: GNEAdditionalFrame.h:102
RGBColor
Definition: RGBColor.h:39
GNEAdditionalFrame::SelectorChildLanes::onCmdTypeInSearchBox
long onCmdTypeInSearchBox(FXObject *, FXSelector, void *)
called when user type in search box
Definition: GNEAdditionalFrame.cpp:569
GNEAdditionalFrame::SelectorParentLanes::isLaneSelected
bool isLaneSelected(GNELane *lane) const
check if certain lane is selected
Definition: GNEAdditionalFrame.cpp:295
GNEAdditionalFrame::SelectorChildEdges::onCmdSelectEdge
long onCmdSelectEdge(FXObject *, FXSelector, void *)
called when user select a edge of the list
Definition: GNEAdditionalFrame.cpp:431
GNEFrameModuls::SelectorParent
Definition: GNEFrameModuls.h:479
GNEAdditionalFrame::SelectorChildLanes::~SelectorChildLanes
~SelectorChildLanes()
destructor
Definition: GNEAdditionalFrame.cpp:489
GNEAdditionalFrame::SelectorParentLanes::abortConsecutiveLaneSelector
void abortConsecutiveLaneSelector()
abort selection of consecutive lanes
Definition: GNEAdditionalFrame.cpp:175
GNEAdditionalFrame::SelectorChildEdges::myList
FXList * myList
List of SelectorChildEdges.
Definition: GNEAdditionalFrame.h:179
GNEViewNetHelper::ObjectsUnderCursor
class used to group all variables related with objects under cursor after a click over view
Definition: GNEViewNetHelper.h:148
GNEFrameModuls::TagSelector
Definition: GNEFrameModuls.h:44
GNEAdditionalFrame::SelectorChildEdges
Definition: GNEAdditionalFrame.h:127
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:876
GNEAdditionalFrame::SelectorChildLanes::updateUseSelectedLanes
void updateUseSelectedLanes()
Definition: GNEAdditionalFrame.cpp:537
GNEAdditionalFrame::SelectorChildEdges::myAdditionalFrameParent
GNEAdditionalFrame * myAdditionalFrameParent
pointer to additional frame parent
Definition: GNEAdditionalFrame.h:173
GNEAdditionalFrame::~GNEAdditionalFrame
~GNEAdditionalFrame()
Destructor.
Definition: GNEAdditionalFrame.cpp:638
FOX_CONSTRUCTOR
#define FOX_CONSTRUCTOR(classname)
Definition: config.h:13
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:38
GNEAdditionalFrame::SelectorChildEdges::onCmdUseSelectedEdges
long onCmdUseSelectedEdges(FXObject *, FXSelector, void *)
Definition: GNEAdditionalFrame.cpp:402
GNEAdditionalFrame::SelectorChildLanes
Definition: GNEAdditionalFrame.h:195
GNENetElement
Definition: GNENetElement.h:43
GNEAdditionalFrame::mySelectorChildLanes
SelectorChildLanes * mySelectorChildLanes
Modul for select child lanes.
Definition: GNEAdditionalFrame.h:328
GNEAdditionalFrame::SelectorChildEdges::updateUseSelectedEdges
void updateUseSelectedEdges()
Update use selectedEdges.
Definition: GNEAdditionalFrame.cpp:391
GNEAdditionalFrame::SelectorParentLanes::myCandidateLanes
std::vector< GNELane * > myCandidateLanes
Vector with the colored lanes.
Definition: GNEAdditionalFrame.h:111
GNEAdditionalFrame::SelectorChildEdges::showSelectorChildEdgesModul
void showSelectorChildEdgesModul(std::string search="")
Show SelectorChildEdges Modul.
Definition: GNEAdditionalFrame.cpp:360
GNEAdditionalFrame::SelectorChildLanes::hideSelectorChildLanesModul
void hideSelectorChildLanesModul()
hide SelectorChildLanes Modul
Definition: GNEAdditionalFrame.cpp:531
GNEAdditionalFrame::SelectorChildLanes::myLanesSearch
FXTextField * myLanesSearch
text field for search lane IDs
Definition: GNEAdditionalFrame.h:250
GNEAdditionalFrame::SelectorChildLanes::myUseSelectedLanesCheckButton
FXCheckButton * myUseSelectedLanesCheckButton
CheckBox for selected lanes.
Definition: GNEAdditionalFrame.h:244
GNEAdditionalFrame::mySelectorChildEdges
SelectorChildEdges * mySelectorChildEdges
Modul for select child edges.
Definition: GNEAdditionalFrame.h:325
GNEAdditionalFrame::SelectorParentLanes::mySelectedLanes
std::vector< std::pair< GNELane *, double > > mySelectedLanes
Vector with the selected lanes and the clicked position.
Definition: GNEAdditionalFrame.h:108
GNEAdditionalFrame::tagSelected
void tagSelected()
Tag selected in TagSelector.
Definition: GNEAdditionalFrame.cpp:700
GNEAdditionalFrame::SelectorChildLanes::myList
FXList * myList
List of SelectorChildLanes.
Definition: GNEAdditionalFrame.h:247
GNEAdditionalFrame::SelectorParentLanes::myAbortSelectingButton
FXButton * myAbortSelectingButton
button for abort selecting
Definition: GNEAdditionalFrame.h:105
GNEAdditionalFrame::buildAdditionalOverView
bool buildAdditionalOverView(std::map< SumoXMLAttr, std::string > &valuesMap, const GNEAttributeCarrier::TagProperties &tagValues)
build additional over view
Definition: GNEAdditionalFrame.cpp:983
GNEAdditionalFrame::SelectorChildEdges::myEdgesSearch
FXTextField * myEdgesSearch
text field for search edge IDs
Definition: GNEAdditionalFrame.h:182
GNEAdditionalFrame::generateID
std::string generateID(GNENetElement *netElement) const
generate a ID for an additiona element
Definition: GNEAdditionalFrame.cpp:747
GNEAdditionalFrame::getConsecutiveLaneSelector
GNEAdditionalFrame::SelectorParentLanes * getConsecutiveLaneSelector() const
getConsecutive Lane Selector
Definition: GNEAdditionalFrame.cpp:694
GNEAdditionalFrame::show
void show()
show Frame
Definition: GNEAdditionalFrame.cpp:642
GNEAdditionalFrame::SelectorParentLanes::hideSelectorParentLanesModul
void hideSelectorParentLanesModul()
hide SelectorParentLanes
Definition: GNEAdditionalFrame.cpp:99
GNEAdditionalFrame::SelectorParentLanes::removeLastSelectedLane
void removeLastSelectedLane()
remove last added point
Definition: GNEAdditionalFrame.cpp:247
GNEAdditionalFrame::SelectorChildLanes::showSelectorChildLanesModul
void showSelectorChildLanesModul(std::string search="")
Show list of SelectorChildLanes Modul.
Definition: GNEAdditionalFrame.cpp:515
GNEAdditionalFrame::myParentAdditional
GNEFrameModuls::SelectorParent * myParentAdditional
Modul for select a single parent additional.
Definition: GNEAdditionalFrame.h:322
GNEAdditionalFrame::buildAdditionalOverLanes
bool buildAdditionalOverLanes(std::map< SumoXMLAttr, std::string > &valuesMap, GNELane *lane, const GNEAttributeCarrier::TagProperties &tagValues)
build additional over lanes
Definition: GNEAdditionalFrame.cpp:921
config.h
GNEAdditionalFrame::SelectorParentLanes::startConsecutiveLaneSelector
void startConsecutiveLaneSelector(GNELane *lane, const Position &clickedPosition)
start selection of consecutive lanes
Definition: GNEAdditionalFrame.cpp:108
GNEAdditionalFrame::SelectorChildLanes::SelectorChildLanes
SelectorChildLanes(GNEAdditionalFrame *additionalFrameParent)
FOX-declaration.
Definition: GNEAdditionalFrame.cpp:463
GNEAdditionalFrame::SelectorParentLanes::~SelectorParentLanes
~SelectorParentLanes()
destructor
Definition: GNEAdditionalFrame.cpp:86
GNEAdditionalFrame::SelectorChildLanes::onCmdInvertSelection
long onCmdInvertSelection(FXObject *, FXSelector, void *)
called when invert selection button is pressed
Definition: GNEAdditionalFrame.cpp:594
GNEAdditionalFrame::SelectorChildLanes::onCmdUseSelectedLanes
long onCmdUseSelectedLanes(FXObject *, FXSelector, void *)
Definition: GNEAdditionalFrame.cpp:548
GNEAdditionalFrame::SelectorChildLanes::onCmdSelectLane
long onCmdSelectLane(FXObject *, FXSelector, void *)
called when user select a lane of the list
Definition: GNEAdditionalFrame.cpp:577
GNEAdditionalFrame::GNEAdditionalFrame
GNEAdditionalFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
Definition: GNEAdditionalFrame.cpp:609
GNEAdditionalFrame::buildAdditionalWithParent
bool buildAdditionalWithParent(std::map< SumoXMLAttr, std::string > &valuesMap, GNEAdditional *parent, const GNEAttributeCarrier::TagProperties &tagValues)
build additional with Parent
Definition: GNEAdditionalFrame.cpp:774
GNEAdditionalFrame::SelectorChildEdges::myInvertEdgesSelection
FXButton * myInvertEdgesSelection
button for invert selection
Definition: GNEAdditionalFrame.h:188
GNEFrame.h
GNEAdditionalFrame::SelectorChildLanes::getLaneIdsSelected
std::string getLaneIdsSelected() const
get list of selecte lane ids in string format
Definition: GNEAdditionalFrame.cpp:493
GNEAdditionalFrame::SelectorChildEdges::~SelectorChildEdges
~SelectorChildEdges()
destructor
Definition: GNEAdditionalFrame.cpp:334
GNEAdditionalFrame::SelectorParentLanes::isSelectingLanes
bool isSelectingLanes() const
return true if modul is selecting lane
Definition: GNEAdditionalFrame.cpp:257
GNELane
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:45
GNEAdditionalFrame::SelectorParentLanes::addSelectedLane
bool addSelectedLane(GNELane *lane, const Position &clickedPosition)
return true if lane can be selected as consecutive lane
Definition: GNEAdditionalFrame.cpp:197
GNEAdditionalFrame::SelectorChildEdges::onCmdInvertSelection
long onCmdInvertSelection(FXObject *, FXSelector, void *)
called when invert selection button is pressed
Definition: GNEAdditionalFrame.cpp:448