Skip to content
Snippets Groups Projects
Commit 7b1e1f10 authored by Fabian Reister's avatar Fabian Reister
Browse files

Merge branch 'feature/scenario-manager-auto-reload' into 'master'

Scenario Manager: auto reload on changes from disk

See merge request !100
parents a0a45719 5207674f
No related branches found
No related tags found
1 merge request!100Scenario Manager: auto reload on changes from disk
Pipeline #20514 passed
......@@ -23,18 +23,22 @@
*/
#include "DetailedApplicationController.h"
#include "ScenarioListController.h"
#include <stdlib.h>
#include <string>
#include <QDesktopServices>
#include <QMessageBox>
#include <QUrl>
#include <ArmarXCore/util/ScenarioManagerCommon/data_structure/Scenario.h>
#include <ArmarXCore/util/ScenarioManagerCommon/parser/iceparser.h>
#include <ArmarXCore/util/ScenarioManagerCommon/executor/StopStrategyFactory.h>
#include <ArmarXCore/util/ScenarioManagerCommon/executor/StarterFactory.h>
#include <ArmarXCore/util/ScenarioManagerCommon/executor/StopStrategyFactory.h>
#include <ArmarXCore/util/ScenarioManagerCommon/executor/StopperFactory.h>
#include <QDesktopServices>
#include <QUrl>
#include <QMessageBox>
#include <string>
#include <stdlib.h>
#include <ArmarXCore/util/ScenarioManagerCommon/parser/iceparser.h>
#include "ScenarioListController.h"
using namespace ScenarioManager;
......@@ -42,22 +46,29 @@ using namespace Controller;
using namespace Exec;
using namespace Data_Structure;
DetailedApplicationController::DetailedApplicationController(ExecutorPtr executor, QObject* parent) : QObject(parent), executor(executor), showingStartable(false)
DetailedApplicationController::DetailedApplicationController(ExecutorPtr executor,
QObject* parent) :
QObject(parent), executor(executor), showingStartable(false)
{
QObject::connect(&propertyAdderView, SIGNAL(create(std::string, std::string)),
this, SLOT(setProperty(std::string, std::string)));
QObject::connect(&propertyAdderView,
SIGNAL(create(std::string, std::string)),
this,
SLOT(setProperty(std::string, std::string)));
}
DetailedApplicationController::~DetailedApplicationController()
{
}
void DetailedApplicationController::setDetailedApplicationView(DetailedApplicationView* ptr)
void
DetailedApplicationController::setDetailedApplicationView(DetailedApplicationView* ptr)
{
view = ptr;
}
void DetailedApplicationController::showApplicationInstance(ApplicationInstancePtr application, ScenarioItem* item)
void
DetailedApplicationController::showApplicationInstance(ApplicationInstancePtr application,
ScenarioItem* item)
{
if (application.get() == nullptr)
{
......@@ -67,13 +78,16 @@ void DetailedApplicationController::showApplicationInstance(ApplicationInstanceP
currentApplication = application;
currentScenario = ScenarioPtr();
executor->loadAndSetCachedProperties(application, Parser::IceParser::getCacheDir(), false, false);
executor->loadAndSetCachedProperties(
application, Parser::IceParser::getCacheDir(), false, false);
application->load();
view->setVisible(true);
view->showApplicationInstance(application, item);
}
void DetailedApplicationController::showApplication(ScenarioManager::Data_Structure::ApplicationPtr application)
void
DetailedApplicationController::showApplication(
ScenarioManager::Data_Structure::ApplicationPtr application)
{
if (application.get() == nullptr)
{
......@@ -82,14 +96,16 @@ void DetailedApplicationController::showApplication(ScenarioManager::Data_Struct
showingStartable = false;
currentApplication = ApplicationInstancePtr();
currentScenario = ScenarioPtr();
ScenarioManager::Data_Structure::ApplicationPtr app(new ScenarioManager::Data_Structure::Application(*application));
ScenarioManager::Data_Structure::ApplicationPtr app(
new ScenarioManager::Data_Structure::Application(*application));
executor->loadAndSetCachedProperties(app, Parser::IceParser::getCacheDir());
view->setVisible(true);
view->showApplication(app);
}
void DetailedApplicationController::showScenario(ScenarioPtr scenario)
void
DetailedApplicationController::showScenario(ScenarioPtr scenario)
{
if (scenario.get() == nullptr)
{
......@@ -99,11 +115,13 @@ void DetailedApplicationController::showScenario(ScenarioPtr scenario)
currentApplication = ApplicationInstancePtr();
currentScenario = scenario;
scenario->reloadGlobalConf();
view->setVisible(true);
view->showScenario(scenario);
}
void DetailedApplicationController::showPackage(PackagePtr package)
void
DetailedApplicationController::showPackage(PackagePtr package)
{
if (package.get() == nullptr)
{
......@@ -115,7 +133,8 @@ void DetailedApplicationController::showPackage(PackagePtr package)
view->showPackage(package);
}
void DetailedApplicationController::showInStandardEditor()
void
DetailedApplicationController::showInStandardEditor()
{
if (showingStartable)
{
......@@ -132,7 +151,8 @@ void DetailedApplicationController::showInStandardEditor()
}
}
void DetailedApplicationController::setProperty(std::string name, std::string value)
void
DetailedApplicationController::setProperty(std::string name, std::string value)
{
if (showingStartable)
{
......@@ -144,7 +164,8 @@ void DetailedApplicationController::setProperty(std::string name, std::string va
}
else if (currentScenario.get() != nullptr)
{
currentScenario->getGlobalConfig()->defineOptionalProperty<std::string>(name, "::NOT_DEFINED::", "Custom Property");
currentScenario->getGlobalConfig()->defineOptionalProperty<std::string>(
name, "::NOT_DEFINED::", "Custom Property");
currentScenario->getGlobalConfig()->getProperties()->setProperty(name, value);
currentScenario->save();
showScenario(currentScenario);
......@@ -152,7 +173,8 @@ void DetailedApplicationController::setProperty(std::string name, std::string va
}
}
void DetailedApplicationController::start()
void
DetailedApplicationController::start()
{
if (showingStartable)
{
......@@ -168,13 +190,15 @@ void DetailedApplicationController::start()
}
catch (IceGrid::ServerStartException& ex)
{
showWarningDialog("Ice had an launching error. Please make sure your remote launch settings are correct");
showWarningDialog("Ice had an launching error. Please make sure your remote launch "
"settings are correct");
}
}
}
}
void DetailedApplicationController::startScenario(ScenarioPtr scenario)
void
DetailedApplicationController::startScenario(ScenarioPtr scenario)
{
StatusManager statusManager;
......@@ -218,8 +242,8 @@ void DetailedApplicationController::startScenario(ScenarioPtr scenario)
// }
}
void DetailedApplicationController::stop()
void
DetailedApplicationController::stop()
{
if (showingStartable)
{
......@@ -234,7 +258,8 @@ void DetailedApplicationController::stop()
}
}
void DetailedApplicationController::save()
void
DetailedApplicationController::save()
{
if (showingStartable)
{
......@@ -252,31 +277,34 @@ void DetailedApplicationController::save()
}
catch (IceGrid::ServerStartException& ex)
{
showWarningDialog("Ice had an launching error. Please make sure your remote launch settings are correct");
showWarningDialog("Ice had an launching error. Please make sure your remote launch "
"settings are correct");
}
}
}
}
void DetailedApplicationController::deleteProperty(std::string name)
void
DetailedApplicationController::deleteProperty(std::string name)
{
}
void DetailedApplicationController::showPropertyAddView()
void
DetailedApplicationController::showPropertyAddView()
{
propertyAdderView.exec();
}
void DetailedApplicationController::showWarningDialog(QString message)
void
DetailedApplicationController::showWarningDialog(QString message)
{
QMessageBox box;
box.setText(message);
box.exec();
}
void DetailedApplicationController::setIceAdmin(IceGrid::AdminPrx iceAdmin)
void
DetailedApplicationController::setIceAdmin(IceGrid::AdminPrx iceAdmin)
{
this->iceAdmin = iceAdmin;
}
......@@ -25,21 +25,24 @@
#pragma once
#include <memory>
#include <QFileSystemWatcher>
#include <QTimer>
#include <QWidget>
#include <ArmarXCore/util/ScenarioManagerCommon/data_structure/Package.h>
#include <ArmarXGui/libraries/qtpropertybrowser/src/qtpropertymanager.h>
#include "OptionalPropertyFactory.h"
#include "scenarioitem.h"
#include <memory>
#include <QWidget>
#include <QTimer>
namespace Ui
{
class DetailedApplicationView;
}
/**
* @class DetailedApplicationView
* @brief View that shows detailed information about a Scenario, Package or Application.
......@@ -73,7 +76,9 @@ public:
* Show an ApplicationInstance.
* @param appInstance ApplicationInstance to show
*/
void showApplicationInstance(ScenarioManager::Data_Structure::ApplicationInstancePtr appInstance, ScenarioItem* item);
void
showApplicationInstance(ScenarioManager::Data_Structure::ApplicationInstancePtr appInstance,
ScenarioItem* item);
/**
* Show a Scenario.
......@@ -128,6 +133,8 @@ private slots:
void on_makeLocalButton_clicked();
void on_fileWatcherUpdate(const QString& path);
private:
void init();
void show_or_hide_property(QtProperty*, bool);
......@@ -146,7 +153,8 @@ private:
bool neadsUpdate;
QTimer updateTimer;
QFileSystemWatcher fileSystemWatcher;
};
using DetailedApplicationViewPtr = std::shared_ptr<DetailedApplicationView>;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment