|[Gtk2-Perl - Table of Contents]||[Gtk2-Perl - Index]|
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
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
The following constants are defined for standard priority levels,
Gtk2::GTK_PATH_PRIO_LOWEST Gtk2::GTK_PATH_PRIO_GTK Gtk2::GTK_PATH_PRIO_APPLICATION Gtk2::GTK_PATH_PRIO_THEME Gtk2::GTK_PATH_PRIO_RC Gtk2::GTK_PATH_PRIO_HIGHEST
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.
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
Glib::Long Glib::Double Glib::String an enum type, ie. subtype of Glib::Enum Glib::Flags, or a flags subtype
$binding_set->entry_add_signal (Gtk2->keyval_from_name('Return'), [ 'control-mask' ], # modifiers 'some-signal-name', '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
$binding_set->entry_add_signal (Gtk2->keyval_from_name('Escape), , 'set-direction', 'Gtk2::Orientation', 'vertical');
Likewise flags from an arrayref,
$binding_set->entry_add_signal (Gtk2->keyval_from_name('d'), , 'initiate-drag', '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']); $binding_set->entry_add_signal (Gtk2->keyval_from_name('x'), ['control-mask'], 'change-debug', 'Glib::Flags', $flags);
Since: gtk+ 2.12
Return the name of $binding_set.
'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'
Copyright (C) 2003-2008 by the gtk2-perl team.
This software is licensed under the LGPL. See Gtk2 for a full notice.