Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (inaki@blueleaf.cc) |
Safe Haskell | None |
Language | Haskell2010 |
PadController
is an event controller for the pads found in drawing
tablets (The collection of buttons and tactile sensors often found around
the stylus-sensitive area).
These buttons and sensors have no implicit meaning, and by default they
perform no action, this event controller is provided to map those to
Action
objects, thus letting the application give those a more semantic
meaning.
Buttons and sensors are not constrained to triggering a single action, some
InputSourceTabletPad
devices feature multiple "modes", all these input
elements have one current mode, which may determine the final action
being triggered. Pad devices often divide buttons and sensors into groups,
all elements in a group share the same current mode, but different groups
may have different modes. See devicePadGetNGroups
and
devicePadGetGroupNModes
.
Each of the actions that a given button/strip/ring performs for a given
mode is defined by PadActionEntry
, it contains an action name that
will be looked up in the given ActionGroup
and activated whenever the
specified input element and mode are triggered.
A simple example of PadController
usage, assigning button 1 in all
modes and pad devices to an "invert-selection" action:
>
> GtkPadActionEntry *pad_actions[] = {
> { GTK_PAD_ACTION_BUTTON, 1, -1, "Invert selection", "pad-actions.invert-selection" },
> …
> };
>
> …
> action_group = g_simple_action_group_new ();
> action = g_simple_action_new ("pad-actions.invert-selection", NULL);
> g_signal_connect (action, "activate", on_invert_selection_activated, NULL);
> g_action_map_add_action (G_ACTION_MAP (action_group), action);
> …
> pad_controller = gtk_pad_controller_new (window, action_group, NULL);
The actions belonging to rings/strips will be activated with a parameter
of type G_VARIANT_TYPE_DOUBLE
bearing the value of the given axis, it
is required that those are made stateful and accepting this VariantType
.
Synopsis
- newtype PadController = PadController (ManagedPtr PadController)
- class (GObject o, IsDescendantOf PadController o) => IsPadController o
- toPadController :: (MonadIO m, IsPadController o) => o -> m PadController
- noPadController :: Maybe PadController
- padControllerNew :: (HasCallStack, MonadIO m, IsWindow a, IsActionGroup b, IsDevice c) => a -> b -> Maybe c -> m PadController
- padControllerSetAction :: (HasCallStack, MonadIO m, IsPadController a) => a -> PadActionType -> Int32 -> Int32 -> Text -> Text -> m ()
- padControllerSetActionEntries :: (HasCallStack, MonadIO m, IsPadController a) => a -> [PadActionEntry] -> m ()
- constructPadControllerActionGroup :: (IsPadController o, IsActionGroup a) => a -> IO (GValueConstruct o)
- getPadControllerActionGroup :: (MonadIO m, IsPadController o) => o -> m (Maybe ActionGroup)
- constructPadControllerPad :: (IsPadController o, IsDevice a) => a -> IO (GValueConstruct o)
- getPadControllerPad :: (MonadIO m, IsPadController o) => o -> m (Maybe Device)
Exported types
newtype PadController Source #
Memory-managed wrapper type.
Instances
GObject PadController Source # | |
Defined in GI.Gtk.Objects.PadController gobjectType :: IO GType # | |
HasParentTypes PadController Source # | |
Defined in GI.Gtk.Objects.PadController | |
type ParentTypes PadController Source # | |
Defined in GI.Gtk.Objects.PadController |
class (GObject o, IsDescendantOf PadController o) => IsPadController o Source #
Type class for types which can be safely cast to PadController
, for instance with toPadController
.
Instances
(GObject o, IsDescendantOf PadController o) => IsPadController o Source # | |
Defined in GI.Gtk.Objects.PadController |
toPadController :: (MonadIO m, IsPadController o) => o -> m PadController Source #
Cast to PadController
, for types for which this is known to be safe. For general casts, use castTo
.
noPadController :: Maybe PadController Source #
A convenience alias for Nothing
:: Maybe
PadController
.
Methods
new
:: (HasCallStack, MonadIO m, IsWindow a, IsActionGroup b, IsDevice c) | |
=> a |
|
-> b |
|
-> Maybe c |
|
-> m PadController | Returns: A newly created |
Creates a new PadController
that will associate events from pad
to
actions. A Nothing
pad may be provided so the controller manages all pad devices
generically, it is discouraged to mix PadController
objects with Nothing
and non-Nothing
pad
argument on the same window
, as execution order is not
guaranteed.
The PadController
is created with no mapped actions. In order to map pad
events to actions, use padControllerSetActionEntries
or
padControllerSetAction
.
Since: 3.22
setAction
padControllerSetAction Source #
:: (HasCallStack, MonadIO m, IsPadController a) | |
=> a |
|
-> PadActionType |
|
-> Int32 |
|
-> Int32 |
|
-> Text |
|
-> Text |
|
-> m () |
Adds an individual action to controller
. This action will only be activated
if the given button/ring/strip number in index
is interacted while
the current mode is mode
. -1 may be used for simple cases, so the action
is triggered on all modes.
The given label
should be considered user-visible, so internationalization
rules apply. Some windowing systems may be able to use those for user
feedback.
Since: 3.22
setActionEntries
padControllerSetActionEntries Source #
:: (HasCallStack, MonadIO m, IsPadController a) | |
=> a |
|
-> [PadActionEntry] |
|
-> m () |
This is a convenience function to add a group of action entries on
controller
. See PadActionEntry
and padControllerSetAction
.
Since: 3.22
Properties
actionGroup
No description available in the introspection data.
constructPadControllerActionGroup :: (IsPadController o, IsActionGroup a) => a -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “action-group
” property. This is rarely needed directly, but it is used by new
.
getPadControllerActionGroup :: (MonadIO m, IsPadController o) => o -> m (Maybe ActionGroup) Source #
Get the value of the “action-group
” property.
When overloading is enabled, this is equivalent to
get
padController #actionGroup
pad
No description available in the introspection data.
constructPadControllerPad :: (IsPadController o, IsDevice a) => a -> IO (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “pad
” property. This is rarely needed directly, but it is used by new
.
getPadControllerPad :: (MonadIO m, IsPadController o) => o -> m (Maybe Device) Source #
Get the value of the “pad
” property.
When overloading is enabled, this is equivalent to
get
padController #pad