Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_change_frame_action.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <klocalizedstring.h>
10#include "kis_action.h"
11#include "kis_input_manager.h"
12#include "kis_canvas2.h"
13#include "KisViewManager.h"
14#include "kis_action_manager.h"
15#include "kis_node.h"
16#include "kis_image.h"
18
22
24 : KisAbstractInputAction("Switch Time"),
25 m_d(new Private)
26{
27 setName(i18n("Switch Time"));
28 setDescription(i18n("The <i>Switch Time</i> action changes the current time of the animation."));
29
30 QHash< QString, int > shortcuts;
31 shortcuts.insert(i18n("Next Frame"), NextFrameShortcut);
32 shortcuts.insert(i18n("Previous Frame"), PreviousFrameShortcut);
33 setShortcutIndexes(shortcuts);
34}
35
39
41{
43 if (!im) return false;
44
45 KisCanvas2 *canvas = im->canvas();
46 if (!canvas) return false;
47
48 KisImageWSP image = canvas->image();
49 if (!bool(image)) return false;
50
51 // Only works when this image has animation
52 if (!image->animationInterface()->hasAnimation()) {
53 return false;
54 }
55
56 // Prevents when in Edit Selection
57 KisNodeSP activeNode = canvas->viewManager()->activeNode();
58 if (activeNode && activeNode->inherits("KisSelectionMask")) {
59 return false;
60 }
61
62 // Prevents when a shape is selected
64 return false;
65 }
66
67 return true;
68}
69
70void KisChangeFrameAction::begin(int shortcut, QEvent *event)
71{
72 KisAbstractInputAction::begin(shortcut, event);
73
74 switch(shortcut) {
75 case NextFrameShortcut: {
76 KisAction *action = inputManager()->canvas()->viewManager()->actionManager()->actionByName("next_frame");
77 if (action) {
78 action->trigger();
79 }
80 break;
81 }
83 KisAction *action = inputManager()->canvas()->viewManager()->actionManager()->actionByName("previous_frame");
84 if (action) {
85 action->trigger();
86 }
87 break;
88 }
89 }
90}
Abstract base class for input actions.
static KisInputManager * inputManager
void setShortcutIndexes(const QHash< QString, int > &indexes)
void setName(const QString &name)
void setDescription(const QString &description)
virtual void begin(int shortcut, QEvent *event)
KisAction * actionByName(const QString &name) const
KisImageWSP image() const
KisViewManager * viewManager() const
KisToolProxy toolProxy
void begin(int shortcut, QEvent *event) override
bool isAvailable() const override
KisImageAnimationInterface * animationInterface() const
Central object to manage canvas input.
KisCanvas2 * canvas() const
KisActionManager * actionManager() const
KisNodeSP activeNode()
bool hasSelection() const
returns true if the current tool holds a selection
KisCanvas2 * canvas