Skip to content
Snippets Groups Projects
Commit 32cd35a1 authored by Matthias Puchner's avatar Matthias Puchner
Browse files

introduce ActionFactory to create commonly used actions

parent c906965a
No related branches found
No related tags found
1 merge request!413introduce layer oriented sample editor
// ************************************************************************************************
//
// 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;
}
// ************************************************************************************************
//
// 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment