GUIParameterTableWindow* GUIMEInductLoop::MyWrapper::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& /* parent */) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 2); // add items /* ret->mkItem("flow [veh/h]", true, new FuncBinding_IntParam<GUIMEInductLoop, SUMOReal>( &(getLoop()), &GUIMEInductLoop::getFlow, 1)); ret->mkItem("mean speed [m/s]", true, new FuncBinding_IntParam<GUIMEInductLoop, SUMOReal>( &(getLoop()), &GUIMEInductLoop::getMeanSpeed, 1)); ret->mkItem("occupancy [%]", true, new FuncBinding_IntParam<GUIMEInductLoop, SUMOReal>( &(getLoop()), &GUIMEInductLoop::getOccupancy, 1)); ret->mkItem("mean vehicle length [m]", true, new FuncBinding_IntParam<GUIMEInductLoop, SUMOReal>( &(getLoop()), &GUIMEInductLoop::getMeanVehicleLength, 1)); ret->mkItem("empty time [s]", true, new FunctionBinding<GUIMEInductLoop, SUMOReal>( &(getLoop()), &GUIMEInductLoop::getTimestepsSinceLastDetection)); */ // ret->mkItem("position [m]", false, myPosition); ret->mkItem("lane", false, myDetector.mySegment->getID()); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GNELane::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 2); // add items ret->mkItem("length [m]", false, myParentEdge.getNBEdge()->getLength()); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GNEInternalLane::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 2); // add items // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow * GUILaneWrapper::getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &) throw() { GUIParameterTableWindow *ret = new GUIParameterTableWindow(app, *this, 2); // add items ret->mkItem("maxspeed [m/s]", false, myLane.getMaxSpeed()); ret->mkItem("length [m]", false, myLane.getLength()); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUILaneSpeedTrigger::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 1); // add items ret->mkItem("speed [m/s]", true, new FunctionBinding<GUILaneSpeedTrigger, SUMOReal>(this, &GUILaneSpeedTrigger::getCurrentSpeed)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIContainerStop::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 4); // add items ret->mkItem("begin position [m]", false, myBegPos); ret->mkItem("end position [m]", false, myEndPos); ret->mkItem("container number [#]", true, new FunctionBinding<GUIContainerStop, int>(this, &MSStoppingPlace::getTransportableNumber)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIInstantInductLoop::MyWrapper::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& /*parent !!! recheck this - never needed?*/) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 7); // add items // parameter ret->mkItem("position [m]", false, myPosition); ret->mkItem("lane", false, myDetector.getLane()->getID()); // values // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GNEDemandElement::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { // Create table GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, myTagProperty.getNumberOfAttributes()); // Iterate over attributes for (const auto& i : myTagProperty) { // Add attribute and set it dynamic if aren't unique if (i.second.isUnique()) { ret->mkItem(toString(i.first).c_str(), false, getAttribute(i.first)); } else { ret->mkItem(toString(i.first).c_str(), true, getAttribute(i.first)); } } // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIE3Collector::MyWrapper::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 3); // add items // values ret->mkItem("vehicles within [#]", true, new FunctionBinding<MSE3Collector, SUMOReal>(&myDetector, &MSE3Collector::getVehiclesWithin)); ret->mkItem("mean speed [m/s]", true, new FunctionBinding<MSE3Collector, SUMOReal>(&myDetector, &MSE3Collector::getCurrentMeanSpeed)); ret->mkItem("haltings [#]", true, new FunctionBinding<MSE3Collector, SUMOReal>(&myDetector, &MSE3Collector::getCurrentHaltingNumber)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUILane::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 5); // add items ret->mkItem("maxspeed [m/s]", false, getSpeedLimit()); ret->mkItem("length [m]", false, myLength); ret->mkItem("street name", false, myEdge->getStreetName()); ret->mkItem("stored traveltime [s]", true, new FunctionBinding<GUILane, SUMOReal>(this, &GUILane::getStoredEdgeTravelTime)); ret->mkItem("allowed vehicle class", false, getVehicleClassNames(myPermissions)); ret->mkItem("disallowed vehicle class", false, getVehicleClassNames(~myPermissions)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIChargingStation::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { // Create table items GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 6); // add items ret->mkItem("begin position [m]", false, myBegPos); ret->mkItem("end position [m]", false, myEndPos); ret->mkItem("charging power [W]", false, myChargingPower); ret->mkItem("charging myEfficiency []", false, myEfficiency); ret->mkItem("charge in transit [true/false]", false, myChargeInTransit); ret->mkItem("charge delay [s]", false, myChargeDelay); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUILaneWrapper::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 4); // add items ret->mkItem("maxspeed [m/s]", false, myLane.getSpeedLimit()); ret->mkItem("length [m]", false, myLane.getLength()); ret->mkItem("permissions", false, getAllowedVehicleClassNames(myLane.getPermissions())); ret->mkItem("street name", false, myLane.getEdge().getStreetName()); ret->mkItem("stored traveltime [s]", true, new FunctionBinding<GUILaneWrapper, SUMOReal>(this, &GUILaneWrapper::getStoredEdgeTravelTime)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIParkingArea::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 5); // add items ret->mkItem("name", false, getMyName()); ret->mkItem("begin position [m]", false, myBegPos); ret->mkItem("end position [m]", false, myEndPos); ret->mkItem("occupancy [#]", true, getOccupancy()); ret->mkItem("capacity [#]", false, getCapacity()); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIInductLoop::MyWrapper::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& /*parent !!! recheck this - never needed?*/) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 7); // add items // parameter ret->mkItem("position [m]", false, myPosition); ret->mkItem("lane", false, myDetector.getLane()->getID()); // values ret->mkItem("passed vehicles [#]", true, new FunctionBinding<GUIInductLoop, unsigned int>(&myDetector, &GUIInductLoop::getCurrentPassedNumber)); ret->mkItem("speed [m/s]", true, new FunctionBinding<GUIInductLoop, SUMOReal>(&myDetector, &GUIInductLoop::getCurrentSpeed)); ret->mkItem("occupancy [%]", true, new FunctionBinding<GUIInductLoop, SUMOReal>(&myDetector, &GUIInductLoop::getCurrentOccupancy)); ret->mkItem("vehicle length [m]", true, new FunctionBinding<GUIInductLoop, SUMOReal>(&myDetector, &GUIInductLoop::getCurrentLength)); ret->mkItem("empty time [s]", true, new FunctionBinding<GUIInductLoop, SUMOReal>(&(getLoop()), &GUIInductLoop::getTimestepsSinceLastDetection)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIEdge::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& parent) { GUIParameterTableWindow* ret = 0; ret = new GUIParameterTableWindow(app, *this, 18); // add edge items ret->mkItem("length [m]", false, (*myLanes)[0]->getLength()); ret->mkItem("allowed speed [m/s]", false, getAllowedSpeed()); ret->mkItem("brutto occupancy [%]", true, new FunctionBinding<GUIEdge, SUMOReal>(this, &GUIEdge::getBruttoOccupancy, 100.)); ret->mkItem("mean vehicle speed [m/s]", true, new FunctionBinding<GUIEdge, SUMOReal>(this, &GUIEdge::getMeanSpeed)); ret->mkItem("flow [veh/h/lane]", true, new FunctionBinding<GUIEdge, SUMOReal>(this, &GUIEdge::getFlow)); ret->mkItem("routing speed [m/s]", true, new FunctionBinding<MSEdge, SUMOReal>(this, &MSEdge::getRoutingSpeed)); ret->mkItem("#vehicles", true, new CastingFunctionBinding<GUIEdge, SUMOReal, int>(this, &GUIEdge::getVehicleNo)); ret->mkItem("vehicle ids", false, getVehicleIDs()); // add segment items MESegment* segment = getSegmentAtPosition(parent.getPositionInformation()); ret->mkItem("segment index", false, segment->getIndex()); ret->mkItem("segment queues", false, segment->numQueues()); ret->mkItem("segment length [m]", false, segment->getLength()); ret->mkItem("segment allowed speed [m/s]", false, segment->getEdge().getSpeedLimit()); ret->mkItem("segment jam threshold [%]", false, segment->getRelativeJamThreshold() * 100); ret->mkItem("segment brutto occupancy [%]", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getRelativeOccupancy, 100)); ret->mkItem("segment mean vehicle speed [m/s]", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getMeanSpeed)); ret->mkItem("segment flow [veh/h/lane]", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getFlow)); ret->mkItem("segment #vehicles", true, new CastingFunctionBinding<MESegment, SUMOReal, int>(segment, &MESegment::getCarNumber)); ret->mkItem("segment leader leave time", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getEventTimeSeconds)); ret->mkItem("segment headway [s]", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getLastHeadwaySeconds)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUICalibrator::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret; if (isActive()) { ret = new GUIParameterTableWindow(app, *this, 10); // add items ret->mkItem("interval start", false, STEPS2TIME(myCurrentStateInterval->begin)); ret->mkItem("interval end", false, STEPS2TIME(myCurrentStateInterval->end)); ret->mkItem("aspired flow [veh/h]", false, myCurrentStateInterval->q); ret->mkItem("aspired speed", false, myCurrentStateInterval->v); ret->mkItem("default speed", false, myDefaultSpeed); ret->mkItem("required vehicles", true, new FunctionBinding<GUICalibrator, int>(this, &GUICalibrator::totalWished)); ret->mkItem("passed vehicles", true, new FunctionBinding<GUICalibrator, int>(this, &GUICalibrator::passed)); ret->mkItem("inserted vehicles", true, new FunctionBinding<GUICalibrator, int>(this, &GUICalibrator::inserted)); ret->mkItem("removed vehicles", true, new FunctionBinding<GUICalibrator, int>(this, &GUICalibrator::removed)); ret->mkItem("cleared in jam", true, new FunctionBinding<GUICalibrator, int>(this, &GUICalibrator::clearedInJam)); } else { ret = new GUIParameterTableWindow(app, *this, 1); const std::string nextStart = (myCurrentStateInterval != myIntervals.end() ? time2string(myCurrentStateInterval->begin) : "simulation end"); ret->mkItem("inactive until", false, nextStart); } // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIEdge::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& parent) { GUIParameterTableWindow* ret = 0; #ifdef HAVE_INTERNAL ret = new GUIParameterTableWindow(app, *this, 16); // add edge items ret->mkItem("length [m]", false, (*myLanes)[0]->getLength()); ret->mkItem("allowed speed [m/s]", false, getAllowedSpeed()); ret->mkItem("occupancy [%]", true, new FunctionBinding<GUIEdge, SUMOReal>(this, &GUIEdge::getBruttoOccupancy, 100.)); ret->mkItem("mean vehicle speed [m/s]", true, new FunctionBinding<GUIEdge, SUMOReal>(this, &GUIEdge::getMeanSpeed)); ret->mkItem("flow [veh/h/lane]", true, new FunctionBinding<GUIEdge, SUMOReal>(this, &GUIEdge::getFlow)); ret->mkItem("#vehicles", true, new CastingFunctionBinding<GUIEdge, SUMOReal, unsigned int>(this, &GUIEdge::getVehicleNo)); ret->mkItem("vehicle ids", false, getVehicleIDs()); // add segment items MESegment* segment = getSegmentAtPosition(parent.getPositionInformation()); ret->mkItem("segment index", false, segment->getIndex()); ret->mkItem("segment length [m]", false, segment->getLength()); ret->mkItem("segment allowed speed [m/s]", false, segment->getMaxSpeed()); ret->mkItem("segment jam threshold [%]", false, segment->getRelativeJamThreshold()); ret->mkItem("segment occupancy [%]", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getRelativeOccupancy)); ret->mkItem("segment mean vehicle speed [m/s]", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getMeanSpeed)); ret->mkItem("segment flow [veh/h/lane]", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getFlow)); ret->mkItem("segment #vehicles", true, new CastingFunctionBinding<MESegment, SUMOReal, size_t>(segment, &MESegment::getCarNumber)); ret->mkItem("segment leader leave time", true, new FunctionBinding<MESegment, SUMOReal>(segment, &MESegment::getEventTimeSeconds)); // close building ret->closeBuilding(); #else UNUSED_PARAMETER(app); UNUSED_PARAMETER(parent); #endif return ret; }
GUIParameterTableWindow* GUIMEVehicle::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 21); // add items ret->mkItem("edge [id]", false, getEdge()->getID()); ret->mkItem("segment [#]", false, getSegment()->getIndex()); ret->mkItem("position [m]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MEVehicle::getPositionOnLane)); ret->mkItem("speed [m/s]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MEVehicle::getSpeed)); ret->mkItem("angle [degree]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIBaseVehicle::getNaviDegree)); ret->mkItem("waiting time [s]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MEVehicle::getWaitingSeconds)); if (getChosenSpeedFactor() != 1) { ret->mkItem("speed factor", false, getChosenSpeedFactor()); } //ret->mkItem("time gap [s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MSVehicle::getTimeGap)); //ret->mkItem("waiting time [s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MSVehicle::getWaitingSeconds)); //ret->mkItem("impatience", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MSVehicle::getImpatience)); //ret->mkItem("last lane change [s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getLastLaneChangeOffset)); ret->mkItem("desired depart [s]", false, time2string(getParameter().depart)); ret->mkItem("depart delay [s]", false, time2string(getDepartDelay())); if (getParameter().repetitionNumber < INT_MAX) { ret->mkItem("remaining [#]", false, (unsigned int) getParameter().repetitionNumber - getParameter().repetitionsDone); } if (getParameter().repetitionOffset > 0) { ret->mkItem("insertion period [s]", false, time2string(getParameter().repetitionOffset)); } if (getParameter().repetitionProbability > 0) { ret->mkItem("insertion probability", false, getParameter().repetitionProbability); } //ret->mkItem("stop info", false, getStopInfo()); ret->mkItem("line", false, myParameter->line); //ret->mkItem("CO2 [mg/s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getCO2Emissions)); //ret->mkItem("CO [mg/s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getCOEmissions)); //ret->mkItem("HC [mg/s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getHCEmissions)); //ret->mkItem("NOx [mg/s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getNOxEmissions)); //ret->mkItem("PMx [mg/s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getPMxEmissions)); //ret->mkItem("fuel [ml/s]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getFuelConsumption)); //ret->mkItem("noise (Harmonoise) [dB]", true, // new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &GUIMEVehicle::getHarmonoise_NoiseEmissions)); std::ostringstream str; for (std::vector<MSDevice*>::const_iterator i = myDevices.begin(); i != myDevices.end(); ++i) { if (i != myDevices.begin()) { str << ' '; } str << (*i)->getID().substr(0, (*i)->getID().find(getID())); } ret->mkItem("devices", false, str.str()); //ret->mkItem("persons", true, // new FunctionBinding<GUIMEVehicle, unsigned int>(this, &GUIMEVehicle::getPersonNumber)); //ret->mkItem("containers", true, // new FunctionBinding<GUIMEVehicle, unsigned int>(this, &GUIMEVehicle::getContainerNumber)); ret->mkItem("parameters [key:val]", false, toString(getParameter().getMap())); // meso specific values ret->mkItem("event time [s]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MEVehicle::getEventTimeSeconds)); ret->mkItem("entry time [s]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MEVehicle::getLastEntryTimeSeconds)); ret->mkItem("block time [s]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MEVehicle::getBlockTimeSeconds)); ret->mkItem("tls penalty [s]", true, new FunctionBinding<GUIMEVehicle, SUMOReal>(this, &MEVehicle::getCurrentTLSPenaltySeconds)); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIMEVehicle::getTypeParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 10); // add items ret->mkItem("Type Information:", false, ""); ret->mkItem("type [id]", false, myType->getID()); ret->mkItem("length", false, myType->getLength()); ret->mkItem("minGap", false, myType->getMinGap()); ret->mkItem("vehicle class", false, SumoVehicleClassStrings.getString(myType->getVehicleClass())); ret->mkItem("emission class", false, PollutantsInterface::getName(myType->getEmissionClass())); ret->mkItem("maximum speed [m/s]", false, getMaxSpeed()); //ret->mkItem("maximum acceleration [m/s^2]", false, getCarFollowModel().getMaxAccel()); //ret->mkItem("maximum deceleration [m/s^2]", false, getCarFollowModel().getMaxDecel()); //ret->mkItem("imperfection (sigma)", false, getCarFollowModel().getImperfection()); //ret->mkItem("reaction time (tau)", false, getCarFollowModel().getHeadwayTime()); ret->mkItem("person capacity", false, myType->getPersonCapacity()); ret->mkItem("container capacity", false, myType->getContainerCapacity()); ret->mkItem("type parameters [key:val]", false, toString(myType->getParameter().getMap())); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIPerson::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 16); // add items //ret->mkItem("type [NAME]", false, myType->getID()); ret->mkItem("stage", false, getCurrentStageDescription()); ret->mkItem("start edge [id]", false, getFromEdge()->getID()); ret->mkItem("dest edge [id]", false, getDestination().getID()); ret->mkItem("edge [id]", false, getEdge()->getID()); ret->mkItem("position [m]", true, new FunctionBinding<GUIPerson, SUMOReal>(this, &GUIPerson::getEdgePos)); ret->mkItem("speed [m/s]", true, new FunctionBinding<GUIPerson, SUMOReal>(this, &GUIPerson::getSpeed)); ret->mkItem("angle [degree]", true, new FunctionBinding<GUIPerson, SUMOReal>(this, &GUIPerson::getNaviDegree)); ret->mkItem("waiting time [s]", true, new FunctionBinding<GUIPerson, SUMOReal>(this, &GUIPerson::getWaitingSeconds)); ret->mkItem("parameters [key:val]", false, toString(getParameter().getMap())); ret->mkItem("", false, ""); ret->mkItem("Type Information:", false, ""); ret->mkItem("type [id]", false, myVType->getID()); ret->mkItem("length", false, myVType->getLength()); ret->mkItem("minGap", false, myVType->getMinGap()); ret->mkItem("maximum speed [m/s]", false, myVType->getMaxSpeed()); ret->mkItem("type parameters [key:val]", false, toString(myVType->getParameter().getMap())); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUINet::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 19); // add items ret->mkItem("loaded vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getLoadedVehicleNo)); ret->mkItem("waiting vehicles [#]", true, new FunctionBinding<MSInsertionControl, unsigned int>(&getInsertionControl(), &MSInsertionControl::getWaitingVehicleNo)); ret->mkItem("departed vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getDepartedVehicleNo)); ret->mkItem("running vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getRunningVehicleNo)); ret->mkItem("arrived vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getEndedVehicleNo)); ret->mkItem("collisions [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getCollisionCount)); ret->mkItem("teleports [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getTeleportCount)); ret->mkItem("end time [s]", false, OptionsCont::getOptions().getString("end")); ret->mkItem("begin time [s]", false, OptionsCont::getOptions().getString("begin")); // ret->mkItem("time step [s]", true, new FunctionBinding<GUINet, SUMOTime>(this, &GUINet::getCurrentTimeStep)); if (logSimulationDuration()) { ret->mkItem("step duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getWholeDuration)); ret->mkItem("simulation duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getSimDuration)); /* ret->mkItem("visualisation duration [ms]", true, new CastingFunctionBinding<GUINet, SUMOReal, int>( &(getNet()), &GUINet::getVisDuration)); */ ret->mkItem("idle duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getIdleDuration)); ret->mkItem("duration factor []", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getRTFactor)); /* ret->mkItem("mean duration factor []", true, new FuncBinding_IntParam<GUINet, SUMOReal>( &(getNet()), &GUINet::getMeanRTFactor), 1); */ ret->mkItem("ups [#]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getUPS)); ret->mkItem("mean ups [#]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getMeanUPS)); } ret->mkItem("nodes [#]", false, (int)myJunctions->size()); ret->mkItem("edges [#]", false, (int)GUIEdge::getIDs(false).size()); ret->mkItem("total edge length [km]", false, GUIEdge::getTotalLength(false, false) / 1000); ret->mkItem("total lane length [km]", false, GUIEdge::getTotalLength(false, true) / 1000); // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow * GUINet::getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &) throw() { GUIParameterTableWindow *ret = new GUIParameterTableWindow(app, *this, 13); // add items ret->mkItem("vehicles running [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getRunningVehicleNo)); ret->mkItem("vehicles ended [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getEndedVehicleNo)); ret->mkItem("vehicles emitted [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getEmittedVehicleNo)); ret->mkItem("vehicles loaded [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getLoadedVehicleNo)); ret->mkItem("vehicles waiting [#]", true, new FunctionBinding<MSEmitControl, unsigned int>(&getEmitControl(), &MSEmitControl::getWaitingVehicleNo)); ret->mkItem("end time [s]", false, OptionsCont::getOptions().getString("end")); ret->mkItem("begin time [s]", false, OptionsCont::getOptions().getString("begin")); // ret->mkItem("time step [s]", true, new FunctionBinding<GUINet, SUMOTime>(this, &GUINet::getCurrentTimeStep)); if (logSimulationDuration()) { ret->mkItem("step duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getWholeDuration)); ret->mkItem("simulation duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getSimDuration)); /* ret->mkItem("visualisation duration [ms]", true, new CastingFunctionBinding<GUINet, SUMOReal, int>( &(getNet()), &GUINet::getVisDuration)); */ ret->mkItem("idle duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getIdleDuration)); ret->mkItem("duration factor []", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getRTFactor)); /* ret->mkItem("mean duration factor []", true, new FuncBinding_IntParam<GUINet, SUMOReal>( &(getNet()), &GUINet::getMeanRTFactor), 1); */ ret->mkItem("ups [#]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getUPS)); ret->mkItem("mean ups [#]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getMeanUPS)); } // close building ret->closeBuilding(); return ret; }
GUIParameterTableWindow* GUIVehicle::getTypeParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 26 + (int)myType->getParameter().getParametersMap().size() + (int)myType->getParameter().lcParameter.size() + (int)myType->getParameter().jmParameter.size()); // add items ret->mkItem("Type Information:", false, ""); ret->mkItem("type [id]", false, myType->getID()); ret->mkItem("length", false, myType->getLength()); ret->mkItem("width", false, myType->getWidth()); ret->mkItem("height", false, myType->getHeight()); ret->mkItem("minGap", false, myType->getMinGap()); ret->mkItem("vehicle class", false, SumoVehicleClassStrings.getString(myType->getVehicleClass())); ret->mkItem("emission class", false, PollutantsInterface::getName(myType->getEmissionClass())); ret->mkItem("carFollowModel", false, SUMOXMLDefinitions::CarFollowModels.getString((SumoXMLTag)getCarFollowModel().getModelID())); ret->mkItem("LaneChangeModel", false, SUMOXMLDefinitions::LaneChangeModels.getString(getLaneChangeModel().getModelID())); ret->mkItem("guiShape", false, getVehicleShapeName(myType->getGuiShape())); ret->mkItem("maximum speed [m/s]", false, getMaxSpeed()); ret->mkItem("maximum acceleration [m/s^2]", false, getCarFollowModel().getMaxAccel()); ret->mkItem("maximum deceleration [m/s^2]", false, getCarFollowModel().getMaxDecel()); ret->mkItem("emergency deceleration [m/s^2]", false, getCarFollowModel().getEmergencyDecel()); ret->mkItem("apparent deceleration [m/s^2]", false, getCarFollowModel().getApparentDecel()); ret->mkItem("imperfection (sigma)", false, getCarFollowModel().getImperfection()); ret->mkItem("desired headway (tau)", false, getCarFollowModel().getHeadwayTime()); ret->mkItem("person capacity", false, myType->getPersonCapacity()); ret->mkItem("boarding time", false, STEPS2TIME(myType->getBoardingDuration())); ret->mkItem("container capacity", false, myType->getContainerCapacity()); ret->mkItem("loading time", false, STEPS2TIME(myType->getLoadingDuration())); if (MSGlobals::gLateralResolution > 0) { ret->mkItem("minGapLat", false, myType->getMinGapLat()); ret->mkItem("maxSpeedLat", false, myType->getMaxSpeedLat()); ret->mkItem("latAlignment", false, toString(myType->getPreferredLateralAlignment())); } else if (MSGlobals::gLaneChangeDuration > 0) { ret->mkItem("maxSpeedLat", false, myType->getMaxSpeedLat()); } for (auto item : myType->getParameter().lcParameter) { ret->mkItem(toString(item.first).c_str(), false, toString(item.second)); } for (auto item : myType->getParameter().jmParameter) { ret->mkItem(toString(item.first).c_str(), false, toString(item.second)); } // close building ret->closeBuilding(&(myType->getParameter())); return ret; }
GUIParameterTableWindow* GUIVehicle::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { const int sublaneParams = MSGlobals::gLateralResolution > 0 ? 4 : 0; GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 39 + sublaneParams + (int)getParameter().getParametersMap().size()); // add items ret->mkItem("lane [id]", false, Named::getIDSecure(myLane, "n/a")); if (MSAbstractLaneChangeModel::haveLateralDynamics()) { const MSLane* shadowLane = getLaneChangeModel().getShadowLane(); ret->mkItem("shadow lane [id]", false, shadowLane == nullptr ? "" : shadowLane->getID()); } if (MSGlobals::gLateralResolution > 0) { const MSLane* targetLane = getLaneChangeModel().getTargetLane(); ret->mkItem("target lane [id]", false, targetLane == nullptr ? "" : targetLane->getID()); } ret->mkItem("position [m]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getPositionOnLane)); ret->mkItem("lateral offset [m]", true, new FunctionBinding<GUIVehicle, double>(this, &GUIVehicle::getLateralPositionOnLane)); ret->mkItem("speed [m/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getSpeed)); ret->mkItem("lateral speed [m/s]", true, new FunctionBinding<MSAbstractLaneChangeModel, double>(&getLaneChangeModel(), &MSAbstractLaneChangeModel::getSpeedLat)); ret->mkItem("acceleration [m/s^2]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getAcceleration)); ret->mkItem("angle [degree]", true, new FunctionBinding<GUIVehicle, double>(this, &GUIBaseVehicle::getNaviDegree)); ret->mkItem("slope [degree]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getSlope)); ret->mkItem("speed factor", false, getChosenSpeedFactor()); ret->mkItem("time gap on lane [s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getTimeGapOnLane)); ret->mkItem("waiting time [s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getWaitingSeconds)); ret->mkItem(("waiting time (accumulated, " + time2string(MSGlobals::gWaitingTimeMemory) + "s) [s]").c_str(), true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getAccumulatedWaitingSeconds)); ret->mkItem("time loss [s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getTimeLossSeconds)); ret->mkItem("impatience", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getImpatience)); ret->mkItem("last lane change [s]", true, new FunctionBinding<GUIVehicle, double>(this, &GUIVehicle::getLastLaneChangeOffset)); ret->mkItem("desired depart [s]", false, time2string(getParameter().depart)); ret->mkItem("depart delay [s]", false, time2string(getDepartDelay())); if (getParameter().repetitionNumber < std::numeric_limits<int>::max()) { ret->mkItem("remaining [#]", false, (int) getParameter().repetitionNumber - getParameter().repetitionsDone); } if (getParameter().repetitionOffset > 0) { ret->mkItem("insertion period [s]", false, time2string(getParameter().repetitionOffset)); } if (getParameter().repetitionProbability > 0) { ret->mkItem("insertion probability", false, getParameter().repetitionProbability); } ret->mkItem("stop info", false, getStopInfo()); ret->mkItem("line", false, myParameter->line); ret->mkItem("CO2 [mg/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getCO2Emissions)); ret->mkItem("CO [mg/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getCOEmissions)); ret->mkItem("HC [mg/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getHCEmissions)); ret->mkItem("NOx [mg/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getNOxEmissions)); ret->mkItem("PMx [mg/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getPMxEmissions)); ret->mkItem("fuel [ml/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getFuelConsumption)); ret->mkItem("electricity [Wh/s]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getElectricityConsumption)); ret->mkItem("noise (Harmonoise) [dB]", true, new FunctionBinding<GUIVehicle, double>(this, &MSVehicle::getHarmonoise_NoiseEmissions)); ret->mkItem("devices", false, toString(myDevices)); ret->mkItem("persons", true, new FunctionBinding<GUIVehicle, int>(this, &MSVehicle::getPersonNumber)); ret->mkItem("containers", true, new FunctionBinding<GUIVehicle, int>(this, &MSVehicle::getContainerNumber)); ret->mkItem("lcState right", false, toString((LaneChangeAction)getLaneChangeModel().getSavedState(-1).second)); ret->mkItem("lcState left", false, toString((LaneChangeAction)getLaneChangeModel().getSavedState(1).second)); // close building if (MSGlobals::gLateralResolution > 0) { ret->mkItem("right side on edge [m]", true, new FunctionBinding<GUIVehicle, double>(this, &GUIVehicle::getRightSideOnEdge2)); ret->mkItem("left side on edge [m]", true, new FunctionBinding<GUIVehicle, double>(this, &GUIVehicle::getLeftSideOnEdge)); ret->mkItem("rightmost edge sublane [#]", true, new FunctionBinding<GUIVehicle, int>(this, &GUIVehicle::getRightSublaneOnEdge)); ret->mkItem("leftmost edge sublane [#]", true, new FunctionBinding<GUIVehicle, int>(this, &GUIVehicle::getLeftSublaneOnEdge)); ret->mkItem("lane change maneuver distance [m]", true, new FunctionBinding<GUIVehicle, double>(this, &GUIVehicle::getManeuverDist)); } ret->closeBuilding(&getParameter()); return ret; }
GUIParameterTableWindow* GUINet::getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView&) { GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 28); // add items ret->mkItem("loaded vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getLoadedVehicleNo)); ret->mkItem("insertion-backlogged vehicles [#]", true, new FunctionBinding<MSInsertionControl, unsigned int>(&getInsertionControl(), &MSInsertionControl::getWaitingVehicleNo)); ret->mkItem("departed vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getDepartedVehicleNo)); ret->mkItem("running vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getRunningVehicleNo)); ret->mkItem("arrived vehicles [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getEndedVehicleNo)); ret->mkItem("collisions [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getCollisionCount)); ret->mkItem("teleports [#]", true, new FunctionBinding<MSVehicleControl, unsigned int>(&getVehicleControl(), &MSVehicleControl::getTeleportCount)); if (myPersonControl != 0) { ret->mkItem("loaded persons [#]", true, new FunctionBinding<MSPersonControl, unsigned int>(&getPersonControl(), &MSPersonControl::getLoadedPersonNumber)); ret->mkItem("running persons [#]", true, new FunctionBinding<MSPersonControl, unsigned int>(&getPersonControl(), &MSPersonControl::getRunningPersonNumber)); ret->mkItem("jammed persons [#]", true, new FunctionBinding<MSPersonControl, unsigned int>(&getPersonControl(), &MSPersonControl::getJammedPersonNumber)); } ret->mkItem("end time [s]", false, OptionsCont::getOptions().getString("end")); ret->mkItem("begin time [s]", false, OptionsCont::getOptions().getString("begin")); // ret->mkItem("time step [s]", true, new FunctionBinding<GUINet, SUMOTime>(this, &GUINet::getCurrentTimeStep)); if (logSimulationDuration()) { ret->mkItem("step duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getWholeDuration)); ret->mkItem("simulation duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getSimDuration)); /* ret->mkItem("visualisation duration [ms]", true, new CastingFunctionBinding<GUINet, SUMOReal, int>( &(getNet()), &GUINet::getVisDuration)); */ ret->mkItem("idle duration [ms]", true, new FunctionBinding<GUINet, unsigned int>(this, &GUINet::getIdleDuration)); ret->mkItem("duration factor []", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getRTFactor)); /* ret->mkItem("mean duration factor []", true, new FuncBinding_IntParam<GUINet, SUMOReal>( &(getNet()), &GUINet::getMeanRTFactor), 1); */ ret->mkItem("ups [#]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getUPS)); ret->mkItem("mean ups [#]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getMeanUPS)); if (OptionsCont::getOptions().getBool("duration-log.statistics")) { ret->mkItem("avg. trip length [m]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getAvgRouteLength)); ret->mkItem("avg. trip duration [s]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getAvgDuration)); ret->mkItem("avg. trip waiting time [s]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getAvgWaitingTime)); ret->mkItem("avg. trip time loss [s]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getAvgTimeLoss)); ret->mkItem("avg. trip depart delay [s]", true, new FunctionBinding<GUINet, SUMOReal>(this, &GUINet::getAvgDepartDelay)); } } ret->mkItem("nodes [#]", false, (int)myJunctions->size()); ret->mkItem("edges [#]", false, (int)GUIEdge::getIDs(false).size()); ret->mkItem("total edge length [km]", false, GUIEdge::getTotalLength(false, false) / 1000); ret->mkItem("total lane length [km]", false, GUIEdge::getTotalLength(false, true) / 1000); ret->mkItem("network version ", false, toString(myVersion)); // close building ret->closeBuilding(); return ret; }