From a413b3638dae5aebebd02630eda56280bdbcebdb Mon Sep 17 00:00:00 2001 From: Jaswant Panchumarti Date: Sat, 30 Apr 2022 20:10:14 -0400 Subject: [PATCH] Delete all action for user scripts, macros and servers - closes paraview/paraview#21010 --- Documentation/release/dev/DeleteAllOption.md | 12 ++++++++ .../release/img/dev/delete-all-servers.png | Bin 0 -> 58070 bytes .../pqParaViewMenuBuilders.cxx | 21 +++++++++++++ .../Resources/UI/pqServerConnectDialog.ui | 17 ++++++++++ Qt/Components/pqServerConnectDialog.cxx | 15 +++++++++ Qt/Components/pqServerConnectDialog.h | 3 +- Qt/Core/pqCoreUtilities.cxx | 29 ++++++++++++++++++ Qt/Core/pqCoreUtilities.h | 12 ++++++++ Qt/Core/pqServerConfigurationCollection.cxx | 12 +++++++- Qt/Core/pqServerConfigurationCollection.h | 6 ++++ Qt/Python/pqPythonEditorActions.cxx | 17 ++++++++++ Qt/Python/pqPythonEditorActions.h | 1 + Qt/Python/pqPythonScriptEditor.cxx | 3 ++ 13 files changed, 146 insertions(+), 2 deletions(-) create mode 100644 Documentation/release/dev/DeleteAllOption.md create mode 100644 Documentation/release/img/dev/delete-all-servers.png diff --git a/Documentation/release/dev/DeleteAllOption.md b/Documentation/release/dev/DeleteAllOption.md new file mode 100644 index 0000000000..686b5aaf51 --- /dev/null +++ b/Documentation/release/dev/DeleteAllOption.md @@ -0,0 +1,12 @@ +## Delete All Action For User Macros, Scripts and Servers. + +You can now delete all macros or scripts or servers in one go. + +1. macros, go to Macros -> Delete All. +2. python scripts, Tools -> Python Script Editor, here, go to Scripts -> Delete All. +3. user server configurations, go to Connect Server Dialog, click on the Delete All button. + +ParaView will ask for a confirmation before deleting all items to prevent an accidental wipe +of all items. + +![Delete all servers](../img/dev/delete-all-servers.png) diff --git a/Documentation/release/img/dev/delete-all-servers.png b/Documentation/release/img/dev/delete-all-servers.png new file mode 100644 index 0000000000000000000000000000000000000000..314a00407fab8facf7918212aa1a880480be5b77 GIT binary patch literal 58070 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 literal 0 HcmV?d00001 diff --git a/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx b/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx index 0016e9904e..750d6ea506 100644 --- a/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx +++ b/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx @@ -115,8 +115,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "pqMacroReaction.h" #include "pqTraceReaction.h" +#include #include #include +#include #endif #include @@ -611,6 +613,25 @@ void pqParaViewMenuBuilders::buildMacrosMenu(QMenu& menu) new pqMacroReaction(menu.addAction("Import new macro...") << pqSetName("actionMacroCreate")); QMenu* editMenu = menu.addMenu("Edit...") << pqSetName("menuMacroEdit"); QMenu* deleteMenu = menu.addMenu("Delete...") << pqSetName("menuMacroDelete"); + QAction* deleteAllAction = menu.addAction(QObject::tr("Delete All")); + QObject::connect( + deleteAllAction, &QAction::triggered, pqPythonScriptEditor::getUniqueInstance(), []() { + QMessageBox::StandardButton ret = QMessageBox::question( + pqCoreUtilities::mainWidget(), "Delete All", "All macros will be deleted. Are you sure?"); + if (ret == QMessageBox::StandardButton::Yes) + { + // The script editor shows macros about to be deleted. remove those tabs. + pqPythonTabWidget* const tWidget = + pqPythonScriptEditor::getUniqueInstance()->findChild(); + for (int i = tWidget->count() - 1; i >= 0; --i) + { + Q_EMIT tWidget->tabCloseRequested(i); + } + // remove user Macros dir + pqCoreUtilities::removeRecursively(pqPythonScriptEditor::getMacrosDir()); + pqPVApplicationCore::instance()->pythonManager()->updateMacroList(); + } + }); menu.addSeparator(); manager->addWidgetForRunMacros(&menu); manager->addWidgetForEditMacros(editMenu); diff --git a/Qt/Components/Resources/UI/pqServerConnectDialog.ui b/Qt/Components/Resources/UI/pqServerConnectDialog.ui index 434c309d28..7da3b9867c 100644 --- a/Qt/Components/Resources/UI/pqServerConnectDialog.ui +++ b/Qt/Components/Resources/UI/pqServerConnectDialog.ui @@ -97,6 +97,23 @@ 0 + + + + Delete all user server configurations + + + Delete all user server configurations + + + Delete All + + + + :/QtWidgets/Icons/pqDelete.svg:/QtWidgets/Icons/pqDelete.svg + + + diff --git a/Qt/Components/pqServerConnectDialog.cxx b/Qt/Components/pqServerConnectDialog.cxx index 703be9c13d..095c89a903 100644 --- a/Qt/Components/pqServerConnectDialog.cxx +++ b/Qt/Components/pqServerConnectDialog.cxx @@ -30,6 +30,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ========================================================================*/ #include "pqServerConnectDialog.h" +#include "pqCoreUtilities.h" #include "pqQtDeprecated.h" #include "ui_pqServerConnectDialog.h" @@ -171,6 +172,8 @@ pqServerConnectDialog::pqServerConnectDialog( QObject::connect(this->Internals->editServer, SIGNAL(clicked()), this, SLOT(editServer())); + QObject::connect(this->Internals->deleteAll, SIGNAL(clicked()), this, SLOT(deleteAllServers())); + QObject::connect( this->Internals->name, SIGNAL(textChanged(const QString&)), this, SLOT(onNameChanged())); @@ -674,6 +677,18 @@ void pqServerConnectDialog::deleteServer() Q_EMIT serverDeleted(); } +//----------------------------------------------------------------------------- +void pqServerConnectDialog::deleteAllServers() +{ + + QMessageBox::StandardButton ret = + QMessageBox::question(this, "Delete All", "All servers will be deleted. Are you sure?"); + if (ret == QMessageBox::StandardButton::Yes) + { + pqApplicationCore::instance()->serverConfigurations().removeUserConfigurations(); + } +} + //----------------------------------------------------------------------------- void pqServerConnectDialog::saveServers() { diff --git a/Qt/Components/pqServerConnectDialog.h b/Qt/Components/pqServerConnectDialog.h index 84994637db..1eb4f9660a 100644 --- a/Qt/Components/pqServerConnectDialog.h +++ b/Qt/Components/pqServerConnectDialog.h @@ -152,9 +152,10 @@ protected Q_SLOTS: void onNameChanged(); /** - * called to delete a server. + * called to delete one or all servers. */ void deleteServer(); + void deleteAllServers(); /** * called to load/save servers. diff --git a/Qt/Core/pqCoreUtilities.cxx b/Qt/Core/pqCoreUtilities.cxx index e46ddc700b..376606bce1 100644 --- a/Qt/Core/pqCoreUtilities.cxx +++ b/Qt/Core/pqCoreUtilities.cxx @@ -391,3 +391,32 @@ void pqCoreUtilities::setPaletteHighlightToCritical(QPalette& palette) palette.setColor(QPalette::Highlight, criticalRed); palette.setColor(QPalette::HighlightedText, Qt::white); } + +//----------------------------------------------------------------------------- +void pqCoreUtilities::removeRecursively(QDir dir) +{ + const bool success = dir.removeRecursively(); + if (!success) + { + QMessageBox(QMessageBox::Warning, QObject::tr("File IO Warning"), + QObject::tr("Unable to delete some files in %1").arg(dir.absolutePath()), + QMessageBox::StandardButton::Ok, pqCoreUtilities::mainWidget()) + .exec(); + } +} + +//----------------------------------------------------------------------------- +void pqCoreUtilities::remove(const QString& filePath) +{ + const auto finfo = QFileInfo(filePath); + QDir dir = finfo.dir(); + const auto fileName = finfo.fileName(); + const bool success = dir.remove(fileName); + if (!success) + { + QMessageBox(QMessageBox::Warning, QObject::tr("File IO Warning"), + QObject::tr("Unable to delete %1").arg(finfo.absoluteFilePath()), + QMessageBox::StandardButton::Ok, pqCoreUtilities::mainWidget()) + .exec(); + } +} diff --git a/Qt/Core/pqCoreUtilities.h b/Qt/Core/pqCoreUtilities.h index b20b41b6cc..2f257c48e8 100644 --- a/Qt/Core/pqCoreUtilities.h +++ b/Qt/Core/pqCoreUtilities.h @@ -203,6 +203,18 @@ public: */ static void setPaletteHighlightToCritical(QPalette& palette); + /** + * Safely delete a directory recursively. This function indicates any errors with a modal popup + * dialog. + */ + static void removeRecursively(QDir dir); + + /** + * Safely delete a file. This function indicates any errors + * with a modal popup dialog. + */ + static void remove(const QString& filePath); + private: static QWidget* findMainWindow(); static QPointer MainWidget; diff --git a/Qt/Core/pqServerConfigurationCollection.cxx b/Qt/Core/pqServerConfigurationCollection.cxx index 0c738c8cb7..fac6ddb8fb 100644 --- a/Qt/Core/pqServerConfigurationCollection.cxx +++ b/Qt/Core/pqServerConfigurationCollection.cxx @@ -124,7 +124,8 @@ pqServerConfigurationCollection::pqServerConfigurationCollection(QObject* parent pqServerConfigurationCollection::~pqServerConfigurationCollection() { auto config = vtkRemotingCoreConfiguration::GetInstance(); - if (!config->GetDisableRegistry()) + // save to servers.pvsc only if --dr/--disable-registry flag is absent and configurations exist + if (!config->GetDisableRegistry() && !this->configurations().empty()) { this->save(userServers(), true); } @@ -314,3 +315,12 @@ const pqServerConfiguration* pqServerConfigurationCollection::configuration( return nullptr; } + +void pqServerConfigurationCollection::removeUserConfigurations() +{ + Q_FOREACH (pqServerConfiguration config, this->configurations()) + { + this->removeConfiguration(config.name()); + } + pqCoreUtilities::remove(::userServers()); +} diff --git a/Qt/Core/pqServerConfigurationCollection.h b/Qt/Core/pqServerConfigurationCollection.h index 917359fc4b..959c03b29a 100644 --- a/Qt/Core/pqServerConfigurationCollection.h +++ b/Qt/Core/pqServerConfigurationCollection.h @@ -114,6 +114,12 @@ public: */ const pqServerConfiguration* configuration(const char* configuration_name) const; +public Q_SLOTS: + /** + * Remove all user configurations. This deletes the user servers.pvsc file. + */ + void removeUserConfigurations(); + Q_SIGNALS: /** * fired when the collection is modified. diff --git a/Qt/Python/pqPythonEditorActions.cxx b/Qt/Python/pqPythonEditorActions.cxx index 549c2c7530..e13c3f2690 100644 --- a/Qt/Python/pqPythonEditorActions.cxx +++ b/Qt/Python/pqPythonEditorActions.cxx @@ -84,6 +84,9 @@ pqPythonEditorActions::pqPythonEditorActions() this->GeneralActions[Action::SaveFileAsScript].setStatusTip( QObject::tr("Save the document as a Script")); + this->GeneralActions[Action::DeleteAll].setText("Delete All"); + this->GeneralActions[Action::DeleteAll].setStatusTip(QObject::tr("Delete all scripts from disk")); + this->GeneralActions[Action::Run].setText(QObject::tr("Run...")); this->GeneralActions[Action::Run].setStatusTip(QObject::tr("Run the currently edited script")); @@ -361,6 +364,19 @@ void pqPythonEditorActions::connect( }); QObject::connect(&actions[Action::CloseCurrentTab], &QAction::triggered, tWidget, &pqPythonTabWidget::closeCurrentTab); + QObject::connect(&actions[Action::DeleteAll], &QAction::triggered, tWidget, [tWidget]() { + QMessageBox::StandardButton ret = + QMessageBox::question(tWidget, "Delete All", "All scripts will be deleted. Are you sure?"); + if (ret == QMessageBox::StandardButton::Yes) + { + pqCoreUtilities::removeRecursively(pqPythonScriptEditor::getScriptsDir()); + for (int i = tWidget->count() - 1; i >= 0; --i) + { + Q_EMIT tWidget->tabCloseRequested(i); + } + pqPythonScriptEditor::updateScriptList(); + } + }); } //----------------------------------------------------------------------------- @@ -375,4 +391,5 @@ void pqPythonEditorActions::disconnect( actions[Action::NewFile].disconnect(); actions[Action::OpenFile].disconnect(); actions[Action::CloseCurrentTab].disconnect(); + actions[Action::DeleteAll].disconnect(); } diff --git a/Qt/Python/pqPythonEditorActions.h b/Qt/Python/pqPythonEditorActions.h index 9a1e6962e4..f0e89083c5 100644 --- a/Qt/Python/pqPythonEditorActions.h +++ b/Qt/Python/pqPythonEditorActions.h @@ -119,6 +119,7 @@ struct pqPythonEditorActions SaveFileAs, SaveFileAsMacro, SaveFileAsScript, + DeleteAll, // Undo/Redo Actions Undo, diff --git a/Qt/Python/pqPythonScriptEditor.cxx b/Qt/Python/pqPythonScriptEditor.cxx index 2a3614cd7b..455b65f37c 100644 --- a/Qt/Python/pqPythonScriptEditor.cxx +++ b/Qt/Python/pqPythonScriptEditor.cxx @@ -213,6 +213,9 @@ void pqPythonScriptEditor::createMenus() this->tr("Load a python script in a new tab and run it")); this->scriptMenus[ScriptActionType::Run]->setToolTipsVisible(true); + menu->addSeparator(); + menu->addAction(&this->Actions[Action::DeleteAll]); + this->Actions.FillQMenu(this->scriptMenus); } -- GitLab