Krita Source Code Documentation
Loading...
Searching...
No Matches
KisChangePrimarySettingAction Class Reference

Change Primary Setting implementation of KisAbstractInputAction. More...

#include <kis_change_primary_setting_action.h>

+ Inheritance diagram for KisChangePrimarySettingAction:

Public Types

enum  Shortcut { PrimaryAlternateChangeSizeShortcut , SecondaryAlternateChangeSizeShortcut }
 

Public Member Functions

void activate (int shortcut) override
 
void begin (int shortcut, QEvent *event) override
 
void deactivate (int shortcut) override
 
void end (QEvent *event) override
 
void inputEvent (QEvent *event) override
 
 KisChangePrimarySettingAction ()
 
int priority () const override
 
bool supportsHiResInputEvents (int shortcut) const override
 
 ~KisChangePrimarySettingAction () override
 
- Public Member Functions inherited from KisAbstractInputAction
virtual bool canIgnoreModifiers () const
 
virtual QString description () const
 
virtual QString id () const
 
virtual KisInputActionGroup inputActionGroup (int shortcut) const
 
virtual bool isAvailable () const
 
virtual bool isShortcutRequired (int shortcut) const
 
 KisAbstractInputAction (const QString &id)
 
virtual QString name () const
 
virtual QHash< QString, int > shortcutIndexes () const
 
virtual ~KisAbstractInputAction ()
 

Private Member Functions

KisTool::ToolAction decodeAction (int shortcut) const
 

Private Attributes

KisTool::ToolAction savedAction {KisTool::Alternate_NONE}
 

Additional Inherited Members

- Public Attributes inherited from KisAbstractInputAction
QString description
 
QString id
 
QHash< QString, int > indexes
 
QPointF lastCursorPosition
 
QString name
 
QPointF startCursorPosition
 
- Static Public Attributes inherited from KisAbstractInputAction
static KisInputManagerinputManager
 
- Protected Member Functions inherited from KisAbstractInputAction
virtual void cursorMoved (const QPointF &lastPos, const QPointF &pos)
 
virtual void cursorMovedAbsolute (const QPointF &startPos, const QPointF &pos)
 
QPoint eventPos (const QEvent *event)
 
QPointF eventPosF (const QEvent *event)
 
KisInputManagerinputManager () const
 
void setDescription (const QString &description)
 
void setName (const QString &name)
 
void setShortcutIndexes (const QHash< QString, int > &indexes)
 

Detailed Description

Change Primary Setting implementation of KisAbstractInputAction.

The Change Primary Setting action changes a tool's "Primary Setting", for example the brush size for the brush tool.

Definition at line 19 of file kis_change_primary_setting_action.h.

Member Enumeration Documentation

◆ Shortcut

Enumerator
PrimaryAlternateChangeSizeShortcut 

Default Mapping: Shift+Left Mouse.

SecondaryAlternateChangeSizeShortcut 

Secondary Mode (snap to closest pixel value): Shift+Z+Left Mouse.

Definition at line 25 of file kis_change_primary_setting_action.h.

25 {
28 };
@ PrimaryAlternateChangeSizeShortcut
Default Mapping: Shift+Left Mouse.
@ SecondaryAlternateChangeSizeShortcut
Secondary Mode (snap to closest pixel value): Shift+Z+Left Mouse.

Constructor & Destructor Documentation

◆ KisChangePrimarySettingAction()

KisChangePrimarySettingAction::KisChangePrimarySettingAction ( )
explicit

Definition at line 22 of file kis_change_primary_setting_action.cpp.

23 : KisAbstractInputAction("Change Primary Setting")
24{
25 setName(i18n("Change Primary Setting"));
26 setDescription(i18n("The <i>Change Primary Setting</i> action changes a tool's \"Primary Setting\", for example the brush size for the brush tool."));
27 QHash<QString, int> shortcuts;
28 shortcuts.insert(i18n("Normal"), PrimaryAlternateChangeSizeShortcut);
29 shortcuts.insert(i18n("Snap"), SecondaryAlternateChangeSizeShortcut);
30 setShortcutIndexes(shortcuts);
31}
KisAbstractInputAction(const QString &id)
void setShortcutIndexes(const QHash< QString, int > &indexes)
void setName(const QString &name)
void setDescription(const QString &description)

References PrimaryAlternateChangeSizeShortcut, SecondaryAlternateChangeSizeShortcut, KisAbstractInputAction::setDescription(), KisAbstractInputAction::setName(), and KisAbstractInputAction::setShortcutIndexes().

◆ ~KisChangePrimarySettingAction()

KisChangePrimarySettingAction::~KisChangePrimarySettingAction ( )
override

Definition at line 47 of file kis_change_primary_setting_action.cpp.

48{
49
50}

Member Function Documentation

◆ activate()

void KisChangePrimarySettingAction::activate ( int shortcut)
overridevirtual

The method is called when the action is yet to be started, that is, e.g. the user has pressed all the modifiers for the action but hasn't started painting yet. This method is a right place to show the user what is going to happen, e.g. change the cursor.

Reimplemented from KisAbstractInputAction.

Definition at line 52 of file kis_change_primary_setting_action.cpp.

53{
54 inputManager()->toolProxy()->activateToolAction(decodeAction(shortcut));
55}
static KisInputManager * inputManager
KisTool::ToolAction decodeAction(int shortcut) const
QPointer< KisToolProxy > toolProxy() const

References decodeAction(), KisAbstractInputAction::inputManager, and KisInputManager::toolProxy().

◆ begin()

void KisChangePrimarySettingAction::begin ( int shortcut,
QEvent * event )
overridevirtual

