Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
GtkPadController
is an event controller for the pads found in drawing
tablets.
Pads are 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. GtkPadController
is provided to map those to
Action
objects, thus letting the application give them 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 a [structgtk
.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 GtkPadController
usage: Assigning button 1 in all
modes and pad devices to an "invert-selection" action:
c code
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 (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 GVariantType
.
Synopsis
- newtype PadController = PadController (ManagedPtr PadController)
- class (GObject o, IsDescendantOf PadController o) => IsPadController o
- toPadController :: (MonadIO m, IsPadController o) => o -> m PadController
- padControllerNew :: (HasCallStack, MonadIO m, IsActionGroup a, IsDevice b) => a -> Maybe b -> 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, MonadIO m, IsActionGroup a) => a -> m (GValueConstruct o)
- getPadControllerActionGroup :: (MonadIO m, IsPadController o) => o -> m (Maybe ActionGroup)
- constructPadControllerPad :: (IsPadController o, MonadIO m, IsDevice a) => a -> m (GValueConstruct o)
- getPadControllerPad :: (MonadIO m, IsPadController o) => o -> m (Maybe Device)
Exported types
newtype PadController Source #
Memory-managed wrapper type.
PadController (ManagedPtr PadController) |
Instances
Eq PadController Source # | |
Defined in GI.Gtk.Objects.PadController (==) :: PadController -> PadController -> Bool # (/=) :: PadController -> PadController -> Bool # | |
GObject PadController Source # | |
Defined in GI.Gtk.Objects.PadController | |
ManagedPtrNewtype PadController Source # | |
Defined in GI.Gtk.Objects.PadController toManagedPtr :: PadController -> ManagedPtr PadController | |
TypedObject PadController Source # | |
Defined in GI.Gtk.Objects.PadController | |
HasParentTypes PadController Source # | |
Defined in GI.Gtk.Objects.PadController | |
IsGValue (Maybe PadController) Source # | Convert |
Defined in GI.Gtk.Objects.PadController gvalueGType_ :: IO GType gvalueSet_ :: Ptr GValue -> Maybe PadController -> IO () gvalueGet_ :: Ptr GValue -> IO (Maybe 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
.
Methods
Click to display all available methods, including inherited ones
Methods
bindProperty, bindPropertyFull, forceFloating, freezeNotify, getv, isFloating, notify, notifyByPspec, ref, refSink, reset, runDispose, stealData, stealQdata, thawNotify, unref, watchClosure.
Getters
getCurrentEvent, getCurrentEventDevice, getCurrentEventState, getCurrentEventTime, getData, getName, getPropagationLimit, getPropagationPhase, getProperty, getQdata, getWidget.
Setters
setAction, setActionEntries, setData, setDataFull, setName, setPropagationLimit, setPropagationPhase, setProperty, setStaticName.
new
:: (HasCallStack, MonadIO m, IsActionGroup a, IsDevice b) | |
=> a |
|
-> Maybe b |
|
-> m PadController | Returns: A newly created |
Creates a new GtkPadController
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 GtkPadController
objects with
Nothing
and non-Nothing
pad
argument on the same toplevel window, as execution
order is not guaranteed.
The GtkPadController
is created with no mapped actions. In order to
map pad events to actions, use padControllerSetActionEntries
or padControllerSetAction
.
Be aware that pad events will only be delivered to GtkWindow
s, so adding
a pad controller to any other type of widget will not have an effect.
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.
setActionEntries
padControllerSetActionEntries Source #
:: (HasCallStack, MonadIO m, IsPadController a) | |
=> a |
|
-> [PadActionEntry] |
|
-> m () |
A convenience function to add a group of action entries on
controller
.
See [structgtk
.PadActionEntry] and padControllerSetAction
.
Properties
actionGroup
No description available in the introspection data.
constructPadControllerActionGroup :: (IsPadController o, MonadIO m, IsActionGroup a) => a -> m (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, MonadIO m, IsDevice a) => a -> m (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