From 32cd35a11fc62f52c1e2dd6726e5fb584f716629 Mon Sep 17 00:00:00 2001 From: Matthias Puchner <github@mpuchner.de> Date: Thu, 21 Oct 2021 09:15:11 +0200 Subject: [PATCH] introduce ActionFactory to create commonly used actions --- GUI/utils/ActionFactory.cpp | 31 ++++++++++++++++++++++++++ GUI/utils/ActionFactory.h | 44 +++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 GUI/utils/ActionFactory.cpp create mode 100644 GUI/utils/ActionFactory.h diff --git a/GUI/utils/ActionFactory.cpp b/GUI/utils/ActionFactory.cpp new file mode 100644 index 00000000000..70d649e0797 --- /dev/null +++ b/GUI/utils/ActionFactory.cpp @@ -0,0 +1,31 @@ +// ************************************************************************************************ +// +// BornAgain: simulate and fit reflection and scattering +// +//! @file GUI/utils/ActionFactory.cpp +//! @brief Implements class ActionFactory +//! +//! @homepage http://www.bornagainproject.org +//! @license GNU General Public License v3 or higher (see COPYING) +//! @copyright Forschungszentrum Jülich GmbH 2021 +//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) +// +// ************************************************************************************************ + +#include "GUI/utils/ActionFactory.h" +#include <QAction> + +QAction* ActionFactory::createRemoveAction(QObject* parent, const QString& what, + std::function<void()> slot) +{ + auto* removeAction = new QAction(parent); + removeAction->setText("Remove"); + removeAction->setIcon(QIcon(":/images/delete.svg")); + removeAction->setIconText("Remove"); + removeAction->setToolTip("Remove " + what); + + if (slot) + QObject::connect(removeAction, &QAction::triggered, slot); + + return removeAction; +} diff --git a/GUI/utils/ActionFactory.h b/GUI/utils/ActionFactory.h new file mode 100644 index 00000000000..a373d9f8a45 --- /dev/null +++ b/GUI/utils/ActionFactory.h @@ -0,0 +1,44 @@ +// ************************************************************************************************ +// +// BornAgain: simulate and fit reflection and scattering +// +//! @file GUI/utils/ActionFactory.h +//! @brief Defines class ActionFactory +//! +//! @homepage http://www.bornagainproject.org +//! @license GNU General Public License v3 or higher (see COPYING) +//! @copyright Forschungszentrum Jülich GmbH 2021 +//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) +// +// ************************************************************************************************ + +#ifndef BORNAGAIN_GUI_UTILS_ACTIONFACTORY_H +#define BORNAGAIN_GUI_UTILS_ACTIONFACTORY_H + +#include <functional> + +class QAction; +class QObject; +class QString; + +//! Factory to create commonly used actions +class ActionFactory { +public: + // delete copy/move constructor/assignment: + ActionFactory(const ActionFactory&) = delete; + ActionFactory(ActionFactory&&) = delete; + ActionFactory& operator=(const ActionFactory&) = delete; + ActionFactory& operator=(ActionFactory&&) = delete; + + //! Create "remove" action. + //! + //! The "what text will be used in the tooltip, appended to "Remove ". + //! If a slot is given, it will be connected to the "triggered" signal. + static QAction* createRemoveAction(QObject* parent, const QString& what, + std::function<void()> slot = nullptr); + +private: + ActionFactory() = default; +}; + +#endif // BORNAGAIN_GUI_UTILS_ACTIONFACTORY_H -- GitLab