diff --git a/src/netedit/elements/demand/GNERouteHandler.cpp b/src/netedit/elements/demand/GNERouteHandler.cpp index 32ff59531a0..d696c1dae45 100644 --- a/src/netedit/elements/demand/GNERouteHandler.cpp +++ b/src/netedit/elements/demand/GNERouteHandler.cpp @@ -2041,6 +2041,30 @@ GNERouteHandler::transformToFlow(GNEVehicle* originalVehicle) { } +void +GNERouteHandler::transformToTripJunctions(GNEVehicle* originalVehicle) { + +} + + +void +GNERouteHandler::transformToFlowJunctions(GNEVehicle* originalVehicle) { + +} + + +void +GNERouteHandler::transformToTripTAZs(GNEVehicle* originalVehicle) { + +} + + +void +GNERouteHandler::transformToFlowTAZs(GNEVehicle* originalVehicle) { + +} + + void GNERouteHandler::transformToPerson(GNEPerson* originalPerson) { // get pointer to net diff --git a/src/netedit/elements/demand/GNERouteHandler.h b/src/netedit/elements/demand/GNERouteHandler.h index d8a41a1ad26..12f16047e71 100644 --- a/src/netedit/elements/demand/GNERouteHandler.h +++ b/src/netedit/elements/demand/GNERouteHandler.h @@ -185,6 +185,18 @@ class GNERouteHandler : public RouteHandler { /// @brief transform to flow static void transformToFlow(GNEVehicle* originalVehicle); + /// @brief transform to trip over junctions + static void transformToTripJunctions(GNEVehicle* originalVehicle); + + /// @brief transform to flow over junctions + static void transformToFlowJunctions(GNEVehicle* originalVehicle); + + /// @brief transform to trip over TAZs + static void transformToTripTAZs(GNEVehicle* originalVehicle); + + /// @brief transform to flow over TAZs + static void transformToFlowTAZs(GNEVehicle* originalVehicle); + /// @} /// @brief transform person functions diff --git a/src/netedit/elements/demand/GNEVehicle.cpp b/src/netedit/elements/demand/GNEVehicle.cpp index 16d2c92d22a..eea00faf359 100644 --- a/src/netedit/elements/demand/GNEVehicle.cpp +++ b/src/netedit/elements/demand/GNEVehicle.cpp @@ -94,10 +94,12 @@ GNEVehicle::GNESingleVehiclePopupMenu::GNESingleVehiclePopupMenu(GNEVehicle* veh // Create menu commands for all transform GUIDesigns::buildFXMenuCommand(transformOperation, TL("Trip (over junctions)"), - GUIIconSubSys::getIcon(GUIIcon::TRIP_JUNCTIONS), this, MID_GNE_VEHICLE_TRANSFORM_TRIP_JUNCTIONS); + GUIIconSubSys::getIcon(GUIIcon::TRIP_JUNCTIONS), this, MID_GNE_VEHICLE_TRANSFORM_TRIP_JUNCTIONS, + (myVehicle->getTagProperty().getTag() == GNE_TAG_TRIP_JUNCTIONS)); GUIDesigns::buildFXMenuCommand(transformOperation, TL("Flow (over junctions)"), - GUIIconSubSys::getIcon(GUIIcon::FLOW_JUNCTIONS), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_JUNCTIONS); + GUIIconSubSys::getIcon(GUIIcon::FLOW_JUNCTIONS), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_JUNCTIONS, + (myVehicle->getTagProperty().getTag() == GNE_TAG_FLOW_JUNCTIONS)); } else if (myVehicle->getTagProperty().overFromToTAZs()) { // create menu pane for transform operations FXMenuPane* transformOperation = new FXMenuPane(this); @@ -106,10 +108,12 @@ GNEVehicle::GNESingleVehiclePopupMenu::GNESingleVehiclePopupMenu(GNEVehicle* veh // Create menu commands for all transform GUIDesigns::buildFXMenuCommand(transformOperation, TL("Trip (over TAZs)"), - GUIIconSubSys::getIcon(GUIIcon::TRIP_TAZS), this, MID_GNE_VEHICLE_TRANSFORM_TRIP_TAZS); + GUIIconSubSys::getIcon(GUIIcon::TRIP_TAZS), this, MID_GNE_VEHICLE_TRANSFORM_TRIP_TAZS, + (myVehicle->getTagProperty().getTag() == GNE_TAG_TRIP_TAZS)); GUIDesigns::buildFXMenuCommand(transformOperation, TL("Flow (over TAZs)"), - GUIIconSubSys::getIcon(GUIIcon::FLOW_TAZS), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_TAZS); + GUIIconSubSys::getIcon(GUIIcon::FLOW_TAZS), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_TAZS, + (myVehicle->getTagProperty().getTag() == GNE_TAG_FLOW_TAZS)); } else { // create menu pane for transform operations FXMenuPane* transformOperation = new FXMenuPane(this); @@ -118,22 +122,28 @@ GNEVehicle::GNESingleVehiclePopupMenu::GNESingleVehiclePopupMenu(GNEVehicle* veh // Create menu commands for all transform GUIDesigns::buildFXMenuCommand(transformOperation, TL("Vehicle"), - GUIIconSubSys::getIcon(GUIIcon::VEHICLE), this, MID_GNE_VEHICLE_TRANSFORM_VEHICLE); + GUIIconSubSys::getIcon(GUIIcon::VEHICLE), this, MID_GNE_VEHICLE_TRANSFORM_VEHICLE, + (myVehicle->getTagProperty().getTag() == SUMO_TAG_VEHICLE)); GUIDesigns::buildFXMenuCommand(transformOperation, TL("Vehicle (embedded route)"), - GUIIconSubSys::getIcon(GUIIcon::VEHICLE), this, MID_GNE_VEHICLE_TRANSFORM_VEHICLE_EMBEDDED); + GUIIconSubSys::getIcon(GUIIcon::VEHICLE), this, MID_GNE_VEHICLE_TRANSFORM_VEHICLE_EMBEDDED, + (myVehicle->getTagProperty().getTag() == GNE_TAG_VEHICLE_WITHROUTE)); GUIDesigns::buildFXMenuCommand(transformOperation, TL("RouteFlow"), - GUIIconSubSys::getIcon(GUIIcon::ROUTEFLOW), this, MID_GNE_VEHICLE_TRANSFORM_ROUTEFLOW); + GUIIconSubSys::getIcon(GUIIcon::ROUTEFLOW), this, MID_GNE_VEHICLE_TRANSFORM_ROUTEFLOW, + (myVehicle->getTagProperty().getTag() == GNE_TAG_FLOW_ROUTE)); GUIDesigns::buildFXMenuCommand(transformOperation, TL("RouteFlow (embedded route)"), - GUIIconSubSys::getIcon(GUIIcon::ROUTEFLOW), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_EMBEDDED); + GUIIconSubSys::getIcon(GUIIcon::ROUTEFLOW), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_EMBEDDED, + (myVehicle->getTagProperty().getTag() == GNE_TAG_FLOW_WITHROUTE)); GUIDesigns::buildFXMenuCommand(transformOperation, TL("Trip"), - GUIIconSubSys::getIcon(GUIIcon::TRIP), this, MID_GNE_VEHICLE_TRANSFORM_TRIP); + GUIIconSubSys::getIcon(GUIIcon::TRIP), this, MID_GNE_VEHICLE_TRANSFORM_TRIP, + (myVehicle->getTagProperty().getTag() == SUMO_TAG_TRIP)); GUIDesigns::buildFXMenuCommand(transformOperation, TL("Flow"), - GUIIconSubSys::getIcon(GUIIcon::FLOW), this, MID_GNE_VEHICLE_TRANSFORM_FLOW); + GUIIconSubSys::getIcon(GUIIcon::FLOW), this, MID_GNE_VEHICLE_TRANSFORM_FLOW, + (myVehicle->getTagProperty().getTag() == SUMO_TAG_FLOW)); } } } @@ -164,16 +174,16 @@ GNEVehicle::GNESingleVehiclePopupMenu::onCmdTransform(FXObject*, FXSelector sel, GNERouteHandler::transformToRouteFlow(myVehicle, true); break; case MID_GNE_VEHICLE_TRANSFORM_TRIP_JUNCTIONS: - // GNERouteHandler::transformToVehicle(myVehicle, false); + GNERouteHandler::transformToTripJunctions(myVehicle); break; case MID_GNE_VEHICLE_TRANSFORM_FLOW_JUNCTIONS: - // GNERouteHandler::transformToVehicle(myVehicle, false); + GNERouteHandler::transformToFlowJunctions(myVehicle); break; case MID_GNE_VEHICLE_TRANSFORM_TRIP_TAZS: - // GNERouteHandler::transformToVehicle(myVehicle, false); + GNERouteHandler::transformToTripTAZs(myVehicle); break; case MID_GNE_VEHICLE_TRANSFORM_FLOW_TAZS: - // GNERouteHandler::transformToVehicle(myVehicle, false); + GNERouteHandler::transformToFlowTAZs(myVehicle); break; default: break; @@ -281,12 +291,14 @@ GNEVehicle::GNESelectedVehiclesPopupMenu::GNESelectedVehiclesPopupMenu(GNEVehicl TL("Vehicles"), GUIIconSubSys::getIcon(GUIIcon::VEHICLE), this, MID_GNE_VEHICLE_TRANSFORM_VEHICLE); GUIDesigns::buildFXMenuCommand(transformOperation, - TL("Vehicles (embedded route)"), GUIIconSubSys::getIcon(GUIIcon::VEHICLE), this, MID_GNE_VEHICLE_TRANSFORM_VEHICLE_EMBEDDED); + TL("Vehicles (embedded route)"), + GUIIconSubSys::getIcon(GUIIcon::VEHICLE), this, MID_GNE_VEHICLE_TRANSFORM_VEHICLE_EMBEDDED); GUIDesigns::buildFXMenuCommand(transformOperation, TL("RouteFlows"), GUIIconSubSys::getIcon(GUIIcon::ROUTEFLOW), this, MID_GNE_VEHICLE_TRANSFORM_ROUTEFLOW); GUIDesigns::buildFXMenuCommand(transformOperation, - TL("RouteFlows (embedded route)"), GUIIconSubSys::getIcon(GUIIcon::ROUTEFLOW), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_EMBEDDED); + TL("RouteFlows (embedded route)"), + GUIIconSubSys::getIcon(GUIIcon::ROUTEFLOW), this, MID_GNE_VEHICLE_TRANSFORM_FLOW_EMBEDDED); GUIDesigns::buildFXMenuCommand(transformOperation, TL("Trips"), GUIIconSubSys::getIcon(GUIIcon::TRIP), this, MID_GNE_VEHICLE_TRANSFORM_TRIP); @@ -363,37 +375,37 @@ GNEVehicle::GNESelectedVehiclesPopupMenu::onCmdTransform(FXObject* obj, FXSelect case MID_GNE_VEHICLE_TRANSFORM_TRIP_JUNCTIONS: if (myRestrictedMenuCommands.count(obj) > 0) { if (vehicle->getTagProperty().getTag() == myRestrictedMenuCommands.at(obj)) { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToTripJunctions(vehicle); } } else { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToTripJunctions(vehicle); } break; case MID_GNE_VEHICLE_TRANSFORM_FLOW_JUNCTIONS: if (myRestrictedMenuCommands.count(obj) > 0) { if (vehicle->getTagProperty().getTag() == myRestrictedMenuCommands.at(obj)) { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToFlowJunctions(vehicle); } } else { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToFlowJunctions(vehicle); } break; case MID_GNE_VEHICLE_TRANSFORM_TRIP_TAZS: if (myRestrictedMenuCommands.count(obj) > 0) { if (vehicle->getTagProperty().getTag() == myRestrictedMenuCommands.at(obj)) { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToTripTAZs(vehicle); } } else { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToTripTAZs(vehicle); } break; case MID_GNE_VEHICLE_TRANSFORM_FLOW_TAZS: if (myRestrictedMenuCommands.count(obj) > 0) { if (vehicle->getTagProperty().getTag() == myRestrictedMenuCommands.at(obj)) { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToFlowTAZs(vehicle); } } else { - // GNERouteHandler::transformToVehicle(vehicle, false); + GNERouteHandler::transformToFlowTAZs(vehicle); } break; default: diff --git a/src/utils/gui/div/GUIDesigns.cpp b/src/utils/gui/div/GUIDesigns.cpp index 2383cc5619f..bab4b762c80 100644 --- a/src/utils/gui/div/GUIDesigns.cpp +++ b/src/utils/gui/div/GUIDesigns.cpp @@ -39,11 +39,15 @@ GUIDesigns::buildFXMenuTitle(FXComposite* p, const std::string& text, FXIcon* ic FXMenuCommand* -GUIDesigns::buildFXMenuCommand(FXComposite* p, const std::string& text, FXIcon* icon, FXObject* tgt, FXSelector sel) { +GUIDesigns::buildFXMenuCommand(FXComposite* p, const std::string& text, FXIcon* icon, FXObject* tgt, FXSelector sel, const bool disable) { // build menu command FXMenuCommand* menuCommand = new FXMenuCommand(p, text.c_str(), icon, tgt, sel, LAYOUT_FIX_HEIGHT); // set width and height (to avoid problems between Windows und Linux) menuCommand->setHeight(GUIDesignHeight); + // check if disable after creation (used in certain parts of netedit) + if (disable) { + menuCommand->disable(); + } // return menuCommand return menuCommand; } diff --git a/src/utils/gui/div/GUIDesigns.h b/src/utils/gui/div/GUIDesigns.h index 93eee3ea7bc..e153d7463d2 100644 --- a/src/utils/gui/div/GUIDesigns.h +++ b/src/utils/gui/div/GUIDesigns.h @@ -703,7 +703,7 @@ class GUIDesigns { static MFXMenuCheckIcon* buildFXMenuCheckboxIcon(FXComposite* p, const std::string& text, const std::string& shortcut, const std::string& info, FXIcon* icon, FXObject* tgt, FXSelector sel); /// @brief build menu command - static FXMenuCommand* buildFXMenuCommand(FXComposite* p, const std::string& text, FXIcon* icon, FXObject* tgt, FXSelector sel); + static FXMenuCommand* buildFXMenuCommand(FXComposite* p, const std::string& text, FXIcon* icon, FXObject* tgt, FXSelector sel, const bool disable = false); /// @brief build menu command (for recent files) static FXMenuCommand* buildFXMenuCommandRecentFile(FXComposite* p, const std::string& text, FXObject* tgt, FXSelector sel);