From a2616274a792e4061e39b3f313c4ca03eda59265 Mon Sep 17 00:00:00 2001 From: Nicolo' Genesio Date: Wed, 7 Jun 2017 18:31:24 +0200 Subject: [PATCH 1/3] yarpmanager: add icons for the `all` actions --- data/icons/512x512/action_connect_all.svg | 490 +++++++++++++++++++ data/icons/512x512/action_disconnect_all.svg | 487 ++++++++++++++++++ data/icons/512x512/action_kill_all.svg | 307 ++++++++++++ data/icons/512x512/action_play_all.svg | 414 ++++++++++++++++ data/icons/512x512/action_stop_all.svg | 368 ++++++++++++++ src/yarpmanager/res.qrc | 10 +- src/yarpmanager/src-manager/mainwindow.ui | 170 ++++++- 7 files changed, 2218 insertions(+), 28 deletions(-) create mode 100644 data/icons/512x512/action_connect_all.svg create mode 100644 data/icons/512x512/action_disconnect_all.svg create mode 100644 data/icons/512x512/action_kill_all.svg create mode 100644 data/icons/512x512/action_play_all.svg create mode 100644 data/icons/512x512/action_stop_all.svg diff --git a/data/icons/512x512/action_connect_all.svg b/data/icons/512x512/action_connect_all.svg new file mode 100644 index 00000000000..4d05878d1ec --- /dev/null +++ b/data/icons/512x512/action_connect_all.svg @@ -0,0 +1,490 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/512x512/action_disconnect_all.svg b/data/icons/512x512/action_disconnect_all.svg new file mode 100644 index 00000000000..9ac7dcece04 --- /dev/null +++ b/data/icons/512x512/action_disconnect_all.svg @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/512x512/action_kill_all.svg b/data/icons/512x512/action_kill_all.svg new file mode 100644 index 00000000000..2e4d9838be0 --- /dev/null +++ b/data/icons/512x512/action_kill_all.svg @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/512x512/action_play_all.svg b/data/icons/512x512/action_play_all.svg new file mode 100644 index 00000000000..593806dc01f --- /dev/null +++ b/data/icons/512x512/action_play_all.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/512x512/action_stop_all.svg b/data/icons/512x512/action_stop_all.svg new file mode 100644 index 00000000000..8f14e54e1b2 --- /dev/null +++ b/data/icons/512x512/action_stop_all.svg @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/yarpmanager/res.qrc b/src/yarpmanager/res.qrc index 7e576925574..84f78b35596 100644 --- a/src/yarpmanager/res.qrc +++ b/src/yarpmanager/res.qrc @@ -1,9 +1,11 @@ - - - + + ../../data/icons/512x512/yarpmanager.svg ../../data/icons/512x512/actions-media-stop_B.svg ../../data/icons/512x512/actions-media-play_B.svg + ../../data/icons/512x512/action_play_all.svg + ../../data/icons/512x512/action_connect_all.svg + ../../data/icons/512x512/action_disconnect_all.svg ../../data/icons/512x512/folder-new.svg ../../data/icons/512x512/folder-sand.svg ../../data/icons/512x512/folder-sand.svg @@ -16,6 +18,7 @@ ../../data/icons/512x512/actions-apply.svg ../../data/icons/512x512/actions-edit-clear.svg ../../data/icons/512x512/actions-kill.svg + ../../data/icons/512x512/action_kill_all.svg ../../data/icons/512x512/actions-connect.svg ../../data/icons/512x512/actions-refresh.svg ../../data/icons/512x512/actions-disconnect.svg @@ -29,6 +32,7 @@ ../../data/icons/22x22/window-close-symbolic_A.svg ../../data/icons/22x22/window-close-symbolic_B.svg ../../data/icons/22x22/actions-media-stop_B.svg + ../../data/icons/512x512/action_stop_all.svg ../../data/icons/22x22/actions-media-play_B.svg ../../data/icons/22x22/network-disconnected.svg ../../data/icons/22x22/actions-connect.svg diff --git a/src/yarpmanager/src-manager/mainwindow.ui b/src/yarpmanager/src-manager/mainwindow.ui index 833bbe92607..f30e9a18f58 100644 --- a/src/yarpmanager/src-manager/mainwindow.ui +++ b/src/yarpmanager/src-manager/mainwindow.ui @@ -264,14 +264,21 @@ Manage + + + + + + + + + - - @@ -294,6 +301,12 @@ + + Main Toolbar + + + true + TopToolBarArea @@ -305,16 +318,48 @@ + + + + + Application Action Toolbar + + + true + + + LeftToolBarArea + + + false + + + + + + + + + + Selection Action Toolbar + + + true + + + TopToolBarArea + + + false + - - - + + - @@ -435,52 +480,64 @@ Export Graph... - + - - :/play.svg:/play.svg + + :/play_all.svg:/play_all.svg - Run + Run all - - F5 + + Run all - + - - :/stop.svg:/stop.svg + + :/stop_all.svg:/stop_all.svg - Stop + Stop all + + + Stop all - + - :/kill.svg:/kill.svg + :/kill_all.svg:/kill_all.svg - Kill + Kill all + + + Kill all - + - :/connect.svg:/connect.svg + :/connect_all.svg:/connect_all.svg - Connect + Connect all + + + Connect all - + - :/disconnect.svg:/disconnect.svg + :/disconnect_all.svg:/disconnect_all.svg - Disconnect + Disconnect all + + + Disconnect all @@ -491,6 +548,9 @@ Refresh Status + + F5 + @@ -526,6 +586,66 @@ &Manager Window + + + + :/play.svg:/play.svg + + + Play selected + + + Run selected + + + + + + :/stop.svg:/stop.svg + + + Stop selected + + + Stop selected + + + + + + :/connect.svg:/connect.svg + + + Connect selected + + + Connect selected + + + + + + :/disconnect.svg:/disconnect.svg + + + Disconnect selected + + + Disconnect selected + + + + + + :/kill.svg:/kill.svg + + + Kill selected + + + Kill selected + + From 8bd90ef503393e0907341746c9fb7cc71bec5eb4 Mon Sep 17 00:00:00 2001 From: Nicolo' Genesio Date: Wed, 7 Jun 2017 18:31:36 +0200 Subject: [PATCH 2/3] yarpmanager: add run/stop/kill/connect/disconnect selected action --- .../src-manager/applicationviewwidget.cpp | 45 +++++-- .../src-manager/applicationviewwidget.h | 19 ++- src/yarpmanager/src-manager/mainwindow.cpp | 125 ++++++++++++++---- src/yarpmanager/src-manager/mainwindow.h | 16 ++- 4 files changed, 158 insertions(+), 47 deletions(-) diff --git a/src/yarpmanager/src-manager/applicationviewwidget.cpp b/src/yarpmanager/src-manager/applicationviewwidget.cpp index 900307fe720..0a2893d2206 100644 --- a/src/yarpmanager/src-manager/applicationviewwidget.cpp +++ b/src/yarpmanager/src-manager/applicationviewwidget.cpp @@ -217,6 +217,25 @@ void ApplicationViewWidget::showBuilder(bool show) builderWidget->setVisible(show); } +bool ApplicationViewWidget::anyModuleSelected() +{ + return !ui->moduleList->selectedItems().isEmpty(); +} +bool ApplicationViewWidget::anyConnectionSelected() +{ + return !ui->connectionList->selectedItems().isEmpty(); +} + +CustomTreeWidget* ApplicationViewWidget::getModuleList() +{ + return ui->moduleList; +} + +CustomTreeWidget* ApplicationViewWidget::getConnectionList() +{ + return ui->connectionList; +} + QToolBar* ApplicationViewWidget::getBuilderToolBar() { return builderToolBar; @@ -1409,6 +1428,7 @@ void ApplicationViewWidget::selectAllNestedApplicationModule(QTreeWidgetItem *it } } + /*! \brief Select/deselect all connections \param check */ @@ -1465,37 +1485,42 @@ void ApplicationViewWidget::selectAll() } /*! \brief Run all modules in the application */ -void ApplicationViewWidget::runApplicationSet() +void ApplicationViewWidget::runApplicationSet(bool onlySelected) { - selectAllModule(true); + if(!onlySelected) + selectAllModule(true); onRun(); } /*! \brief Stop all modules in the application */ -void ApplicationViewWidget::stopApplicationSet() +void ApplicationViewWidget::stopApplicationSet(bool onlySelected) { - selectAllModule(true); + if(!onlySelected) + selectAllModule(true); onStop(); } /*! \brief Kill all running modules in the application */ -void ApplicationViewWidget::killApplicationSet() +void ApplicationViewWidget::killApplicationSet(bool onlySelected) { - selectAllModule(true); + if(!onlySelected) + selectAllModule(true); onKill(); } /*! \brief Connect all modules in the application to their ports using connections list*/ -void ApplicationViewWidget::connectConnectionSet() +void ApplicationViewWidget::connectConnectionSet(bool onlySelected) { - selectAllConnections(true); + if(!onlySelected) + selectAllConnections(true); onConnect(); } /*! \brief Disconnect all modules in the application to their ports using connections list*/ -void ApplicationViewWidget::disconnectConnectionSet() +void ApplicationViewWidget::disconnectConnectionSet(bool onlySelected) { - selectAllConnections(true); + if(!onlySelected) + selectAllConnections(true); onDisconnect(); } diff --git a/src/yarpmanager/src-manager/applicationviewwidget.h b/src/yarpmanager/src-manager/applicationviewwidget.h index 2357e8b4f1b..27fcf13144b 100644 --- a/src/yarpmanager/src-manager/applicationviewwidget.h +++ b/src/yarpmanager/src-manager/applicationviewwidget.h @@ -21,6 +21,7 @@ #include #include #include "yarpbuilderlib.h" +#include namespace Ui { class ApplicationViewWidget; @@ -41,11 +42,11 @@ class ApplicationViewWidget : public GenericViewWidget, public ApplicationEvent QWidget *parent = 0); ~ApplicationViewWidget(); - void runApplicationSet(); - void stopApplicationSet(); - void killApplicationSet(); - void connectConnectionSet(); - void disconnectConnectionSet(); + void runApplicationSet(bool onlySelected); + void stopApplicationSet(bool onlySelected); + void killApplicationSet(bool onlySelected); + void connectConnectionSet(bool onlySelected); + void disconnectConnectionSet(bool onlySelected); void refresh(); void selectAll(); void exportGraph(); @@ -68,6 +69,12 @@ class ApplicationViewWidget : public GenericViewWidget, public ApplicationEvent bool isBuilderFloating(); void showBuilder(bool); + bool anyModuleSelected(); + bool anyConnectionSelected(); + + CustomTreeWidget* getModuleList(); + CustomTreeWidget* getConnectionList(); + bool save(); QString getFileName(); void setFileName(QString filename); @@ -105,6 +112,7 @@ class ApplicationViewWidget : public GenericViewWidget, public ApplicationEvent void selectAllNestedApplicationModule(QTreeWidgetItem *it, bool check); + private: QMainWindow *builderWindowContainer; QDockWidget *builderWidget; @@ -202,7 +210,6 @@ private slots: void builderWindowFloating(bool); - }; #endif // APPLICATIONVIEWWIDGET_H diff --git a/src/yarpmanager/src-manager/mainwindow.cpp b/src/yarpmanager/src-manager/mainwindow.cpp index 7a70a91aba2..67f6e199f1e 100644 --- a/src/yarpmanager/src-manager/mainwindow.cpp +++ b/src/yarpmanager/src-manager/mainwindow.cpp @@ -85,6 +85,7 @@ MainWindow::MainWindow(QWidget *parent) : prevWidget = NULL; + connect(ui->entitiesTree,SIGNAL(viewResource(yarp::manager::Computer*)),this,SLOT(viewResource(yarp::manager::Computer*))); connect(ui->entitiesTree,SIGNAL(viewModule(yarp::manager::Module*)),this,SLOT(viewModule(yarp::manager::Module*))); connect(ui->entitiesTree,SIGNAL(viewApplication(yarp::manager::Application*,bool)),this,SLOT(viewApplication(yarp::manager::Application*,bool))); @@ -97,11 +98,18 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->entitiesTree,SIGNAL(reopenModule(QString,QString)),this,SLOT(onReopenModule(QString,QString)),Qt::DirectConnection); connect(ui->entitiesTree,SIGNAL(reopenResource(QString,QString)),this,SLOT(onReopenResource(QString,QString)),Qt::DirectConnection); - connect(ui->actionRun,SIGNAL(triggered()),this,SLOT(onRun())); - connect(ui->actionStop,SIGNAL(triggered()),this,SLOT(onStop())); - connect(ui->actionKill,SIGNAL(triggered()),this,SLOT(onKill())); - connect(ui->actionConnect,SIGNAL(triggered()),this,SLOT(onConnect())); - connect(ui->actionDisconnect,SIGNAL(triggered()),this,SLOT(onDisconnect())); + connect(ui->actionRun_all,SIGNAL(triggered()),this,SLOT(onRun())); + connect(ui->actionStop_all,SIGNAL(triggered()),this,SLOT(onStop())); + connect(ui->actionKill_all,SIGNAL(triggered()),this,SLOT(onKill())); + connect(ui->actionConnect_all,SIGNAL(triggered()),this,SLOT(onConnect())); + connect(ui->actionDisconnect_all,SIGNAL(triggered()),this,SLOT(onDisconnect())); + + connect(ui->actionRun,SIGNAL(triggered()),this,SLOT(onRunSelected())); + connect(ui->actionStop,SIGNAL(triggered()),this,SLOT(onStopSelected())); + connect(ui->actionKill,SIGNAL(triggered()),this,SLOT(onKillSelected())); + connect(ui->actionConnect,SIGNAL(triggered()),this,SLOT(onConnectSelected())); + connect(ui->actionDisconnect,SIGNAL(triggered()),this,SLOT(onDisconnectSelected())); + connect(ui->actionRefresh_Status,SIGNAL(triggered()),this,SLOT(onRefresh())); connect(ui->actionSelect_All,SIGNAL(triggered()),this,SLOT(onSelectAll())); connect(ui->actionExport_Graph,SIGNAL(triggered()),this,SLOT(onExportGraph())); @@ -128,8 +136,15 @@ MainWindow::MainWindow(QWidget *parent) : this->addAction(ui->actionSave); this->addAction(ui->actionSave_As); this->addAction(ui->actionClose); + this->addAction(ui->actionRefresh_Status); onTabChangeItem(-1); + ui->actionConnect->setEnabled(false); + ui->actionDisconnect->setEnabled(false); + ui->actionRun->setEnabled(false); + ui->actionStop->setEnabled(false); + ui->actionKill->setEnabled(false); + ui->action_Manager_Window->setChecked(true); } @@ -531,11 +546,20 @@ void MainWindow::viewApplication(yarp::manager::Application *app,bool editingMod int index = ui->mainTabs->addTab(w,app->getName()); ui->mainTabs->setTabIcon(index,QIcon(":/run22.svg")); ui->mainTabs->setCurrentIndex(index); - + if(!editingMode) + { + connect(w->getConnectionList(),SIGNAL(itemSelectionChanged()),this,SLOT(onApplicationSelectionChanged())); + connect(w->getModuleList(),SIGNAL(itemSelectionChanged()),this,SLOT(onApplicationSelectionChanged())); + } if(editingMode){ ui->actionSelect_All->setEnabled(false); ui->actionRefresh_Status->setEnabled(false); ui->actionExport_Graph->setEnabled(false); + ui->actionConnect_all->setEnabled(false); + ui->actionDisconnect_all->setEnabled(false); + ui->actionRun_all->setEnabled(false); + ui->actionStop_all->setEnabled(false); + ui->actionKill_all->setEnabled(false); ui->actionConnect->setEnabled(false); ui->actionDisconnect->setEnabled(false); ui->actionRun->setEnabled(false); @@ -545,11 +569,11 @@ void MainWindow::viewApplication(yarp::manager::Application *app,bool editingMod ui->actionSelect_All->setEnabled(true); ui->actionRefresh_Status->setEnabled(true); ui->actionExport_Graph->setEnabled(true); - ui->actionConnect->setEnabled(true); - ui->actionDisconnect->setEnabled(true); - ui->actionRun->setEnabled(true); - ui->actionStop->setEnabled(true); - ui->actionKill->setEnabled(true); + ui->actionConnect_all->setEnabled(true); + ui->actionDisconnect_all->setEnabled(true); + ui->actionRun_all->setEnabled(true); + ui->actionStop_all->setEnabled(true); + ui->actionKill_all->setEnabled(true); onRefresh(); } } @@ -571,7 +595,7 @@ void MainWindow::onExportGraph() /*! \brief When Run is clicked the applications in the current Application Tab will go on run state */ -void MainWindow::onRun() +void MainWindow::onRun(bool onlySelected) { QWidget *w = ui->mainTabs->currentWidget(); if(!w){ @@ -580,13 +604,13 @@ void MainWindow::onRun() yarp::manager::NodeType type = ((GenericViewWidget*)w)->getType(); if(type == yarp::manager::APPLICATION){ ApplicationViewWidget *ww = (ApplicationViewWidget*)w; - ww->runApplicationSet(); + ww->runApplicationSet(onlySelected); } } /*! \brief When Stop is clicked the applications running in the current Application Tab will go on stop state */ -void MainWindow::onStop() +void MainWindow::onStop(bool onlySelected) { QWidget *w = ui->mainTabs->currentWidget(); if(!w){ @@ -595,13 +619,13 @@ void MainWindow::onStop() yarp::manager::NodeType type = ((GenericViewWidget*)w)->getType(); if(type == yarp::manager::APPLICATION){ ApplicationViewWidget *ww = (ApplicationViewWidget*)w; - ww->stopApplicationSet(); + ww->stopApplicationSet(onlySelected); } } /*! \brief When Stop is clicked the applications running in the current Application Tab will be killed */ -void MainWindow::onKill() +void MainWindow::onKill(bool onlySelected) { QWidget *w = ui->mainTabs->currentWidget(); if(!w){ @@ -610,13 +634,13 @@ void MainWindow::onKill() yarp::manager::NodeType type = ((GenericViewWidget*)w)->getType(); if(type == yarp::manager::APPLICATION){ ApplicationViewWidget *ww = (ApplicationViewWidget*)w; - ww->killApplicationSet(); + ww->killApplicationSet(onlySelected); } } /*! \brief When Connect is clicked the applications ports will be connected */ -void MainWindow::onConnect() +void MainWindow::onConnect(bool onlySelected) { QWidget *w = ui->mainTabs->currentWidget(); if(!w){ @@ -625,12 +649,12 @@ void MainWindow::onConnect() yarp::manager::NodeType type = ((GenericViewWidget*)w)->getType(); if(type == yarp::manager::APPLICATION){ ApplicationViewWidget *ww = (ApplicationViewWidget*)w; - ww->connectConnectionSet(); + ww->connectConnectionSet(onlySelected); } } /*! \brief When Disconnect is clicked the applications ports will be disconnected */ -void MainWindow::onDisconnect() +void MainWindow::onDisconnect(bool onlySelected) { QWidget *w = ui->mainTabs->currentWidget(); if(!w){ @@ -639,9 +663,30 @@ void MainWindow::onDisconnect() yarp::manager::NodeType type = ((GenericViewWidget*)w)->getType(); if(type == yarp::manager::APPLICATION){ ApplicationViewWidget *ww = (ApplicationViewWidget*)w; - ww->disconnectConnectionSet(); + ww->disconnectConnectionSet(onlySelected); } } + +void MainWindow::onRunSelected() +{ + onRun(true); +} +void MainWindow::onStopSelected() +{ + onStop(true); +} +void MainWindow::onKillSelected() +{ + onKill(true); +} +void MainWindow::onConnectSelected() +{ + onConnect(true); +} +void MainWindow::onDisconnectSelected() +{ + onDisconnect(true); +} /*! \brief Refresh the applications state */ void MainWindow::onRefresh() @@ -811,6 +856,11 @@ void MainWindow::onTabChangeItem(int index) ui->actionSelect_All->setEnabled(false); ui->actionRefresh_Status->setEnabled(false); ui->actionExport_Graph->setEnabled(false); + ui->actionConnect_all->setEnabled(false); + ui->actionDisconnect_all->setEnabled(false); + ui->actionRun_all->setEnabled(false); + ui->actionStop_all->setEnabled(false); + ui->actionKill_all->setEnabled(false); ui->actionConnect->setEnabled(false); ui->actionDisconnect->setEnabled(false); ui->actionRun->setEnabled(false); @@ -820,11 +870,12 @@ void MainWindow::onTabChangeItem(int index) ui->actionSelect_All->setEnabled(true); ui->actionRefresh_Status->setEnabled(true); ui->actionExport_Graph->setEnabled(true); - ui->actionConnect->setEnabled(true); - ui->actionDisconnect->setEnabled(true); - ui->actionRun->setEnabled(true); - ui->actionStop->setEnabled(true); - ui->actionKill->setEnabled(true); + ui->actionConnect_all->setEnabled(true); + ui->actionDisconnect_all->setEnabled(true); + ui->actionRun_all->setEnabled(true); + ui->actionStop_all->setEnabled(true); + ui->actionKill_all->setEnabled(true); + onApplicationSelectionChanged(); } @@ -870,6 +921,11 @@ void MainWindow::onTabChangeItem(int index) } ui->actionSelect_All->setEnabled(false); ui->actionExport_Graph->setEnabled(false); + ui->actionConnect_all->setEnabled(false); + ui->actionDisconnect_all->setEnabled(false); + ui->actionRun_all->setEnabled(false); + ui->actionStop_all->setEnabled(false); + ui->actionKill_all->setEnabled(false); ui->actionConnect->setEnabled(false); ui->actionDisconnect->setEnabled(false); ui->actionRun->setEnabled(false); @@ -1242,6 +1298,23 @@ void MainWindow::onReopenResource(QString resName,QString fileName) syncApplicationList(); } +void MainWindow::onApplicationSelectionChanged() +{ + QWidget *w = ui->mainTabs->currentWidget(); + if(!w){ + return; + } + yarp::manager::NodeType type = ((GenericViewWidget*)w)->getType(); + if(type == yarp::manager::APPLICATION){ + ApplicationViewWidget *ww = (ApplicationViewWidget*)w; + ui->actionRun->setEnabled(ww->anyModuleSelected()); + ui->actionStop->setEnabled(ww->anyModuleSelected()); + ui->actionKill->setEnabled(ww->anyModuleSelected()); + ui->actionConnect->setEnabled(ww->anyConnectionSelected()); + ui->actionDisconnect->setEnabled(ww->anyConnectionSelected()); + } +} + void MainWindow::onViewBuilderWindows() { if(ui->action_Builder_Window->isChecked()) config.put("showBuilder", true); diff --git a/src/yarpmanager/src-manager/mainwindow.h b/src/yarpmanager/src-manager/mainwindow.h index 85eec3478c0..a323a1be904 100644 --- a/src/yarpmanager/src-manager/mainwindow.h +++ b/src/yarpmanager/src-manager/mainwindow.h @@ -76,11 +76,16 @@ private slots: void onNewResource(); void onNewApplication(); void onExportGraph(); - void onRun(); - void onStop(); - void onKill(); - void onConnect(); - void onDisconnect(); + void onRun(bool onlySelected=false); + void onStop(bool onlySelected=false); + void onKill(bool onlySelected=false); + void onConnect(bool onlySelected=false); + void onDisconnect(bool onlySelected=false); + void onRunSelected(); + void onStopSelected(); + void onKillSelected(); + void onConnectSelected(); + void onDisconnectSelected(); void onRefresh(); void onSelectAll(); bool onTabClose(int); @@ -107,6 +112,7 @@ public slots: void onReopenApplication(QString,QString); void onReopenModule(QString,QString); void onReopenResource(QString,QString); + void onApplicationSelectionChanged(); signals: void selectItem(QString, bool); From 262097043f44ce03c5df06fac1bb53a3385cb104 Mon Sep 17 00:00:00 2001 From: Nicogene Date: Wed, 7 Jun 2017 23:45:30 +0200 Subject: [PATCH 3/3] Update v2_3_68_1.md --- doc/release/v2_3_68_1.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/release/v2_3_68_1.md b/doc/release/v2_3_68_1.md index a977f42eec6..6c7a60c573d 100644 --- a/doc/release/v2_3_68_1.md +++ b/doc/release/v2_3_68_1.md @@ -152,7 +152,9 @@ Bug Fixes * Added automatic refresh on the application tab open. * Added automatic application tab open when you load an application from disk. * Disabled the *select all* after pressing run all, stop all, refresh all and kill - all actions. + all actions. +* Added run/stop/kill/connect/disconnect all and run/stop/kill/connect/disconnect + selected #### yarplaserscannergui