diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp index 363625a8188741023b158e9c1b3a71fc892f8222..ba530f10ecf599570097dc150cdb8d8c7cbee26c 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp @@ -279,6 +279,7 @@ void ScenarioManagerWidgetController::reparsePackages() if (statusManager.isIceScenario(scenario)) { executor->setStarter(StarterFactory::getFactory()->getIceStarter(getArmarXManager()->getIceManager()->getIceGridSession()->getAdmin()), scenario); + executor->setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(getArmarXManager()->getIceManager()->getIceGridSession()->getAdmin())), scenario); } } diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp index 1559c75dbd6415748ef53d370376ea9bb9f8fa97..2347f548405148b7dd476b3c0c434e3f073f7aef 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp @@ -118,15 +118,12 @@ void ScenarioListController::stop(int row, int column, QModelIndex parent) { ScenarioPtr scenario = item->getScenario(); StatusManager statusManager; - StopStrategyFactory stopStrategyFactory; if (statusManager.isIceScenario(scenario)) { - executor->setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(iceAdmin)), scenario); executor->removeScenario(scenario); } else { - executor->setStopStrategy(executor->getDefaultStopStrategy(), scenario); executor->stopScenario(scenario); } } @@ -173,33 +170,37 @@ void ScenarioListController::startScenario(ScenarioItem* scenarioItem, ScenarioS { ScenarioPtr scenario = scenarioItem->getScenario(); StatusManager statusManager; + StopStrategyFactory stopStrategyFactory; + if (mode == LocalStart) { - if (statusManager.isIceScenario(scenario)) + if (statusManager.isIceScenario(scenario) && scenario->getStatus() != ApplicationStatus::Stopped) { - if (scenario->getStatus() != ApplicationStatus::Stopped) + QMessageBox::StandardButton reply; + reply = QMessageBox::question(nullptr, "", "The Scenario is currently running via Ice do you want to remove it ?", QMessageBox::Yes | QMessageBox::No); + if (reply == QMessageBox::No) { - QMessageBox::StandardButton reply; - reply = QMessageBox::question(nullptr, "", "The Scenario is currently running via Ice do you want to remove it ?", QMessageBox::Yes | QMessageBox::No); - if (reply == QMessageBox::No) - { - return; - } - else - { - executor->setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), scenario); - statusManager.setIceScenario(scenario, false); - executor->removeScenario(scenario); - } + return; + } + else + { + executor->setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), scenario); + executor->setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(iceAdmin)), scenario); + + statusManager.setIceScenario(scenario, true); + executor->removeScenario(scenario); + return; } } executor->setStarter(StarterFactory::getFactory()->getStarter(), scenario); + executor->setStopStrategy(executor->getDefaultStopStrategy(), scenario); + statusManager.setIceScenario(scenario, false); executor->startScenario(scenario); } else { - if (scenario->getStatus() != ApplicationStatus::Stopped) + if (!statusManager.isIceScenario(scenario) && scenario->getStatus() != ApplicationStatus::Stopped) { QMessageBox::StandardButton reply; reply = QMessageBox::question(nullptr, "", "The Scenario is currently running locally do you want to stop it ?", QMessageBox::Yes | QMessageBox::No); @@ -210,10 +211,15 @@ void ScenarioListController::startScenario(ScenarioItem* scenarioItem, ScenarioS else { executor->setStarter(StarterFactory::getFactory()->getStarter(), scenario); + executor->setStopStrategy(executor->getDefaultStopStrategy(), scenario); + executor->stopScenario(scenario); + return; } } executor->setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), scenario); + executor->setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(iceAdmin)), scenario); + statusManager.setIceScenario(scenario, true); executor->deployScenario(scenario); }