#!/usr/bin/perl -w # Copyright 2008, 2009, 2010 Kevin Ryde # This file is part of Chart. # # Chart is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3, or (at your option) any later # version. # # Chart is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License along # with Chart. If not, see . use strict; use warnings; use Gtk2 '-init'; { package My::Object; use strict; use warnings; use Gtk2; use Glib::Object::Subclass 'Gtk2::Window', signals => { mysig => { param_types => [], return_type => undef, flags => ['run-last','action'], class_closure => \&do_mysig }, }; my $mysig_seen; sub do_mysig { $mysig_seen = 1; print "My::Object mysig runs\n"; } } BEGIN { foreach my $i (0 .. 10) { print "button $i keyval=", Gtk2::Gdk->keyval_from_name("Pointer_Button$i"),"\n"; } } my $label = Gtk2::Label->new; my $myobj = My::Object->new; Gtk2::Rc->parse_string (<<'HERE'); binding "foo" { bind "x" { "mysig" () } bind "X" { "mysig" () } bind "Return" { "mysig" () } bind "Pointer_Button1" { "mysig" () } } HERE # class "My__Object" binding "foo" my $foo; # $myobj->signal_emit ('mysig'); foreach my $class ('Gtk2::Entry', 'My::Object') { my $bindingset = Gtk2::BindingSet->by_class($class); print "by_class '$class' $bindingset\n"; } $foo = Gtk2::BindingSet->find('foo'); print "find 'foo' $foo\n"; my $keyname = 'Return'; #my $keyname = 'Pointer_Button1'; my $keyval = Gtk2::Gdk->keyval_from_name($keyname); { print "foo->activate $keyname on myobj\n"; my $activated = $foo->activate ($keyval, [], $myobj); print " activate result=", ($activated ? "yes" : "no"), "\n"; } { print "myobj->bindings_activate $keyname\n"; my $activated = $myobj->bindings_activate ($keyval, []); print " bindings_activate result=", ($activated ? "yes" : "no"), "\n"; } { my $keymap = Gtk2::Gdk::Keymap->get_default; my @entries = $keymap->get_entries_for_keyval ($keyval); require Data::Dumper; print Data::Dumper->new([\@entries],['entries'])->Dump; } exit 0;