diff --git a/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp b/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp index e5c869a89795a9d0bad0c20f0c95b94d9538f3a3..63f5e94873cde0d91a11d6c3c8213ff6a074f206 100644 --- a/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp +++ b/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.cpp @@ -23,17 +23,20 @@ #include "ArmarXGuiApp.h" +#include <iostream> +#include <optional> + +#include <QHostInfo> #include <QListWidget> #include <QMessageBox> -#include <QTime> #include <QTextCodec> -#include <iostream> +#include <QTime> -#include <ArmarXCore/util/CPPUtility/trace.h> -#include <ArmarXCore/core/util/StringHelpers.h> +#include <SimoxUtility/algorithm/string/string_tools.h> -#include <IceUtil/UUID.h> -#include <QHostInfo> +#include <ArmarXCore/core/util/StringHelpers.h> +#include <ArmarXCore/core/time/DateTime.h> +#include <ArmarXCore/util/CPPUtility/trace.h> namespace armarx @@ -41,6 +44,18 @@ namespace armarx int ArmarXGuiApp::globalargc = 0; + ArmarXGuiAppPropertyDefinitions::ArmarXGuiAppPropertyDefinitions(std::string prefix) : + ApplicationPropertyDefinitions(prefix) + { + defineOptionalProperty<std::string>( + "LoadPlugins", "", "List of paths to GuiPlugin-Libs (semi-colon seperated)"); + defineOptionalProperty<std::string>( + "GuiConfigFile", "", "Path to config file, that should be loaded on startup"); + defineOptionalProperty<bool>( + "DisablePreloading", false, "Disables the preloading of widgets. Can be helpful if some preloaded widget crashes the gui."); + } + + ArmarXGuiApp::ArmarXGuiApp(int& argc, char** argv) : qApplication(nullptr), argc(argc), argv(argv) { @@ -77,7 +92,7 @@ namespace armarx return 1; } } - setName("ArmarXGui-" + std::to_string(IceUtil::Time::now().toMilliSeconds())); + setName(makeName()); return armarx::Application::run(argc, argv); } @@ -198,6 +213,42 @@ namespace armarx } + static QString getUserName() + { + QString username = qgetenv("USER"); + if (username.isEmpty()) + { + username = qgetenv("USERNAME"); + } + return username; + } + + + static QString getUserNameAtHostName() + { + const QString hostname = QHostInfo::localHostName(); + QString user = getUserName(); + if (user.isEmpty()) + { + return hostname; + } + else + { + return user + "@" + hostname; + } + } + + std::string ArmarXGuiApp::makeName() + { + std::vector<std::string> items { "ArmarXGui" }; + items.push_back(getUserNameAtHostName().toStdString()); + items.push_back(DateTime::Now().toDateTimeString()); + + std::string name = simox::alg::join(items, "_"); + + return name; + } + bool ArmarXQApplication::notify(QObject* obj, QEvent* ev) { @@ -247,12 +298,7 @@ namespace armarx const auto guiWindowBaseName = QString{"ArmarX"} + " @ " + QHostInfo::localHostName(); setApplicationName(guiWindowBaseName); - QString username = qgetenv("USER"); - if (username.isEmpty()) - { - username = qgetenv("USERNAME"); - } - setApplicationDisplayName(username + "@" + QHostInfo::localHostName()); + setApplicationDisplayName(getUserNameAtHostName()); connect(this, SIGNAL(exceptionCaught(QString)), this, SLOT(showException(QString)), Qt::QueuedConnection); exceptionDialogHandler.setupUi(&exceptionDialog); @@ -263,4 +309,5 @@ namespace armarx ArmarXQApplication::~ArmarXQApplication() { } + } diff --git a/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.h b/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.h index dd462eb45fec80dacc17c63b8eaaff1efe7becce..99998cb83406455e91d4060e5b393ce40f11afce 100644 --- a/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.h +++ b/source/ArmarXGui/applications/ArmarXGui/ArmarXGuiApp.h @@ -52,15 +52,10 @@ namespace armarx public ApplicationPropertyDefinitions { public: - ArmarXGuiAppPropertyDefinitions(std::string prefix): - ApplicationPropertyDefinitions(prefix) - { - defineOptionalProperty<std::string>("LoadPlugins", "", "List of paths to GuiPlugin-Libs (semi-colon seperated)"); - defineOptionalProperty<std::string>("GuiConfigFile", "", "Path to config file, that should be loaded on startup"); - defineOptionalProperty<bool>("DisablePreloading", false, "Disables the preloading of widgets. Can be helpful if some preloaded widget crashes the gui."); - } + ArmarXGuiAppPropertyDefinitions(std::string prefix); }; + class ArmarXQApplication : public QApplication { @@ -128,9 +123,11 @@ namespace armarx void closeRequest_sent(); private: + static std::string makeName(); void runArmarXManager(); int startArmarX(); + private: RunningTask<ArmarXGuiApp>::pointer_type armarxManagerTask; ArmarXQApplication* qApplication; ArmarXMainWindow* mainWindow;