Eclipse SUMO - Simulation of Urban MObility
GNEVehicleFrame.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 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 Vehicles/Flows/Trips/etc. elements
19 /****************************************************************************/
20 #include <config.h>
21 
22 #include <netedit/GNENet.h>
23 #include <netedit/GNEViewNet.h>
29 #include "GNEVehicleFrame.h"
30 
31 // ===========================================================================
32 // method definitions
33 // ===========================================================================
34 
35 // ---------------------------------------------------------------------------
36 // GNEVehicleFrame::HelpCreation - methods
37 // ---------------------------------------------------------------------------
38 
40  MFXGroupBoxModule(vehicleFrameParent, TL("Help")),
41  myVehicleFrameParent(vehicleFrameParent) {
43 }
44 
45 
47 
48 
49 void
51  // first update help cration
52  updateHelpCreation();
53  // show modul
54  show();
55 }
56 
57 
58 void
60  hide();
61 }
62 
63 void
65  // create information label
66  std::ostringstream information;
67  // set text depending of selected vehicle type
68  switch (myVehicleFrameParent->myVehicleTagSelector->getCurrentTemplateAC()->getTagProperty().getTag()) {
69  // vehicles
70  case SUMO_TAG_VEHICLE:
71  information
72  << "- " << TL("Click over a route to create a vehicle.");
73  break;
74  case SUMO_TAG_TRIP:
75  information
76  << "- " << TL("Select two edges to create a trip.");
77  break;
79  information
80  << "- " << TL("Select two edges to create a vehicle with embedded route.");
81  break;
83  information
84  << "- " << TL("Select two junctions to create a trip.");
85  break;
86  case GNE_TAG_TRIP_TAZS:
87  information
88  << "- " << TL("Select two TAZS to create a trip.");
89  break;
90  // flows
91  case GNE_TAG_FLOW_ROUTE:
92  information
93  << "- " << TL("Click over a route to create a routeFlow.");
94  break;
95  case SUMO_TAG_FLOW:
96  information
97  << "- " << TL("Select two edges to create a flow.");
98  break;
100  information
101  << "- " << TL("Select two edges to create a flow with embedded route.");
102  break;
104  information
105  << "- " << TL("Select two junctions to create a flow.");
106  break;
107  case GNE_TAG_FLOW_TAZS:
108  information
109  << "- " << TL("Select two TAZs to create a flow.");
110  break;
111  default:
112  break;
113  }
114  // set information label
115  myInformationLabel->setText(information.str().c_str());
116 }
117 
118 // ---------------------------------------------------------------------------
119 // GNEVehicleFrame - methods
120 // ---------------------------------------------------------------------------
121 
123  GNEFrame(viewParent, viewNet, TL("Vehicles")),
124  myRouteHandler("", viewNet->getNet(), true, false),
125  myVehicleBaseObject(new CommonXMLStructure::SumoBaseObject(nullptr)) {
126 
127  // Create item Selector module for vehicles
128  myVehicleTagSelector = new GNETagSelector(this, GNETagProperties::TagType::VEHICLE, SUMO_TAG_TRIP);
129 
130  // Create vehicle type selector and set DEFAULT_VTYPE_ID as default element
131  myTypeSelector = new GNEDemandElementSelector(this, SUMO_TAG_VTYPE, GNETagProperties::TagType::VEHICLE);
132 
133  // Create vehicle parameters
135 
136  // create GNEPathCreator Module
137  myPathCreator = new GNEPathCreator(this);
138 
139  // Create Help Creation Module
140  myHelpCreation = new HelpCreation(this);
141 
142  // create legend label
143  myPathLegend = new GNEPathLegendModule(this);
144 }
145 
146 
148  delete myVehicleBaseObject;
149 }
150 
151 
152 void
154  // refresh tag selector
156  // show frame
157  GNEFrame::show();
158 }
159 
160 
161 void
163  // reset edge candidates
164  for (const auto& edge : myViewNet->getNet()->getAttributeCarriers()->getEdges()) {
165  edge.second.second->resetCandidateFlags();
166  }
167  // reset junctioncandidates
168  for (const auto& junction : myViewNet->getNet()->getAttributeCarriers()->getJunctions()) {
169  junction.second.second->resetCandidateFlags();
170  }
171  // hide frame
172  GNEFrame::hide();
173 }
174 
175 
176 bool
178  // check template AC
179  if (myVehicleTagSelector->getCurrentTemplateAC() == nullptr) {
180  return false;
181  }
182  // begin cleaning vehicle base object
184  // obtain tag (only for improve code legibility)
186  const bool addEdge = ((vehicleTag == SUMO_TAG_TRIP) || (vehicleTag == GNE_TAG_VEHICLE_WITHROUTE) || (vehicleTag == SUMO_TAG_FLOW) || (vehicleTag == GNE_TAG_FLOW_WITHROUTE));
187  const bool addJunction = ((vehicleTag == GNE_TAG_TRIP_JUNCTIONS) || (vehicleTag == GNE_TAG_FLOW_JUNCTIONS));
188  const bool addTAZ = ((vehicleTag == GNE_TAG_TRIP_TAZS) || (vehicleTag == GNE_TAG_FLOW_TAZS));
189  // first check that current selected vehicle is valid
190  if (vehicleTag == SUMO_TAG_NOTHING) {
191  myViewNet->setStatusBarText(TL("Current selected vehicle isn't valid."));
192  return false;
193  }
194  // now check if VType is valid
195  if (myTypeSelector->getCurrentDemandElement() == nullptr) {
196  myViewNet->setStatusBarText(TL("Current selected vehicle type isn't valid."));
197  return false;
198  }
199  // now check if parameters are valid
202  return false;
203  }
204  // get vehicle attributes
206  // Check if ID has to be generated
209  }
210  // add VType
212  // set route or edges depending of vehicle type
214  return buildVehicleOverRoute(vehicleTag, viewObjects.getDemandElementFront());
215  } else if (addEdge && viewObjects.getEdgeFront()) {
216  // add clicked edge in GNEPathCreator
217  return myPathCreator->addEdge(viewObjects.getEdgeFront(), mouseButtonKeyPressed.shiftKeyPressed(), mouseButtonKeyPressed.controlKeyPressed());
218  } else if (addJunction && viewObjects.getJunctionFront()) {
219  // add clicked junction in GNEPathCreator
220  return myPathCreator->addJunction(viewObjects.getJunctionFront());
221  } else if (addTAZ && viewObjects.getTAZFront()) {
222  // add clicked TAZ in GNEPathCreator
223  return myPathCreator->addTAZ(viewObjects.getTAZFront());
224  } else {
225  return false;
226  }
227 }
228 
229 
232  return myVehicleTagSelector;
233 }
234 
235 
238  return myTypeSelector;
239 }
240 
241 
244  return myPathCreator;
245 }
246 
247 
250  return myVehicleAttributes;
251 }
252 
253 // ===========================================================================
254 // protected
255 // ===========================================================================
256 
257 void
260  // show vehicle type selector modul
262  // show path creator modul
264  // check if show path legend
267  } else {
269  }
270  } else {
271  // hide all moduls if tag isn't valid
277  }
278 }
279 
280 
281 void
284  // show vehicle attributes modul
286  // clear colors
289  // set current VTypeClass in pathCreator
291  // show path creator module
293  // show help creation
295  } else {
296  // hide all moduls if selected item isn't valid
301  }
302 }
303 
304 
305 bool
306 GNEVehicleFrame::createPath(const bool useLastRoute) {
307  // first check if parameters are valid
309  // obtain tag (only for improve code legibility)
311  // begin cleaning vehicle base object
313  // Updated myVehicleBaseObject
315  // Check if ID has to be generated
318  }
319  // add VType
321  // check if use last route
322  if (useLastRoute) {
323  // build vehicle using last route
324  return buildVehicleOverRoute(vehicleTag, myViewNet->getLastCreatedRoute());
325  } else {
326  // extract via attribute
327  std::vector<std::string> viaEdges;
328  for (int i = 1; i < ((int)myPathCreator->getSelectedEdges().size() - 1); i++) {
329  viaEdges.push_back(myPathCreator->getSelectedEdges().at(i)->getID());
330  }
331  // continue depending of tag
332  if ((vehicleTag == SUMO_TAG_TRIP) && (myPathCreator->getSelectedEdges().size() > 0)) {
333  // set tag
335  // Add parameter departure
338  }
339  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
341  // obtain trip parameters
342  SUMOVehicleParameter* tripParameters = SUMOVehicleParserHelper::parseVehicleAttributes(vehicleTag, SUMOSAXAttrs, false);
343  // check trip parameters
344  if (tripParameters) {
345  myVehicleBaseObject->setVehicleParameter(tripParameters);
349  // parse vehicle
351  // delete tripParameters and base object
352  delete tripParameters;
353  }
354  } else if ((vehicleTag == GNE_TAG_VEHICLE_WITHROUTE) && (myPathCreator->getPath().size() > 0)) {
355  // set tag
357  // Add parameter departure
360  }
361  // get route edges
362  std::vector<std::string> routeEdges;
363  for (const auto& subPath : myPathCreator->getPath()) {
364  for (const auto& edge : subPath.getSubPath()) {
365  routeEdges.push_back(edge->getID());
366  }
367  }
368  // avoid consecutive duplicated edges
369  routeEdges.erase(std::unique(routeEdges.begin(), routeEdges.end()), routeEdges.end());
370  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
372  // obtain vehicle parameters
373  SUMOVehicleParameter* vehicleParameters = SUMOVehicleParserHelper::parseVehicleAttributes(vehicleTag, SUMOSAXAttrs, false);
374  // continue depending of vehicleParameters
375  if (vehicleParameters) {
376  myVehicleBaseObject->setVehicleParameter(vehicleParameters);
377  // create route base object
379  embeddedRouteObject->setTag(SUMO_TAG_ROUTE);
380  embeddedRouteObject->addStringAttribute(SUMO_ATTR_ID, "");
381  embeddedRouteObject->addStringListAttribute(SUMO_ATTR_EDGES, routeEdges);
383  embeddedRouteObject->addIntAttribute(SUMO_ATTR_REPEAT, 0),
384  embeddedRouteObject->addTimeAttribute(SUMO_ATTR_CYCLETIME, 0),
385  // parse route
386  myRouteHandler.parseSumoBaseObject(embeddedRouteObject);
387  // delete vehicleParamters
388  delete vehicleParameters;
389  }
390  } else if ((vehicleTag == SUMO_TAG_FLOW) && (myPathCreator->getSelectedEdges().size() > 0)) {
391  // set tag
393  // set begin and end attributes
396  }
397  // adjust poisson value
400  }
401  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
403  // obtain flow parameters
404  SUMOVehicleParameter* flowParameters = SUMOVehicleParserHelper::parseFlowAttributes(vehicleTag, SUMOSAXAttrs, false, true, 0, SUMOTime_MAX);
405  // check flowParameters
406  if (flowParameters) {
407  myVehicleBaseObject->setVehicleParameter(flowParameters);
411  // parse vehicle
413  // delete flowParameters and base object
414  delete flowParameters;
415  }
416  } else if ((vehicleTag == GNE_TAG_FLOW_WITHROUTE) && (myPathCreator->getPath().size() > 0)) {
417  // set tag
419  // set begin and end attributes
422  }
423  // adjust poisson value
426  }
427  // get route edges
428  std::vector<std::string> routeEdges;
429  for (const auto& subPath : myPathCreator->getPath()) {
430  for (const auto& edge : subPath.getSubPath()) {
431  routeEdges.push_back(edge->getID());
432  }
433  }
434  // avoid consecutive duplicated edges
435  routeEdges.erase(std::unique(routeEdges.begin(), routeEdges.end()), routeEdges.end());
436  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
438  // obtain flow parameters
439  SUMOVehicleParameter* flowParameters = SUMOVehicleParserHelper::parseFlowAttributes(vehicleTag, SUMOSAXAttrs, false, true, 0, SUMOTime_MAX);
440  // continue depending of vehicleParameters
441  if (flowParameters) {
442  myVehicleBaseObject->setVehicleParameter(flowParameters);
443  // create under base object
445  embeddedRouteObject->setTag(SUMO_TAG_ROUTE);
446  embeddedRouteObject->addStringAttribute(SUMO_ATTR_ID, "");
447  embeddedRouteObject->addStringListAttribute(SUMO_ATTR_EDGES, routeEdges);
449  embeddedRouteObject->addIntAttribute(SUMO_ATTR_REPEAT, 0),
450  embeddedRouteObject->addTimeAttribute(SUMO_ATTR_CYCLETIME, 0),
451  // parse route
452  myRouteHandler.parseSumoBaseObject(embeddedRouteObject);
453  // delete vehicleParamters
454  delete flowParameters;
455  }
456  } else if ((vehicleTag == GNE_TAG_TRIP_JUNCTIONS) && (myPathCreator->getSelectedJunctions().size() > 0)) {
457  // set tag
459  // Add parameter departure
462  }
463  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
465  // obtain trip parameters
466  SUMOVehicleParameter* tripParameters = SUMOVehicleParserHelper::parseVehicleAttributes(vehicleTag, SUMOSAXAttrs, false);
467  // check trip parameters
468  if (tripParameters) {
469  myVehicleBaseObject->setVehicleParameter(tripParameters);
472  // parse vehicle
474  // delete tripParameters and base object
475  delete tripParameters;
476  }
477  } else if ((vehicleTag == GNE_TAG_TRIP_TAZS) && (myPathCreator->getSelectedTAZs().size() > 0)) {
478  // set tag
480  // Add parameter departure
483  }
484  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
486  // obtain trip parameters
487  SUMOVehicleParameter* tripParameters = SUMOVehicleParserHelper::parseVehicleAttributes(vehicleTag, SUMOSAXAttrs, false);
488  // check trip parameters
489  if (tripParameters) {
490  myVehicleBaseObject->setVehicleParameter(tripParameters);
493  // parse vehicle
495  // delete tripParameters and base object
496  delete tripParameters;
497  }
498  } else if ((vehicleTag == GNE_TAG_FLOW_JUNCTIONS) && (myPathCreator->getSelectedJunctions().size() > 0)) {
499  // set tag
501  // set begin and end attributes
504  }
505  // adjust poisson value
508  }
509  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
511  // obtain flow parameters
512  SUMOVehicleParameter* flowParameters = SUMOVehicleParserHelper::parseFlowAttributes(vehicleTag, SUMOSAXAttrs, false, true, 0, SUMOTime_MAX);
513  // check flowParameters
514  if (flowParameters) {
515  myVehicleBaseObject->setVehicleParameter(flowParameters);
518  // parse vehicle
520  // delete flowParameters and base object
521  delete flowParameters;
522  }
523  } else if ((vehicleTag == GNE_TAG_FLOW_TAZS) && (myPathCreator->getSelectedTAZs().size() > 0)) {
524  // set tag
526  // set begin and end attributes
529  }
530  // adjust poisson value
533  }
534  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
536  // obtain flow parameters
537  SUMOVehicleParameter* flowParameters = SUMOVehicleParserHelper::parseFlowAttributes(vehicleTag, SUMOSAXAttrs, false, true, 0, SUMOTime_MAX);
538  // check flowParameters
539  if (flowParameters) {
540  myVehicleBaseObject->setVehicleParameter(flowParameters);
543  // parse vehicle
545  // delete flowParameters and base object
546  delete flowParameters;
547  }
548  }
549  // abort path creation
551  // refresh myVehicleAttributes
553  return true;
554  }
555  }
556  return false;
557 }
558 
559 
560 bool
562  if (route && (route->getTagProperty().isRoute())) {
563  // check if departLane is valid
565  GNEAttributeCarrier::canParse<int>(myVehicleBaseObject->getStringAttribute(SUMO_ATTR_DEPARTLANE))) {
566  const int departLane = GNEAttributeCarrier::parse<int>(myVehicleBaseObject->getStringAttribute(SUMO_ATTR_DEPARTLANE));
567  if (departLane >= (int)route->getParentEdges().front()->getLanes().size()) {
569  return false;
570  }
571  }
572  // check if departSpeed is valid
574  double departSpeed = GNEAttributeCarrier::parse<double>(myVehicleBaseObject->getStringAttribute(SUMO_ATTR_DEPARTSPEED));
577  return false;
578  }
579  }
580  // check if we're creating a vehicle or a flow
581  if (vehicleTag == SUMO_TAG_VEHICLE) {
582  // set tag
584  // Add parameter departure
587  }
588  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
590  // obtain vehicle parameters in vehicleParameters
591  SUMOVehicleParameter* vehicleParameters = SUMOVehicleParserHelper::parseVehicleAttributes(vehicleTag, SUMOSAXAttrs, false);
592  // check if vehicle was successfully created)
593  if (vehicleParameters) {
594  vehicleParameters->routeid = route->getID();
595  myVehicleBaseObject->setVehicleParameter(vehicleParameters);
596  // parse vehicle
598  // delete vehicleParameters and sumoBaseObject
599  delete vehicleParameters;
600  }
601  } else {
602  // set tag
604  // set begin and end attributes
607  }
610  }
611  // adjust poisson value
614  }
615  // declare SUMOSAXAttributesImpl_Cached to convert valuesMap into SUMOSAXAttributes
617  // obtain routeFlow parameters in routeFlowParameters
618  SUMOVehicleParameter* routeFlowParameters = SUMOVehicleParserHelper::parseFlowAttributes(vehicleTag, SUMOSAXAttrs, false, true, 0, SUMOTime_MAX);
619  // check if flow was successfully created)
620  if (routeFlowParameters) {
621  routeFlowParameters->routeid = route->getID();
622  myVehicleBaseObject->setVehicleParameter(routeFlowParameters);
623  // parse flow
625  // delete vehicleParameters and sumoBaseObject
626  delete routeFlowParameters;
627  }
628  }
629  // center view after creation
631  if (vehicle && !myViewNet->getVisibleBoundary().around(vehicle->getPositionInView())) {
632  myViewNet->centerTo(vehicle->getPositionInView(), false);
633  }
634  // refresh myVehicleAttributes
636  // all ok, then return true;
637  return true;
638  } else {
639  myViewNet->setStatusBarText(toString(vehicleTag) + " has to be placed within a route.");
640  return false;
641  }
642 }
643 
644 /****************************************************************************/
#define GUIDesignLabelFrameInformation
label extended over frame without thick and with text justify to left, used to show information in fr...
Definition: GUIDesigns.h:285
#define TL(string)
Definition: MsgHandler.h:315
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
Definition: SUMOTime.cpp:69
#define SUMOTime_MAX
Definition: SUMOTime.h:34
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ GNE_TAG_TRIP_JUNCTIONS
a trip between junctions
@ GNE_TAG_TRIP_TAZS
a single trip definition that uses TAZs
@ SUMO_TAG_VTYPE
description of a vehicle/person/container type
@ SUMO_TAG_NOTHING
invalid tag, must be the last one
@ SUMO_TAG_VEHICLE
description of a vehicle
@ GNE_TAG_FLOW_ROUTE
a flow definition using a route instead of a from-to edges route
@ GNE_TAG_FLOW_JUNCTIONS
a flow between junctions
@ GNE_TAG_FLOW_WITHROUTE
description of a vehicle with an embedded route
@ SUMO_TAG_FLOW
a flow definition using from and to edges or a route
@ GNE_TAG_FLOW_TAZS
a flow between TAZs
@ SUMO_TAG_ROUTE
begin/end of the description of a route
@ GNE_TAG_VEHICLE_WITHROUTE
description of a vehicle with an embedded route
@ SUMO_TAG_TRIP
a single trip definition (used by router)
@ SUMO_ATTR_DEPART
@ SUMO_ATTR_FROM_JUNCTION
@ SUMO_ATTR_VIA
@ SUMO_ATTR_TO_JUNCTION
@ SUMO_ATTR_BEGIN
weights: time range begin
@ SUMO_ATTR_EDGES
the edges of a route
@ GNE_ATTR_POISSON
poisson definition (used in flow)
@ SUMO_ATTR_PERIOD
@ SUMO_ATTR_TO_TAZ
@ SUMO_ATTR_DEPARTSPEED
@ SUMO_ATTR_TO
@ SUMO_ATTR_FROM
@ SUMO_ATTR_END
weights: time range end
@ SUMO_ATTR_FROM_TAZ
@ SUMO_ATTR_DEPARTLANE
@ SUMO_ATTR_TYPE
@ SUMO_ATTR_COLOR
A color information.
@ SUMO_ATTR_MAXSPEED
@ SUMO_ATTR_ID
@ SUMO_ATTR_REPEAT
@ SUMO_ATTR_CYCLETIME
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:46
bool around(const Position &p, double offset=0) const
Returns whether the boundary contains the given coordinate.
Definition: Boundary.cpp:172
void addIntAttribute(const SumoXMLAttr attr, const int value)
add int attribute into current SumoBaseObject node
SUMOTime getTimeAttribute(const SumoXMLAttr attr) const
get time attribute
bool hasStringAttribute(const SumoXMLAttr attr) const
has function
std::map< std::string, std::string > getAllAttributes() const
get all attributes in string format
void setTag(const SumoXMLTag tag)
set SumoBaseObject tag
bool hasTimeAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given time attribute
SumoXMLTag getTag() const
get XML myTag
void addTimeAttribute(const SumoXMLAttr attr, const SUMOTime value)
add time attribute into current SumoBaseObject node
void addStringListAttribute(const SumoXMLAttr attr, const std::vector< std::string > &value)
add string list attribute into current SumoBaseObject node
void setVehicleParameter(const SUMOVehicleParameter *vehicleParameter)
set vehicle parameters
void addStringAttribute(const SumoXMLAttr attr, const std::string &value)
add string attribute into current SumoBaseObject node
void clear()
clear SumoBaseObject
void addColorAttribute(const SumoXMLAttr attr, const RGBColor &value)
add color attribute into current SumoBaseObject node
const std::string & getStringAttribute(const SumoXMLAttr attr) const
get string attribute
const std::string getID() const
get ID (all Attribute Carriers have one)
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
void getAttributesAndValues(CommonXMLStructure::SumoBaseObject *baseObject, bool includeAll) const
get attributes and their values
bool areValuesValid() const
check if parameters of attributes are valid
void showAttributesCreatorModule(GNEAttributeCarrier *templateAC, const std::vector< SumoXMLAttr > &hiddenAttributes)
show GNEAttributesCreator modul
void hideAttributesCreatorModule()
hide group box
void showWarningMessage(std::string extra="") const
show warning message with information about non-valid attributes
void refreshAttributesCreator()
refresh attribute creator
virtual SUMOVehicleClass getVClass() const =0
obtain VClass related with this demand element
virtual double getAttributeDouble(SumoXMLAttr key) const =0
void showDemandElementSelector()
show demand element selector
GNEDemandElement * getCurrentDemandElement() const
get current demand element
void hideDemandElementSelector()
hide demand element selector
GNEViewNet * myViewNet
FOX need this.
Definition: GNEFrame.h:117
virtual void show()
show Frame
Definition: GNEFrame.cpp:115
virtual void hide()
hide Frame
Definition: GNEFrame.cpp:124
const std::vector< std::string > & getPredefinedTagsMML() const
get predefinedTagsMML
Definition: GNEFrame.cpp:311
const std::vector< GNEEdge * > & getParentEdges() const
get parent edges
std::string generateDemandElementID(SumoXMLTag tag) const
generate demand element id
const std::map< std::string, std::pair< const GUIGlObject *, GNEEdge * > > & getEdges() const
map with the ID and pointer to edges of net
const std::map< std::string, std::pair< const GUIGlObject *, GNEJunction * > > & getJunctions() const
get junctions
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
Definition: GNENet.cpp:123
const std::vector< GNETAZ * > & getSelectedTAZs() const
get current selected TAZs
void abortPathCreation()
abort path creation
bool addTAZ(GNETAZ *taz)
add TAZ
const std::vector< GNEJunction * > & getSelectedJunctions() const
get current selected junctions
const std::vector< GNEEdge * > & getSelectedEdges() const
get current selected edges
void clearEdgeColors()
clear edge colors
bool addEdge(GNEEdge *edge, const bool shiftKeyPressed, const bool controlKeyPressed)
add edge
bool addJunction(GNEJunction *junction)
add junction
void setVClass(SUMOVehicleClass vClass)
set vClass
void showPathCreatorModule(const GNETagProperties &tagProperty, const bool consecutives)
show GNEPathCreator for the given tag
const std::vector< Path > & getPath() const
get path route
void clearJunctionColors()
clear junction colors
void hidePathCreatorModule()
show GNEPathCreator
void hidePathLegendModule()
hide Legend modul
void showPathLegendModule()
show Legend modul
bool isRoute() const
return true if tag correspond to a route element
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
bool vehicleRouteEmbedded() const
return true if tag correspond to a vehicle placed over an embedded route
bool vehicleRoute() const
plan parents
void refreshTagSelector()
refresh tagSelector (used when frameParent is show)
GNEAttributeCarrier * getCurrentTemplateAC() const
get current templateAC
void showHelpCreation()
show HelpCreation
MFXDynamicLabel * myInformationLabel
Label with creation information.
void hideHelpCreation()
hide HelpCreation
void updateHelpCreation()
update HelpCreation
HelpCreation(GNEVehicleFrame *vehicleFrameParent)
constructor
GNEAttributesCreator * myVehicleAttributes
internal vehicle attributes
GNETagSelector * myVehicleTagSelector
vehicle tag selector (used to select diffent kind of vehicles)
void hide()
hide Frame
GNEPathCreator * getPathCreator() const
get GNEPathCreator module
GNERouteHandler myRouteHandler
route handler
GNEDemandElementSelector * myTypeSelector
Vehicle Type selectors.
bool createPath(const bool useLastRoute)
create path
CommonXMLStructure::SumoBaseObject * myVehicleBaseObject
vehicle base object
GNEAttributesCreator * getVehicleAttributes() const
get attributes creator
~GNEVehicleFrame()
Destructor.
void show()
show Frame
GNEPathCreator * myPathCreator
edge path creator (used for trips and flows)
bool buildVehicleOverRoute(SumoXMLTag vehicleTag, GNEDemandElement *route)
build vehicle over route
GNEDemandElementSelector * getTypeSelector() const
getVehicle Type selectors
void tagSelected()
Tag selected in GNETagSelector.
HelpCreation * myHelpCreation
Help creation.
GNEVehicleFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
void demandElementSelected()
selected vehicle type in DemandElementSelector
GNEPathLegendModule * myPathLegend
path legend modul
bool addVehicle(const GNEViewNetHelper::ViewObjectsSelector &viewObjects, const GNEViewNetHelper::MouseButtonKeyPressed &mouseButtonKeyPressed)
add vehicle element
GNETagSelector * getVehicleTagSelector() const
get vehicle tag selector (needed for transform vehicles)
class used to group all variables related with objects under cursor after a click over view
GNEEdge * getEdgeFront() const
get front edge or a pointer to nullptr
GNETAZ * getTAZFront() const
get front TAZ or a pointer to nullptr
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
GNEDemandElement * getDemandElementFront() const
get front demand element or a pointer to nullptr
GNENet * getNet() const
get the net object
GNEDemandElement * getLastCreatedRoute() const
get last created route
void setStatusBarText(const std::string &text)
set statusBar text
Definition: GNEViewNet.cpp:807
A single child window which contains a view of the simulation area.
Definition: GNEViewParent.h:88
Boundary getVisibleBoundary() const
get visible boundary
virtual void centerTo(GUIGlID id, bool applyZoom, double zoomDist=20)
centers to the chosen artifact
A list item which allows for custom coloring.
MFXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)
static const RGBColor INVISIBLE
Definition: RGBColor.h:195
void parseSumoBaseObject(CommonXMLStructure::SumoBaseObject *obj)
parse SumoBaseObject (it's called recursivelly)
Encapsulated Xerces-SAX-attributes.
Structure representing possible vehicle parameter.
std::string routeid
The vehicle's route id.
static SUMOVehicleParameter * parseVehicleAttributes(int element, const SUMOSAXAttributes &attrs, const bool hardFail, const bool optionalID=false, const bool skipDepart=false, const bool allowInternalRoutes=false)
Parses a vehicle's attributes.
static SUMOVehicleParameter * parseFlowAttributes(SumoXMLTag tag, const SUMOSAXAttributes &attrs, const bool hardFail, const bool needID, const SUMOTime beginDefault, const SUMOTime endDefault, const bool allowInternalRoutes=false)
Parses a flow's attributes.
class used to group all variables related with mouse buttons and key pressed after certain events
bool shiftKeyPressed() const
check if SHIFT is pressed during current event
bool controlKeyPressed() const
check if CONTROL is pressed during current event