Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
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
.
- newtype PadController = PadController (ManagedPtr PadController)
- class GObject o => IsPadController o
- toPadController :: IsPadController o => o -> IO PadController
- noPadController :: Maybe PadController
- padControllerNew :: (HasCallStack, MonadIO m, IsWindow a, IsActionGroup b, IsDevice c) => a -> b -> Maybe c -> m PadController
- data PadControllerSetActionMethodInfo
- padControllerSetAction :: (HasCallStack, MonadIO m, IsPadController a) => a -> PadActionType -> Int32 -> Int32 -> Text -> Text -> m ()
- data PadControllerSetActionEntriesMethodInfo
- padControllerSetActionEntries :: (HasCallStack, MonadIO m, IsPadController a) => a -> [PadActionEntry] -> m ()
- data PadControllerActionGroupPropertyInfo
- constructPadControllerActionGroup :: (IsPadController o, IsActionGroup a) => a -> IO (GValueConstruct o)
- getPadControllerActionGroup :: (MonadIO m, IsPadController o) => o -> m (Maybe ActionGroup)
- padControllerActionGroup :: AttrLabelProxy "actionGroup"
- data PadControllerPadPropertyInfo
- constructPadControllerPad :: (IsPadController o, IsDevice a) => a -> IO (GValueConstruct o)
- getPadControllerPad :: (MonadIO m, IsPadController o) => o -> m (Maybe Device)
- padControllerPad :: AttrLabelProxy "pad"
Exported types
newtype PadController Source #
GObject PadController Source # | |
IsObject PadController Source # | |
IsEventController PadController Source # | |
IsPadController PadController Source # | |
((~) * info (ResolvePadControllerMethod t PadController), MethodInfo * info PadController p) => IsLabel t (PadController -> p) Source # | |
((~) * info (ResolvePadControllerMethod t PadController), MethodInfo * info PadController p) => IsLabelProxy t (PadController -> p) Source # | |
HasAttributeList * PadController Source # | |
type AttributeList PadController Source # | |
type SignalList PadController Source # | |
class GObject o => IsPadController o Source #
toPadController :: IsPadController o => o -> IO PadController Source #
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
data PadControllerSetActionMethodInfo Source #
((~) * signature (PadActionType -> Int32 -> Int32 -> Text -> Text -> m ()), MonadIO m, IsPadController a) => MethodInfo * PadControllerSetActionMethodInfo a signature Source # | |
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
data PadControllerSetActionEntriesMethodInfo Source #
((~) * signature ([PadActionEntry] -> m ()), MonadIO m, IsPadController a) => MethodInfo * PadControllerSetActionEntriesMethodInfo a signature Source # | |
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
data PadControllerActionGroupPropertyInfo Source #
constructPadControllerActionGroup :: (IsPadController o, IsActionGroup a) => a -> IO (GValueConstruct o) Source #
getPadControllerActionGroup :: (MonadIO m, IsPadController o) => o -> m (Maybe ActionGroup) Source #
padControllerActionGroup :: AttrLabelProxy "actionGroup" Source #
pad
data PadControllerPadPropertyInfo Source #
constructPadControllerPad :: (IsPadController o, IsDevice a) => a -> IO (GValueConstruct o) Source #
getPadControllerPad :: (MonadIO m, IsPadController o) => o -> m (Maybe Device) Source #
padControllerPad :: AttrLabelProxy "pad" Source #