#!/usr/bin/perl use warnings; use strict; use Glib qw/TRUE FALSE/; use Gtk2 '-init'; # $object->get_data (key) and $object->set_data (key,val), # but only with unsigned integers. This gives them limited # usefulness. Just use hash keys unless you really know what # you're doing. my $window = Gtk2::Window->new('toplevel'); $window->set_title('Storing arbitrary data in objects '); $window ->signal_connect( 'destroy' => \&delete_event ); $window->set_border_width(10); $window->set_size_request(300,200); my $vbox = Gtk2::VBox->new( FALSE, 6 ); $window->add($vbox); $vbox->set_border_width(2); my $hbox= Gtk2::HBox->new( FALSE, 6 ); $vbox->pack_end($hbox,FALSE,FALSE,0); $hbox->set_border_width(2); my $frame0 = Gtk2::Frame->new('Controls'); $vbox->pack_end( $frame0, FALSE, FALSE, 0 ); $frame0->set_border_width(3); my $hbox0 = Gtk2::HBox->new( FALSE, 6 ); $frame0->add($hbox0); $hbox0->set_border_width(3); my $button = Gtk2::Button->new_from_stock('gtk-quit'); $hbox0->pack_end( $button, FALSE, FALSE, 0 ); $button->signal_connect( clicked => \&delete_event ); my $button_test = Gtk2::Button->new('Test-value'); $button_test->{'testdata'} = 'fefifofum'; $vbox->pack_start( $button_test, FALSE, FALSE, 0 ); $button_test->signal_connect( clicked => \&test_event ); $window->show_all(); Gtk2->main; ##################################### sub delete_event { Gtk2->main_quit; return FALSE; } ######################################## sub test_event { my $but = shift; print $but->{'testdata'},"\n"; }