my $btn = Gtk::Button->new("Quit");
$btn->signal_connect(clicked => sub { Gtk->exit(0); return });
$btn->show;
my $window = Gtk::Window->new("toplevel");
$window->signal_connect(delete => sub { Gtk->exit(0); return });
$window->set_title("Test");
$window->border_width(15);
$window->add($btn);
$window->show;
####
my $window = configure_object(
Gtk::Window->new("toplevel"),
signal_connect => [ delete => sub { Gtk->exit(0); return } ],
set_title => [ "Test" ],
border_width => [ 15 ];
add => [ configure_object(
Gtk::Button->new("Quit"),
signal_connect => [ clicked => sub { Gtk->exit(0); return } ],
show => undef,
)],
show => undef,
);
##
##
$fileselect->cancel_button->signal_connect(
clicked => sub { $fileselect->hide }
);
# ...
##
##
configure_object(
$fileselect,
cancel_button => signal_connect => [
clicked => sub { $fileselect->hide },
],
# ...
);
##
##
sub configure_object {
my $object = shift;
while(@_) {
my ($meth, $param) = splice @_, 0, 2;
my $obj = $object;
until((not defined $param) or ref $param) {
$obj = $obj->$meth;
($meth, $param) = ($param, shift);
}
$obj->$meth(@{ $param || [] });
}
return $object;
}