diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp index 795f7df51099dff3c9ae60393d43f4c6a5bcf2f0..82b8310e10849047b1a2686f01b4789df265aa03 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp @@ -228,7 +228,11 @@ void ScenarioListController::addApplicationsToScenario(QList<QPair<QString, Appl } ScenarioPtr scenario = item->getScenario(); - + if (!scenario->isScenarioFileWriteable()) + { + QMessageBox::critical(0, "Adding application failed!", "The scenario '" + QString::fromStdString(scenario->getName()) + "' is read only. You cannot add an application to this scenario!"); + return; + } Parser::DependenciesGenerator generator; std::vector<string> acceptedApps = generator.getDependencieTree(scenario->getPackage()->getName()); @@ -264,6 +268,7 @@ void ScenarioListController::addApplicationsToScenario(QList<QPair<QString, Appl return; } + string appName = app->getName(); size_t runIndex = appName.rfind("Run"); if (runIndex != std::string::npos) @@ -449,7 +454,10 @@ void ScenarioListController::createScenario() QStringList packageNames; for (auto package : *packages) { - packageNames << QString::fromStdString(package->getName()); + if (package->isScenarioPathWritable()) + { + packageNames << QString::fromStdString(package->getName()); + } } createScenarioView.setPackages(packageNames); createScenarioView.exec(); @@ -703,7 +711,7 @@ void ScenarioListController::updateStati() IceUtil::Time start = IceUtil::Time ::now(); bool changed = false; //update all app instances and scenarios - for (ScenarioManager::Data_Structure::PackagePtr & package : *packages) + for (ScenarioManager::Data_Structure::PackagePtr& package : *packages) { ScenarioVectorPtr scenarios = package->getScenarios(); for (ScenarioPtr scenario : *scenarios) diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp index cb7a5ed5b725b8b358d8854cce0961a146fd7688..6be00c2b8da84fdbb2a9b6385fa724e08222706d 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp @@ -191,6 +191,11 @@ void DetailedApplicationView::showApplicationInstance(ApplicationInstancePtr app QtProperty* appInstanceTopItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(), QLatin1String("ApplicationInstance")); + if (!appInstance->isConfigWritable()) + { + appInstanceTopItem->setEnabled(false); + } + QtVariantProperty* nameItem = variantManager->addProperty(QVariant::String, QString("Name")); nameItem->setValue(QString::fromStdString(appInstance->getName())); @@ -309,6 +314,10 @@ void DetailedApplicationView::showScenario(ScenarioPtr scenario) QtProperty* scenarioTopItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(), QLatin1String("Scenario")); + if (!scenario->isScenarioFileWriteable()) + { + scenarioTopItem->setEnabled(false); + } QtVariantProperty* nameItem = variantManager->addProperty(QVariant::String, QString("Name")); nameItem->setValue(QString::fromStdString(scenario->getName())); @@ -329,6 +338,10 @@ void DetailedApplicationView::showScenario(ScenarioPtr scenario) QtProperty* scenarioPropertyTopItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(), QLatin1String("Scenario Properties")); scenarioTopItem->addSubProperty(scenarioPropertyTopItem); + if (!scenario->isGlobalConfigWritable()) + { + scenarioPropertyTopItem->setEnabled(false); + } armarx::PropertyDefinitionsPtr props = scenario->getGlobalConfig(); @@ -603,14 +616,20 @@ void DetailedApplicationView::on_fileUpdate() { //DANGER delets old config - lastAppInstance->resetConfigPath(); - lastAppInstance->save(); + if (lastAppInstance->isConfigWritable()) + { + lastAppInstance->resetConfigPath(); + lastAppInstance->save(); + } emit saveScenario(lastAppInstance); } else if (lastScenario.get() != nullptr) { - lastScenario->save(); + if (lastAppInstance->isConfigWritable()) + { + lastScenario->save(); + } } } diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp index 6d8ae178e2837877de32ab26b30d43655b50d6bb..ec3638550fa802fac8f8302edf869f0debb2e080 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp @@ -69,7 +69,7 @@ void PackageAdderView::on_packageName_textChanged(const QString& text) CMakePackageFinder pFinder(text.toStdString()); if (pFinder.packageFound()) { - ui->packagePath->setText(QString::fromStdString(pFinder.getPackageDir())); + ui->packagePath->setText(QString::fromStdString(pFinder.getConfigDir())); ui->foundPackageLabel->setPixmap(QPixmap(":/icons/user-online.svg")); found = true; }