Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_action.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2013 Sven Langkamp <sven.langkamp@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7
8#include "kis_action.h"
10#include <QEvent>
11
12class Q_DECL_HIDDEN KisAction::Private {
13
14public:
15 Private() : flags(NONE), conditions(NO_CONDITION), actionManager(0) {}
16
17 ActivationFlags flags;
18 ActivationConditions conditions;
20 QString operationID;
22};
23
24KisAction::KisAction(QObject* parent)
25 : QWidgetAction(parent)
26 , d(new Private)
27{
28 connect(this, SIGNAL(changed()), SLOT(slotChanged()));
29}
30
31KisAction::KisAction(const QString& text, QObject* parent)
32 : QWidgetAction(parent)
33 , d(new KisAction::Private)
34{
35 QAction::setText(text);
36 connect(this, SIGNAL(changed()), SLOT(slotChanged()));
37}
38
39KisAction::KisAction(const QIcon &icon, const QString& text, QObject* parent)
40 : QWidgetAction(parent)
41 , d(new Private)
42{
43 QAction::setIcon(icon);
44 QAction::setText(text);
45 connect(this, SIGNAL(changed()), SLOT(slotChanged()));
46}
47
49{
50 delete d;
51}
52
53// Using a dynamic QObject property is done for compatibility with KAction and
54// XmlGui. We may merge KisAction into the XmlGui code to make this unnecessary,
55// but that is probably a lot of work for little benefit. We currently store a
56// single default shortcut, but the old system used a list (to store default
57// primary/alternate shortcuts for local and global settings) so we marshal it
58// for compatibility.
59void KisAction::setDefaultShortcut(const QKeySequence &shortcut)
60{
61 QList<QKeySequence> listifiedShortcut;
62 // Use the empty list to represent no shortcut
63 if (shortcut != QKeySequence("")) {
64 listifiedShortcut.append(shortcut);
65 }
66 setProperty("defaultShortcuts", QVariant::fromValue(listifiedShortcut));
67}
68
69QKeySequence KisAction::defaultShortcut() const
70{
71 auto listifiedShortcut = property("defaultShortcuts").value<QList<QKeySequence> >();
72 if (listifiedShortcut.isEmpty()) {
73 return QKeySequence();
74 } else {
75 return listifiedShortcut.first();
76 }
77}
78
79void KisAction::setActivationFlags(KisAction::ActivationFlags flags)
80{
81 d->flags = flags;
82}
83
84KisAction::ActivationFlags KisAction::activationFlags()
85{
86 return d->flags;
87}
88
89void KisAction::setActivationConditions(KisAction::ActivationConditions conditions)
90{
91 d->conditions = conditions;
92}
93
94KisAction::ActivationConditions KisAction::activationConditions()
95{
96 return d->conditions;
97}
98
100{
101 d->excludedNodeTypes = nodeTypes;
102}
103
105{
106 return d->excludedNodeTypes;
107}
108
110{
111 setEnabled(enabled);
112}
113
115{
116 d->actionManager = actionManager;
117}
118
119void KisAction::setOperationID(const QString& id)
120{
121 d->operationID = id;
122 connect(this, SIGNAL(triggered()), this, SLOT(slotTriggered()));
123}
124
126{
127 if (d->actionManager && !d->operationID.isEmpty()) {
128 d->actionManager->runOperation(d->operationID);
129 }
130}
131
133{
134 Q_EMIT sigEnableSlaves(isEnabled());
135}
@ NONE
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
A KisActionManager class keeps track of KisActions. These actions are always associated with the GUI....
~KisAction() override
void setActivationFlags(ActivationFlags flags)
KisActionManager * actionManager
void setActivationConditions(ActivationConditions conditions)
QStringList excludedNodeTypes
void setOperationID(const QString &id)
KisAction(QObject *parent=0)
void setActionManager(KisActionManager *actionManager)
ActivationFlags activationFlags()
Private *const d
Definition kis_action.h:117
void slotTriggered()
virtual void setActionEnabled(bool enabled)
void setExcludedNodeTypes(const QStringList &nodeTypes)
ActivationFlags flags
void setDefaultShortcut(const QKeySequence &shortcut)
ActivationConditions activationConditions()
void sigEnableSlaves(bool value)
QString operationID
ActivationConditions conditions
QKeySequence defaultShortcut() const
void slotChanged()