Top | ![]() |
![]() |
![]() |
![]() |
struct | GtkBindingSet |
struct | GtkBindingEntry |
struct | GtkBindingSignal |
struct | GtkBindingArg |
GtkBindingSet provides a mechanism for configuring GTK+ key bindings through CSS files. This eases key binding adjustments for application developers as well as users and provides GTK+ users or administrators with high key binding configurability which requires no application or toolkit side changes.
In order for bindings to work in a custom widget implementation, the
widget’s “can-focus” and “has-focus” properties
must both be true. For example, by calling gtk_widget_set_can_focus()
in the widget’s initialisation function; and by calling
gtk_widget_grab_focus()
when the widget is clicked.
void gtk_binding_entry_add_signall (GtkBindingSet *binding_set
,guint keyval
,GdkModifierType modifiers
,const gchar *signal_name
,GSList *binding_args
);
Override or install a new key binding for keyval
with modifiers
on
binding_set
.
binding_set |
a GtkBindingSet to add a signal to |
|
keyval |
key value |
|
modifiers |
key modifier |
|
signal_name |
signal name to be bound |
|
binding_args |
list of GtkBindingArg signal arguments. |
[transfer none][element-type GtkBindingArg] |
GtkBindingSet *
gtk_binding_set_new (const gchar *set_name
);
GTK+ maintains a global list of binding sets. Each binding set has a unique name which needs to be specified upon creation.
[skip]
GtkBindingSet *
gtk_binding_set_by_class (gpointer object_class
);
This function returns the binding set named after the type name of the passed in class structure. New binding sets are created on demand by this function.
[skip]
GtkBindingSet *
gtk_binding_set_find (const gchar *set_name
);
Find a binding set by its globally unique name.
The set_name
can either be a name used for gtk_binding_set_new()
or the type name of a class used in gtk_binding_set_by_class()
.
gboolean gtk_bindings_activate (GObject *object
,guint keyval
,GdkModifierType modifiers
);
Find a key binding matching keyval
and modifiers
and activate the
binding on object
.
gboolean gtk_bindings_activate_event (GObject *object
,GdkEventKey *event
);
Looks up key bindings for object
to find one matching
event
, and if one was found, activate it.
gboolean gtk_binding_set_activate (GtkBindingSet *binding_set
,guint keyval
,GdkModifierType modifiers
,GObject *object
);
Find a key binding matching keyval
and modifiers
within
binding_set
and activate the binding on object
.
binding_set |
a GtkBindingSet set to activate |
|
keyval |
key value of the binding |
|
modifiers |
key modifier of the binding |
|
object |
object to activate when binding found |
void gtk_binding_entry_add_signal (GtkBindingSet *binding_set
,guint keyval
,GdkModifierType modifiers
,const gchar *signal_name
,guint n_args
,...
);
Override or install a new key binding for keyval
with modifiers
on
binding_set
. When the binding is activated, signal_name
will be
emitted on the target widget, with n_args
Varargs
used as
arguments.
Each argument to the signal must be passed as a pair of varargs: the
GType of the argument, followed by the argument value (which must
be of the given type). There must be n_args
pairs in total.
1 2 3 4 5 6 7 8 9 10 |
GtkBindingSet *binding_set; GdkModifierType modmask = GDK_CONTROL_MASK; int count = 1; gtk_binding_entry_add_signal (binding_set, GDK_KEY_space, modmask, "move-cursor", 2, GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_PAGES, G_TYPE_INT, count, G_TYPE_BOOLEAN, FALSE); |
binding_set |
a GtkBindingSet to install an entry for |
|
keyval |
key value of binding to install |
|
modifiers |
key modifier of binding to install |
|
signal_name |
signal to execute upon activation |
|
n_args |
number of arguments to |
|
... |
arguments to |
GTokenType gtk_binding_entry_add_signal_from_string (GtkBindingSet *binding_set
,const gchar *signal_desc
);
Parses a signal description from signal_desc
and incorporates
it into binding_set
.
Signal descriptions may either bind a key combination to one or more signals:
1 2 3 4 |
bind "key" { "signalname" (param, ...) ... } |
Or they may also unbind a key combination:
1 |
unbind "key" |
Key combinations must be in a format that can be parsed by
gtk_accelerator_parse()
.
void gtk_binding_entry_skip (GtkBindingSet *binding_set
,guint keyval
,GdkModifierType modifiers
);
Install a binding on binding_set
which causes key lookups
to be aborted, to prevent bindings from lower priority sets
to be activated.
binding_set |
a GtkBindingSet to skip an entry of |
|
keyval |
key value of binding to skip |
|
modifiers |
key modifier of binding to skip |
void gtk_binding_entry_remove (GtkBindingSet *binding_set
,guint keyval
,GdkModifierType modifiers
);
Remove a binding previously installed via
gtk_binding_entry_add_signal()
on binding_set
.
binding_set |
a GtkBindingSet to remove an entry of |
|
keyval |
key value of binding to remove |
|
modifiers |
key modifier of binding to remove |
struct GtkBindingSet { gchar *set_name; gint priority; GSList *widget_path_pspecs; GSList *widget_class_pspecs; GSList *class_branch_pspecs; GtkBindingEntry *entries; GtkBindingEntry *current; guint parsed : 1; };
A binding set maintains a list of activatable key bindings. A single binding set can match multiple types of widgets. Similar to style contexts, can be matched by any information contained in a widgets GtkWidgetPath. When a binding within a set is matched upon activation, an action signal is emitted on the target widget to carry out the actual activation.
gchar * |
unique name of this binding set |
|
gint |
unused |
|
GSList * |
unused |
|
GSList * |
unused |
|
GSList * |
unused |
|
GtkBindingEntry * |
the key binding entries in this binding set |
|
GtkBindingEntry * |
implementation detail |
|
guint |
whether this binding set stems from a CSS file and is reset upon theme changes |
struct GtkBindingEntry { /* key portion */ guint keyval; GdkModifierType modifiers; GtkBindingSet *binding_set; guint destroyed : 1; guint in_emission : 1; guint marks_unbound : 1; GtkBindingEntry *set_next; GtkBindingEntry *hash_next; GtkBindingSignal *signals; };
Each key binding element of a binding sets binding list is represented by a GtkBindingEntry.
guint |
key value to match |
|
GdkModifierType |
key modifiers to match |
|
GtkBindingSet * |
binding set this entry belongs to |
|
guint |
implementation detail |
|
guint |
implementation detail |
|
guint |
implementation detail |
|
GtkBindingEntry * |
linked list of entries maintained by binding set |
|
GtkBindingEntry * |
implementation detail |
|
GtkBindingSignal * |
action signals of this entry |
struct GtkBindingSignal { GtkBindingSignal *next; gchar *signal_name; guint n_args; GtkBindingArg *args; };
A GtkBindingSignal stores the necessary information to activate a widget in response to a key press via a signal emission.
GtkBindingSignal * |
implementation detail |
|
gchar * |
the action signal to be emitted |
|
guint |
number of arguments specified for the signal |
|
GtkBindingArg * |
the arguments specified for the signal. |
[array length=n_args] |
struct GtkBindingArg { GType arg_type; union { glong long_data; gdouble double_data; gchar *string_data; } d; };
A GtkBindingArg holds the data associated with an argument for a key binding signal emission as stored in GtkBindingSignal.