Gtk2-Ex-Dragger
view release on metacpan or search on metacpan
devel/run.pl view on Meta::CPAN
my $vscroll = Gtk2::VScrollBar->new ($vadj);
$table->attach ($vscroll, 1,2, 0,1,
[],['expand','shrink','fill'], 0,0);
my $hadj = Gtk2::Adjustment->new (100, 0, 300, 1, 10, 100);
my $hscroll = Gtk2::HScrollBar->new ($hadj);
$table->attach ($hscroll, 0,1, 1,2,
['expand','shrink','fill'],[], 0,0);
my $dragger;
my $confine = 0;
my $hinverted = 0;
my $vinverted = 0;
my $update_policy = 0;
sub make {
$dragger = Gtk2::Ex::Dragger->new (widget => $area,
hadjustment => $hadj,
vadjustment => $vadj,
hinverted => $hinverted,
vinverted => $vinverted,
update_policy => $update_policy,
confine => $confine,
cursor => 'fleur');
print "$progname ",($confine?"confined ":"unconfined "),
($hinverted?"hinv ":"hnorm "),
($vinverted?"vinv":"vnorm"),
"policy $update_policy\n";
}
# make();
sub update {
if (defined $dragger) {
make ();
}
}
{
my $button = Gtk2::CheckButton->new_with_label ('Confine');
$vbox->pack_start ($button, 0,0,0);
$button->signal_connect (toggled => sub {
$confine = $button->get_active;
update();
});
}
{
my $button = Gtk2::CheckButton->new_with_label ('H Inverted');
$vbox->pack_start ($button, 0,0,0);
$button->signal_connect ('notify::active' => sub {
$hinverted = $button->get_active;
update();
});
}
{
my $button = Gtk2::CheckButton->new_with_label ('V Inverted');
$vbox->pack_start ($button, 0,0,0);
$button->signal_connect ('notify::active' => sub {
$vinverted = $button->get_active;
update();
});
}
# {
# my $combobox = Gtk2::ComboBox->new_text;
# $vbox->pack_start ($combobox, 0,0,0);
# foreach my $policy ('default', 'continuous', 'discontinuous', 'delayed') {
# $combobox->append_text ($policy);
# }
# $combobox->set_active (0);
# $combobox->signal_connect
# (changed => sub {
# $update_policy = $combobox->get_active_text;
# update();
# });
# }
{
require Gtk2::Ex::ComboBox::Enum;
my $combobox = Gtk2::Ex::ComboBox::Enum->new
(enum_type => 'Gtk2::Ex::Dragger::UpdatePolicy',
active_nick => Gtk2::Ex::Dragger->find_property('update-policy')->get_default_value);
$vbox->pack_start ($combobox, 0,0,0);
$combobox->signal_connect
('notify::active-nick' => sub {
$update_policy = $combobox->get('active-nick');
update();
});
}
{
my $button = Gtk2::CheckButton->new_with_label ('Hint Mask');
$vbox->pack_start ($button, 0,0,0);
$button->signal_connect
(notify => sub {
$area->unrealize;
my $motion_mask = $button->get_active
? ['pointer-motion-hint-mask'] : [];
my $new_mask = $area->get('events')
- 'pointer-motion-hint-mask'
+ $motion_mask;
$area->set(events => $new_mask);
print "$progname: area widget events ",$area->get('events'),"\n";
$area->show;
$area->map;
my ($width, $height) = $area->window->get_size;
print "$progname: area ${width}x${height} window events ",$area->window->get_events,"\n";
$update_policy = 'continuous';
update();
});
}
my $sleep = 0;
{
my $button = Gtk2::CheckButton->new_with_label ('Sleep on Start');
$vbox->pack_start ($button, 0,0,0);
$button->signal_connect
('notify::active' => sub {
$sleep = $button->get_active;
print "$progname: setup sleep $sleep\n";
});
}
{
my $label = Gtk2::Label->new ('Keys:
Up,Down,Left,Right,
PgUp, PgDown');
$vbox->pack_start ($label, 0,0,0);
$area->signal_connect
(key_press_event => sub {
my ($area, $event) = @_;
if ($event->keyval == Gtk2::Gdk->keyval_from_name('Page_Down')) {
$vadj->set_value (min ($vadj->upper - $vadj->page_size,
$vadj->value + $vadj->page_increment));
} elsif ($event->keyval == Gtk2::Gdk->keyval_from_name('Page_Up')) {
$vadj->set_value (max ($vadj->lower,
$vadj->value - $vadj->page_increment));
} elsif ($event->keyval == Gtk2::Gdk->keyval_from_name('Down')) {
$vadj->set_value (min ($vadj->upper - $vadj->page_size,
$vadj->value + $vadj->step_increment));
} elsif ($event->keyval == Gtk2::Gdk->keyval_from_name('Up')) {
$vadj->set_value (max ($vadj->lower,
$vadj->value - $vadj->step_increment));
( run in 1.038 second using v1.01-cache-2.11-cpan-8dfa8b56332 )