void GNEDetectorE1::setAttribute(SumoXMLAttr key, const std::string& value) { switch (key) { case SUMO_ATTR_ID: changeAdditionalID(value); break; case SUMO_ATTR_LANE: changeLaneParents(this, value); break; case SUMO_ATTR_POSITION: myPositionOverLane = parse<double>(value); break; case SUMO_ATTR_FREQUENCY: myFreq = parse<double>(value); break; case SUMO_ATTR_FILE: myFilename = value; break; case SUMO_ATTR_NAME: myAdditionalName = value; break; case SUMO_ATTR_VTYPES: myVehicleTypes = value; break; case SUMO_ATTR_FRIENDLY_POS: myFriendlyPosition = parse<bool>(value); break; case GNE_ATTR_BLOCK_MOVEMENT: myBlockMovement = parse<bool>(value); break; case GNE_ATTR_SELECTED: if (parse<bool>(value)) { selectAttributeCarrier(); } else { unselectAttributeCarrier(); } break; case GNE_ATTR_GENERIC: setGenericParametersStr(value); break; default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } // check if updated attribute requieres update geometry if (myTagProperty.hasAttribute(key) && myTagProperty.getAttributeProperties(key).requiereUpdateGeometry()) { updateGeometry(); } }
void GNECalibrator::setAttribute(SumoXMLAttr key, const std::string& value) { switch (key) { case SUMO_ATTR_ID: changeAdditionalID(value); break; case SUMO_ATTR_EDGE: changeEdgeParents(this, value); break; case SUMO_ATTR_LANE: changeLaneParents(this, value); break; case SUMO_ATTR_POSITION: myPositionOverLane = parse<double>(value); break; case SUMO_ATTR_FREQUENCY: myFrequency = parse<double>(value); break; case SUMO_ATTR_NAME: myAdditionalName = value; break; case SUMO_ATTR_OUTPUT: myOutput = value; break; case SUMO_ATTR_ROUTEPROBE: myRouteProbe = value; break; case GNE_ATTR_SELECTED: if (parse<bool>(value)) { selectAttributeCarrier(); } else { unselectAttributeCarrier(); } break; case GNE_ATTR_GENERIC: setGenericParametersStr(value); break; default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } // check if updated attribute requieres update geometry if (myTagProperty.hasAttribute(key) && myTagProperty.getAttributeProperties(key).requiereUpdateGeometry()) { updateGeometry(); } }
void GNEStop::setAttribute(SumoXMLAttr key, const std::string& value) { switch (key) { case SUMO_ATTR_ID: changeDemandElementID(value); break; case SUMO_ATTR_DURATION: duration = string2time(value); break; case SUMO_ATTR_UNTIL: until = string2time(value); break; case SUMO_ATTR_INDEX: if (value == "fit") { index = STOP_INDEX_FIT; } else if (value == "end") { index = STOP_INDEX_END; } else { index = parse<int>(value); } break; case SUMO_ATTR_TRIGGERED: if (value.empty()) { parametersSet &= ~STOP_TRIGGER_SET; } else { triggered = parse<bool>(value); parametersSet |= STOP_TRIGGER_SET; } break; case SUMO_ATTR_CONTAINER_TRIGGERED: if (value.empty()) { parametersSet &= ~STOP_CONTAINER_TRIGGER_SET; } else { containerTriggered = parse<bool>(value); parametersSet |= STOP_CONTAINER_TRIGGER_SET; } break; case SUMO_ATTR_EXPECTED: if (value.empty()) { parametersSet &= ~STOP_EXPECTED_SET; } else { awaitedPersons = parse<std::set<std::string> >(value); parametersSet |= STOP_EXPECTED_SET; } break; case SUMO_ATTR_EXPECTED_CONTAINERS: if (value.empty()) { parametersSet &= ~STOP_EXPECTED_CONTAINERS_SET; } else { awaitedContainers = parse<std::set<std::string> >(value); parametersSet |= STOP_EXPECTED_CONTAINERS_SET; } break; case SUMO_ATTR_PARKING: if (value.empty()) { parametersSet &= ~STOP_PARKING_SET; } else { parking = parse<bool>(value); parametersSet |= STOP_PARKING_SET; } break; case SUMO_ATTR_ACTTYPE: // CHECK break; case SUMO_ATTR_TRIP_ID: if (value.empty()) { parametersSet &= ~STOP_TRIP_ID_SET; } else { tripId = value; parametersSet |= STOP_TRIP_ID_SET; } break; // specific of Stops over stoppingPlaces case SUMO_ATTR_BUS_STOP: case SUMO_ATTR_CONTAINER_STOP: case SUMO_ATTR_CHARGING_STATION: case SUMO_ATTR_PARKING_AREA: changeAdditionalParent(this, value, 0); break; // specific of Stops over lanes case SUMO_ATTR_LANE: changeLaneParents(this, value); break; case SUMO_ATTR_STARTPOS: if (value.empty()) { parametersSet &= ~STOP_START_SET; } else { startPos = parse<double>(value); parametersSet |= STOP_START_SET; } break; case SUMO_ATTR_ENDPOS: if (value.empty()) { parametersSet &= ~STOP_END_SET; } else { endPos = parse<double>(value); parametersSet |= STOP_END_SET; } break; case SUMO_ATTR_FRIENDLY_POS: myFriendlyPosition = parse<bool>(value); break; // case GNE_ATTR_SELECTED: if (parse<bool>(value)) { selectAttributeCarrier(); } else { unselectAttributeCarrier(); } break; case GNE_ATTR_GENERIC: setGenericParametersStr(value); break; default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } // check if updated attribute requieres update geometry if (myTagProperty.hasAttribute(key) && myTagProperty.getAttributeProperties(key).requiereUpdateGeometry()) { updateGeometry(true); } }
void GNEPOI::setAttribute(SumoXMLAttr key, const std::string& value) { switch (key) { case SUMO_ATTR_ID: { std::string oldID = myID; myID = value; myNet->changeShapeID(this, oldID); setMicrosimID(value); break; } case SUMO_ATTR_COLOR: setShapeColor(parse<RGBColor>(value)); break; case SUMO_ATTR_LANE: myLane = value; changeLaneParents(this, value); break; case SUMO_ATTR_POSITION: { if (getLaneParents().size() > 0) { myPosOverLane = parse<double>(value); } else { // first remove object from grid due position is used for boundary myNet->removeGLObjectFromGrid(this); // set position set(parse<Position>(value)); // set GEO Position myGEOPosition = *this; GeoConvHelper::getFinal().cartesian2geo(myGEOPosition); // add object into grid again myNet->addGLObjectIntoGrid(this); } break; } case SUMO_ATTR_POSITION_LAT: // first remove object from grid due position is used for boundary myNet->removeGLObjectFromGrid(this); myPosLat = parse<double>(value); // add object into grid again myNet->addGLObjectIntoGrid(this); break; case SUMO_ATTR_GEOPOSITION: { // first remove object from grid due position is used for boundary myNet->removeGLObjectFromGrid(this); myGEOPosition = parse<Position>(value); // set cartesian Position set(myGEOPosition); GeoConvHelper::getFinal().x2cartesian_const(*this); // add object into grid again myNet->addGLObjectIntoGrid(this); break; } case SUMO_ATTR_GEO: myGeo = parse<bool>(value); break; case SUMO_ATTR_TYPE: setShapeType(value); break; case SUMO_ATTR_LAYER: if (value == "default") { setShapeLayer(Shape::DEFAULT_LAYER_POI); } else { setShapeLayer(parse<double>(value)); } break; case SUMO_ATTR_IMGFILE: // first remove object from grid due img file affect to boundary myNet->removeGLObjectFromGrid(this); setShapeImgFile(value); // all textures must be refresh GUITexturesHelper::clearTextures(); // add object into grid again myNet->addGLObjectIntoGrid(this); break; case SUMO_ATTR_RELATIVEPATH: setShapeRelativePath(parse<bool>(value)); break; case SUMO_ATTR_WIDTH: // first remove object from grid due position is used for boundary myNet->removeGLObjectFromGrid(this); setWidth(parse<double>(value)); // add object into grid again myNet->addGLObjectIntoGrid(this); break; case SUMO_ATTR_HEIGHT: // first remove object from grid due position is used for boundary myNet->removeGLObjectFromGrid(this); setHeight(parse<double>(value)); // add object into grid again myNet->addGLObjectIntoGrid(this); break; case SUMO_ATTR_ANGLE: setShapeNaviDegree(parse<double>(value)); break; case GNE_ATTR_BLOCK_MOVEMENT: myBlockMovement = parse<bool>(value); break; case GNE_ATTR_SELECTED: if (parse<bool>(value)) { selectAttributeCarrier(); } else { unselectAttributeCarrier(); } break; case GNE_ATTR_GENERIC: setGenericParametersStr(value); break; default: throw InvalidArgument(getTagStr() + " attribute '" + toString(key) + "' not allowed"); } // check if updated attribute requieres update geometry if (myTagProperty.hasAttribute(key) && myTagProperty.getAttributeProperties(key).requiereUpdateGeometry()) { updateGeometry(); } }