From ccc5ec17aae9a1a7715bf334d316aae1f99c7250 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Thu, 3 Aug 2023 13:09:20 +0200 Subject: [PATCH] finishing implementation --- .../applications/ArmarXGui/ArmarXGuiApp.cpp | 20 +---------- .../ScenarioManagerWidgetController.cpp | 35 +++++++++++++------ .../ScenarioManagerWidgetController.h | 4 +++ .../StatechartEditorController.cpp | 4 +-- 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp b/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp index 5e26bded..1a2a1ea2 100644 --- a/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp +++ b/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp @@ -98,24 +98,6 @@ namespace armarx return armarx::Application::run(argc, argv); } - inline std::vector<std::string> allArmarXSourcePackages() - { - auto packagesStd = CMakePackageFinder::FindAllArmarXSourcePackages(); - - // force deterministic loading of plugins by name - std::sort(packagesStd.begin(), packagesStd.end(), - [](const std::string& lhs, const std::string& rhs) -> bool { - return simox::alg::to_lower(lhs) < simox::alg::to_lower(rhs); - }); - - ARMARX_VERBOSE << "Discovered: "; - for(const auto& pkg : packagesStd) - { - ARMARX_VERBOSE << "- " << pkg; - } - - return packagesStd; - } int ArmarXGuiApp::exec(const ArmarXManagerPtr& armarXManager) @@ -128,7 +110,7 @@ namespace armarx (void)coin_setenv("COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE", "1", TRUE); { - const std::vector<std::string> packageNames = allArmarXSourcePackages(); // getDefaultPackageNames(); + const std::vector<std::string> packageNames = getArmarXPackageNames(); QString configToLoad; if (getProperty<std::string>("GuiConfigFile").isSet()) { diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp index dee6c917..2b85b2bf 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp @@ -62,18 +62,28 @@ ScenarioManagerWidgetController::ScenarioManagerWidgetController() : QSettings q_settings(QString(settingsFile.c_str()), QSettings::NativeFormat); bool editModeState = q_settings.value("editMode", false).toBool(); editMode(editModeState); - - autoDiscoverArmarXPackages(); } ScenarioManagerWidgetController::~ScenarioManagerWidgetController() { } +bool ScenarioManagerWidgetController::isPackageAutoDiscoveryEnabled() +{ + if(hasProperty("AutodiscoverPackages")) + { + return getProperty<bool>("AutodiscoverPackages").getValue(); + } + ARMARX_WARNING << "AutodiscoverPackages property not found"; + + return false; // Property not available. Default: don't use autodiscovery +} + void ScenarioManagerWidgetController::autoDiscoverArmarXPackages() { - QSettings autosettings("KIT", "ScenarioManager"); + QSettings autosettings(QString(settingsFile.c_str()), QSettings::NativeFormat); + auto packagesStd = CMakePackageFinder::FindAllArmarXSourcePackages(); std::sort(packagesStd.begin(), packagesStd.end(), @@ -82,11 +92,11 @@ void ScenarioManagerWidgetController::autoDiscoverArmarXPackages() }); QStringList packages; - ARMARX_VERBOSE << "Discovered: "; + ARMARX_INFO << "Discovered the following ArmarX packages: "; for(const auto& pkg : packagesStd) { packages.push_back(QString::fromStdString(pkg)); - ARMARX_VERBOSE << "- " << pkg; + ARMARX_INFO << "- " << pkg; } autosettings.setValue("packages", packages); @@ -97,13 +107,13 @@ ScenarioManagerWidgetController::loadSettings(QSettings* settings) QSettings autosettings(QString(settingsFile.c_str()), QSettings::NativeFormat); QStringList scenarios = settings->value("scenarios", QStringList()).toStringList(); scenarios.removeDuplicates(); - if (scenarios.size() > 0) + if (not scenarios.empty()) { autosettings.setValue("scenarios", scenarios); } QStringList packages = settings->value("packages", QStringList()).toStringList(); packages.removeDuplicates(); - if (packages.size() > 0) + if (not packages.empty()) { autosettings.setValue("packages", packages); } @@ -272,6 +282,12 @@ ScenarioManagerWidgetController::init() widget.applicationDatabase, SLOT(setModel(FilterableTreeModelSortFilterProxyModelPtr))); + if(isPackageAutoDiscoveryEnabled()) + { + ARMARX_IMPORTANT << "ArmarX package autodiscovery enabled."; + autoDiscoverArmarXPackages(); + } + widget.scenarioView->setModel(scenarioListController.getTreeModel()); connect(editModeAction, SIGNAL(toggled(bool)), this, SLOT(editMode(bool))); @@ -284,13 +300,12 @@ ScenarioManagerWidgetController::init() QStringList packages = settings.value("packages").toStringList(); packages.removeDuplicates(); - if (packages.size() == 0) + if (packages.empty()) { - //armarx::ArmarXMainWindow* mainWindow = static_cast<ArmarXMainWindow*>(); armarx::ApplicationPtr application = Application::getInstance(); if (application.get() != nullptr) { - for (auto package : application->getDefaultPackageNames()) + for (const auto& package : application->getArmarXPackageNames()) { packages << QString::fromStdString(package); } diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.h b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.h index 56b0b96d..29473c4f 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.h +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.h @@ -157,5 +157,9 @@ namespace armarx { return QIcon(":icons/ArmarX_Play_Store.svg"); } + + private: + bool isPackageAutoDiscoveryEnabled(); + }; } diff --git a/source/ArmarXGui/gui-plugins/StatechartEditorPlugin/StatechartEditorController.cpp b/source/ArmarXGui/gui-plugins/StatechartEditorPlugin/StatechartEditorController.cpp index 9a828da8..dd6163d8 100644 --- a/source/ArmarXGui/gui-plugins/StatechartEditorPlugin/StatechartEditorController.cpp +++ b/source/ArmarXGui/gui-plugins/StatechartEditorPlugin/StatechartEditorController.cpp @@ -168,7 +168,7 @@ namespace armarx if (!profiles) { profiles = StatechartProfiles::ReadProfileFiles( - Application::getInstance()->getDefaultPackageNames()); + Application::getInstance()->getArmarXPackageNames()); } if (settings->contains("selectedProfile")) @@ -909,7 +909,7 @@ armarx::StatechartEditorController::getConfigDialog(QWidget* parent) if (!dialog) { profiles = StatechartProfiles::ReadProfileFiles( - Application::getInstance()->getDefaultPackageNames()); + Application::getInstance()->getArmarXPackageNames()); dialog = new StatechartEditorConfigDialog(profiles, parent); } -- GitLab