Gtk2::BindingSet − wrapper for GtkBindingSet


A "Gtk2::BindingSet" is basically a mapping from keyval+modifiers to a named action signal to invoke and with argument values for the signal. Bindings are normally run by the "Gtk2::Widget" default "key−press−event" handler, but can also be activated explicitly.

Binding sets can be populated from program code with "entry_add_signal", or created from an RC file or string (see Gtk2::Rc). If you use the RC note it doesn’t parse and create anything until there’s someone interested in the result, such as "Gtk2::Settings" for widgets.

This means binding sets in RC files or strings don’t exist for "Gtk2::BindingSet−>find" to retrieve until at least one widget has been created (or similar).

Currently there’s no Perl-level access to the contents of a BindingSet, except for "set_name".




GtkBindingSet = Gtk2::BindingSet−>new ($set_name)

$set_name (string)

boolean = $binding_set−>activate ($keyval, $modifiers, $object)

$keyval (integer)

$modifiers (Gtk2::Gdk::ModifierType)

$object (Gtk2::Object)

$binding_set−>add_path ($path_type, $path_pattern, $priority)

$path_type (Gtk2::PathType)

$path_pattern (string)

$priority (integer)

The following constants are defined for standard priority levels,


LOWEST, which is 0, and HIGHEST, which is 15, are the limits of the allowed priorities. The standard values are from the "Gtk2::PathPriorityType" enum, but the parameter here is an integer, not an enum string, so you can give a value for instance a little above or below the pre-defined levels.

bindingset or undef = Gtk2::BindingSet−>by_class ($name)

$name (string)

$binding_set−>entry_add_signal ($keyval, $modifiers, $signal_name)
$binding_set−>entry_add_signal ($keyval, $modifiers, $signal_name, $type,$value, ...)

$keyval (integer)

$modifiers (Gtk2::Gdk::ModifierType)

$signal_name (string)

$value (scalar)

$type (string)

Add an entry to $binding_set. $keyval and $modifier are setup as a binding for $signal_name and with signal parameters given by $value arguments. Each value is preceded by a type (a string), which must be one of

an enum type, ie. subtype of Glib::Enum
Glib::Flags, or a flags subtype

For example,

[ 'control−mask' ], # modifiers
'Glib::Double', 1.5,
'Glib::String, 'hello');

A parameter holds one of the three types Long, Double or String. When invoked they’re coerced to the parameter types expected by the target object or widget. Use Glib::Long for any integer argument, including chars and unichars by ordinal value. Use Glib::Double for both single and double precision floats.

Flags and enums are held as Longs in the BindingSet. You can pass an enum type and string and "entry_with_signal" will lookup and store accordingly. For example

(Gtk2−>keyval_from_name('Escape), [],
'Gtk2::Orientation', 'vertical');

Likewise flags from an arrayref,

(Gtk2−>keyval_from_name('d'), [],
'Gtk2::Gdk::DragAction', ['move,'ask']);

If you’ve got a Glib::Flags object, rather than just an arrayref, then you can just give Glib::Flags as the type and the value is taken from the object. For example,

my $flags = Gtk2::DebugFlag−>new (['tree', 'updates']);
(Gtk2−>keyval_from_name('x'), ['control−mask'],
'Glib::Flags', $flags);

$binding_set−>entry_remove ($keyval, $modifiers)

$keyval (integer)

$modifiers (Gtk2::Gdk::ModifierType)

$binding_set−>entry_skip ($keyval, $modifiers)

$keyval (integer)

$modifiers (Gtk2::Gdk::ModifierType)

Since: gtk+ 2.12

bindingset or undef = Gtk2::BindingSet−>find ($name)

$name (string)

string = $binding_set−>set_name
Return the name of $binding_set.


flags Gtk2::Gdk::ModifierType

’shift−mask’ / ’ GDK_SHIFT_MASK

’lock−mask’ / ’ GDK_LOCK_MASK

’control−mask’ / ’ GDK_CONTROL_MASK

’mod1−mask’ / ’ GDK_MOD1_MASK

’mod2−mask’ / ’ GDK_MOD2_MASK

’mod3−mask’ / ’ GDK_MOD3_MASK

’mod4−mask’ / ’ GDK_MOD4_MASK

’mod5−mask’ / ’ GDK_MOD5_MASK

’button1−mask’ / ’ GDK_BUTTON1_MASK

’button2−mask’ / ’ GDK_BUTTON2_MASK

’button3−mask’ / ’ GDK_BUTTON3_MASK

’button4−mask’ / ’ GDK_BUTTON4_MASK

’button5−mask’ / ’ GDK_BUTTON5_MASK

’super−mask’ / ’ GDK_SUPER_MASK

’hyper−mask’ / ’ GDK_HYPER_MASK

’meta−mask’ / ’ GDK_META_MASK

’release−mask’ / ’ GDK_RELEASE_MASK

’modifier−mask’ / ’ GDK_MODIFIER_MASK

enum Gtk2::PathType

’widget’ / ’ GTK_PATH_WIDGET

’widget−class’ / ’ GTK_PATH_WIDGET_CLASS

’class’ / ’ GTK_PATH_CLASS


Gtk2, Glib::Boxed


Copyright (C) 2003−2011 by the gtk2−perl team.

This software is licensed under the LGPL. See Gtk2 for a full notice.