Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_temporary_straight_ruler_action.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 Ayanami Kaine <personal@ayanamikaine.com>
3 * SPDX-License-Identifier: GPL-2.0-or-later
4 */
5
7
8#include <optional>
9
10#include <QHash>
11
12#include <klocalizedstring.h>
13
14#include <kis_canvas2.h>
17
18#include "kis_input_manager.h"
20
53
55 : KisAbstractInputAction("Temporary Straight Ruler")
56 , d(new Private)
57{
58 setName(i18n("Temporary Straight Ruler"));
59 setDescription(i18n("The <i>Temporary Straight Ruler</i> action creates a transient ruler for constrained painting."));
60
61 QHash<QString, int> shortcuts;
62 shortcuts.insert(i18n("Normal"), NormalShortcut);
63 shortcuts.insert(i18n("Snapped Angle"), SnapToAngleShortcut);
64 setShortcutIndexes(shortcuts);
65}
66
71
73{
74 return 100;
75}
76
78{
80 if (decoration) {
82 decoration->temporaryConstraint().value_or(KisTemporaryPaintConstraint());
83 constraint.setInteractionMode(Private::interactionMode(shortcut));
84 decoration->setTemporaryConstraint(constraint);
85 }
86}
87
89{
90 Q_UNUSED(shortcut);
91
93 if (decoration) {
94 decoration->setTemporaryConstraint(std::nullopt);
95 }
96}
97
98bool KisTemporaryStraightRulerAction::trySwitchShortcut(int oldShortcut, int newShortcut)
99{
100 Q_UNUSED(oldShortcut);
101
103 if (!decoration) {
104 return false;
105 }
106
107 std::optional<KisTemporaryPaintConstraint> constraint = decoration->temporaryConstraint();
108 if (!constraint) {
109 return false;
110 }
111
112 constraint->setInteractionMode(Private::interactionMode(newShortcut));
113 decoration->setTemporaryConstraint(constraint);
114 return true;
115}
116
117void KisTemporaryStraightRulerAction::begin(int shortcut, QEvent *event)
118{
119 Q_UNUSED(shortcut);
120
122 action->begin(KisToolInvocationAction::ActivateShortcut, event);
123 }
124}
125
127{
129 action->inputEvent(event);
130 }
131}
132
134{
136 action->end(event);
137 }
138}
139
141{
142 Q_UNUSED(shortcut);
143
146}
147
149{
150 return true;
151}
152
154{
155 Q_UNUSED(shortcut);
157}
KisInputActionGroup
@ ToolInvoactionActionGroup
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)
KisPaintingAssistantsDecorationSP paintingAssistantsDecoration() const
Central object to manage canvas input.
KisCanvas2 * canvas() const
KisToolInvocationAction * defaultInputAction() const
std::optional< KisTemporaryPaintConstraint > temporaryConstraint() const
void setTemporaryConstraint(std::optional< KisTemporaryPaintConstraint > constraint)
void setInteractionMode(InteractionMode mode)
KisCanvas2 * canvas(KisInputManager *inputManager) const
static KisTemporaryPaintConstraint::InteractionMode interactionMode(int shortcut)
KisToolInvocationAction * defaultInputAction(KisInputManager *inputManager) const
KisPaintingAssistantsDecorationSP decoration(KisInputManager *inputManager) const
bool supportsHiResInputEvents(int shortcut) const override
void begin(int shortcut, QEvent *event) override
KisInputActionGroup inputActionGroup(int shortcut) const override
bool trySwitchShortcut(int oldShortcut, int newShortcut) override
Tool Invocation action of KisAbstractInputAction.
bool supportsHiResInputEvents(int shortcut) const override
KisSharedPtr< KisPaintingAssistantsDecoration > KisPaintingAssistantsDecorationSP
KisCanvas2 * canvas