Begin the action.

Parameters
shortcutThe index of the behaviour to trigger.
eventThe mouse event that has triggered this action. Is null for keyboard-activated actions.

Reimplemented from KisAbstractInputAction.

Definition at line 67 of file kis_change_primary_setting_action.cpp.

68{
69 KisAbstractInputAction::begin(shortcut, event);
70 savedAction = decodeAction(shortcut);
71
72 if (event) {
73 QMouseEvent targetEvent(QEvent::MouseButtonPress, eventPosF(event), Qt::LeftButton, Qt::LeftButton, Qt::ShiftModifier);
74 inputManager()->toolProxy()->forwardEvent(KisToolProxy::BEGIN, savedAction, &targetEvent, event);
75 }
76}
QPointF eventPosF(const QEvent *event)
virtual void begin(int shortcut, QEvent *event)

References KisToolProxy::BEGIN, KisAbstractInputAction::begin(), decodeAction(), KisAbstractInputAction::eventPosF(), KisAbstractInputAction::inputManager, savedAction, and KisInputManager::toolProxy().

◆ deactivate()

void KisChangePrimarySettingAction::deactivate ( int shortcut)
overridevirtual

The method is called when the action is not a candidate for the starting anymore. The action should revert everything that was done in activate() method.

See also
activate()

Reimplemented from KisAbstractInputAction.

Definition at line 57 of file kis_change_primary_setting_action.cpp.

58{
59 inputManager()->toolProxy()->deactivateToolAction(decodeAction(shortcut));
60}

References decodeAction(), KisAbstractInputAction::inputManager, and KisInputManager::toolProxy().

◆ decodeAction()

KisTool::ToolAction KisChangePrimarySettingAction::decodeAction ( int shortcut) const
private

Definition at line 33 of file kis_change_primary_setting_action.cpp.

34{
36 switch (shortcut) {
37 case 0:
39 break;
40 case 1:
42 break;
43 }
44 return action;
45}
@ AlternateChangeSize
Definition kis_tool.h:119
@ Alternate_NONE
Definition kis_tool.h:129
@ AlternateChangeSizeSnap
Definition kis_tool.h:120

References KisTool::Alternate_NONE, KisTool::AlternateChangeSize, and KisTool::AlternateChangeSizeSnap.

◆ end()

void KisChangePrimarySettingAction::end ( QEvent * event)
overridevirtual

End the action.

Parameters
eventThe mouse event that has finished this action. Is null for keyboard-activated actions.

Reimplemented from KisAbstractInputAction.

Definition at line 78 of file kis_change_primary_setting_action.cpp.

79{
80 if (event) {
81 QMouseEvent targetEvent(QEvent::MouseButtonRelease, eventPosF(event), Qt::LeftButton, Qt::LeftButton, Qt::ShiftModifier);
82 inputManager()->toolProxy()->forwardEvent(KisToolProxy::END, savedAction, &targetEvent, event);
83 }
84
86}
virtual void end(QEvent *event)

References KisToolProxy::END, KisAbstractInputAction::end(), KisAbstractInputAction::eventPosF(), KisAbstractInputAction::inputManager, savedAction, and KisInputManager::toolProxy().

◆ inputEvent()

void KisChangePrimarySettingAction::inputEvent ( QEvent * event)
overridevirtual

Process an input event.

By default handles MouseMove events and passes the data to a convenience cursorMoved() method

Parameters
eventAn event to process.

Reimplemented from KisAbstractInputAction.

Definition at line 88 of file kis_change_primary_setting_action.cpp.

89{
90 if (event
91 && (event->type() == QEvent::MouseMove || event->type() == QEvent::TabletMove
92 || event->type() == QTouchEvent::TouchUpdate)) {
93 QMouseEvent targetEvent(QEvent::MouseMove, eventPosF(event), Qt::NoButton, Qt::LeftButton, Qt::ShiftModifier);
94 inputManager()->toolProxy()->forwardEvent(KisToolProxy::CONTINUE, savedAction, &targetEvent, event);
95 }
96}

References KisToolProxy::CONTINUE, KisAbstractInputAction::eventPosF(), KisAbstractInputAction::inputManager, savedAction, and KisInputManager::toolProxy().

◆ priority()

int KisChangePrimarySettingAction::priority ( ) const
overridevirtual

The priority for this action.

Priority determines how "important" the action is and is used to resolve conflicts when multiple actions can be activated.

Reimplemented from KisAbstractInputAction.

Definition at line 62 of file kis_change_primary_setting_action.cpp.

63{
64 return 8;
65}

◆ supportsHiResInputEvents()

bool KisChangePrimarySettingAction::supportsHiResInputEvents ( int shortcut) const
overridevirtual

Returns true if the action can handle HiRes flow of move events which is generated by the tablet. If the function returns false, some of the events will be dropped or postponed. For most of the actions in Krita (except of real painting) it is perfectly acceptable, so 'false' is the default value.

Reimplemented from KisAbstractInputAction.

Definition at line 98 of file kis_change_primary_setting_action.cpp.

99{
100 return inputManager()->toolProxy()->alternateActionSupportsHiResEvents(
102}
static AlternateAction actionToAlternateAction(ToolAction action)
Definition kis_tool.cc:416

References KisTool::actionToAlternateAction(), decodeAction(), KisAbstractInputAction::inputManager, and KisInputManager::toolProxy().

Member Data Documentation

◆ savedAction

KisTool::ToolAction KisChangePrimarySettingAction::savedAction {KisTool::Alternate_NONE}
private

The documentation for this class was generated from the following files: