From e97c998d2049a5647baa9921c52c5eb3615a72b9 Mon Sep 17 00:00:00 2001 From: Mirko Waechter <mirko.waechter@kit.edu> Date: Sun, 27 Aug 2017 18:56:13 +0200 Subject: [PATCH] added button for widget search bar --- .../ArmarXGui/ArmarXMainWindow.cpp | 34 +++++++++++++------ .../applications/ArmarXGui/ArmarXMainWindow.h | 10 +++++- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp index 6dafc432..e0b2e18a 100644 --- a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp +++ b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp @@ -134,14 +134,15 @@ ArmarXMainWindow::ArmarXMainWindow(const armarx::ManagedIceObjectRegistryInterfa tipDialog->setBlackListedStrings(mainSettings.value(CONFIG_BLACKLISTED_TIPS).toStringList()); ui->actionLoadLastConfig->setChecked(mainSettings.value(CONFIG_LOAD_LAST_CONFIG).toBool()); + addWidgetAction = new AddArmarXWidgetAction("", this, this); + connect(addWidgetAction, SIGNAL(clicked(QString, QString)), this, SLOT(createArmarXWidget(QString, QString)), Qt::UniqueConnection); + connect(ui->actionLoadPlugin, SIGNAL(triggered()), this, SLOT(pluginDialog())); connect(ui->actionSave_Gui, SIGNAL(triggered()), this, SLOT(saveGuiConfig())); connect(ui->actionLoad_Gui_Config, SIGNAL(triggered()), this, SLOT(loadGuiConfig())); connect(ui->actionQuit, SIGNAL(triggered()), this, SLOT(close())); connect(ui->actionSave_Gui_as, SIGNAL(triggered()), this, SLOT(saveGuiConfigAs())); - // connect(ui->actionClear_tip_blacklist, SIGNAL(triggered()), this, SLOT(on_actionClear_tip_blacklist_triggered())); - // connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(on_actionAbout_triggered())); // EmergencyStop @@ -1090,7 +1091,7 @@ void ArmarXMainWindow::updateAvailableWidgetList() { ui->menuAdd_Widget->clear(); - QLineEdit* searchField = new QLineEdit(ui->menuAdd_Widget); + searchField = new QLineEdit(ui->menuAdd_Widget); searchField->setToolTip("Search and add a new widget from all loaded ArmarX Gui Plugins"); searchField->setMaximumWidth(250); searchField->setPlaceholderText("Widget Search"); @@ -1163,6 +1164,15 @@ void ArmarXMainWindow::updateAvailableWidgetList() ui->toolBar->addSeparator(); ui->toolBar->addWidget(searchField); + QIcon icon; + icon.addFile(QString::fromUtf8("://icons/edit-add.ico"), QSize(), QIcon::Normal, QIcon::Off); + openWidgetButton = new QToolButton(this); + openWidgetButton->setEnabled(false); + openWidgetButton->setIcon(icon); + openWidgetButton->setToolTip("Open selected widget"); + connect(openWidgetButton, SIGNAL(clicked()), this, SLOT(openWidgetButtonClicked()), Qt::UniqueConnection); + ui->toolBar->addWidget(openWidgetButton); + connect(searchField, SIGNAL(textChanged(QString)), this, SLOT(updateOpenWidgetButtonStatus(QString)), Qt::UniqueConnection); auto favoriteWidgetNames = getFavoriteWidgets(); @@ -1173,8 +1183,6 @@ void ArmarXMainWindow::updateAvailableWidgetList() label->setToolTip("The favorites are generated from the usage frequency over the last X widget creations."); ui->toolBar->addWidget(label); } - - for (auto widgetName : favoriteWidgetNames) { if (actionList.contains(widgetName)) @@ -1437,13 +1445,17 @@ void armarx::ArmarXMainWindow::on_actionOpen_Use_Case_triggered() } - -// Emergency Stop - - - - void armarx::ArmarXMainWindow::on_actionClear_plugin_cache_triggered() { pluginCache.clearCacheFile(); } + +void ArmarXMainWindow::updateOpenWidgetButtonStatus(QString widgetName) +{ + openWidgetButton->setEnabled(pluginCache.getAvailableWidgetNames().contains(widgetName)); +} + +void ArmarXMainWindow::openWidgetButtonClicked() +{ + addWidgetAction->triggered(searchField->text()); +} diff --git a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h index e04ad8bb..180a6c93 100644 --- a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h +++ b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h @@ -54,6 +54,7 @@ class QScrollArea; class QSignalMapper; class QListWidgetItem; class QActionGroup; +class QLineEdit; namespace Ui { @@ -64,6 +65,7 @@ namespace Ui namespace armarx { class GuiUseCaseSelector; + class AddArmarXWidgetAction; class ArmarXDockWidget; @@ -161,6 +163,10 @@ namespace armarx void on_actionClear_plugin_cache_triggered(); + void updateOpenWidgetButtonStatus(QString widgetName); + + void openWidgetButtonClicked(); + private: /** * @brief updates the menu entry with the available widgets. @@ -231,7 +237,9 @@ namespace armarx QString splashscreenPrefix; GuiUseCaseSelector* guiUseCaseSelector; QStringList mainWidgets; - + QToolButton* openWidgetButton; + QLineEdit* searchField; + AddArmarXWidgetAction* addWidgetAction; boost::shared_ptr<boost::recursive_mutex> mutex3d; friend class WidgetNameDialog; -- GitLab