diff options
Diffstat (limited to 'perl-install/mouse.pm')
-rw-r--r-- | perl-install/mouse.pm | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/perl-install/mouse.pm b/perl-install/mouse.pm index 6d80964b4..75516c507 100644 --- a/perl-install/mouse.pm +++ b/perl-install/mouse.pm @@ -415,3 +415,117 @@ EndSection }; $update_mouse->($mouse); } + +sub test_mouse_install { + my ($mouse) = @_; + require my_gtk; + my_gtk->import(qw(:wrappers :helpers)); + my $w = my_gtk->new; + my ($width, $height, $offset) = (210, round_up(min(350, $::windowheight - 150), 6), 25); + my $darea = new Gtk::DrawingArea; + $darea->set_events([ 'button_press_mask', 'button_release_mask' ]); #$darea must be unrealized. + gtkadd($w->{window}, + gtkpack(my $vbox_grab = new Gtk::VBox(0,0), + gtksize(gtkset_usize($darea, $width+1, $height+1), $width+1, $height+1), + my $okcancel = gtkset_sensitive(create_okcancel($w, '', '', "edge"), 0), + ), + ); + $okcancel->set_uposition(7, $height-23); + Gtk->timeout_add(2000, sub { gtkset_sensitive($okcancel, 1) }); + test_mouse($mouse, $w, $darea, $width, $height, $vbox_grab); +} + +sub test_mouse_standalone { + my ($mouse, $hbox) = @_; + require my_gtk; + my_gtk->import(qw(:wrappers)); + my ($width, $height, $offset) = (210, round_up(min(350, $::windowheight - 150), 6), 25); + my $darea = new Gtk::DrawingArea; + $darea->set_events([ 'button_press_mask', 'button_release_mask' ]); #$darea must be unrealized. + gtkpack($hbox, + gtkpack(gtkset_border_width(new Gtk::VBox(0,10), 10), + gtksize(gtkset_usize($darea, $width+1, $height+1), $width, $height) + ) + ); + test_mouse($mouse, $hbox, $darea, $width, $height); +} + +sub test_mouse { + my ($mouse, $w, $darea, $width, $height, $vbox_grab) = @_; + + $darea->realize(); + my ($m3_image, $m3_mask) = gtkcreate_xpm($darea, 'mouse_3b.xpm'); + my ($m3_imagep, $m3_maskp) = gtkcreate_xpm($darea, 'mouse_3b+.xpm'); + my ($m3_left, $m3_left_mask) = gtkcreate_xpm($darea, 'mouse_left.xpm'); + my ($m3_right, $m3_right_mask) = gtkcreate_xpm($darea, 'mouse_right.xpm'); + my ($m3_middle, $m3_middle_mask) = gtkcreate_xpm($darea, 'mouse_middle.xpm'); + my $image = $m3_image; + $mouse->{nbuttons} > 3 and $image = $m3_imagep; + my $draw_text = sub { + my ($t, $y) = @_; + my $font = $darea->style->font; + my $w = $font->string_width($t); + $darea->window->draw_string($font, $darea->style->black_gc, ($width - $w) / 2, $y, $t); + }; + my $drawarea; $drawarea = sub { $darea->window->draw_pixmap ($darea->style->bg_gc('normal'), + $image, 0, 0, + ($darea->allocation->[2]-$width)/2, ($darea->allocation->[3]-$height)/2, + 210, 350); + $draw_text->(_("Please test the mouse"), $height - 80); + $draw_text->(_("To activate the mouse,"), $height - 65) if $mouse->{XMOUSETYPE} eq 'IMPS/2'; + $draw_text->(_("MOVE YOUR WHEEL!"), $height - 50) if $mouse->{XMOUSETYPE} eq 'IMPS/2'; + }; + + my $paintButton = sub { + my ($nb, $pressed) = @_; + my $x = 60 + $nb*33; + $drawarea->(); + if ($nb == 0) { + $darea->window->draw_pixmap ($darea->style->bg_gc('normal'), + $m3_left, 0, 0, + ($darea->allocation->[2]-$width)/2+31, ($darea->allocation->[3]-$height)/2 + 52, + 59, 91); + } elsif ($nb == 2) { + $darea->window->draw_pixmap ($darea->style->bg_gc('normal'), + $m3_right, 0, 0, + ($darea->allocation->[2]-$width)/2+117, ($darea->allocation->[3]-$height)/2 + 52, + 61, 91); + } elsif ($nb == 1) { + if ($mouse->{nbuttons} > 3) { + $darea->window->draw_pixmap ($darea->style->bg_gc('normal'), + $m3_middle, 0, 0, + ($darea->allocation->[2]-$width)/2+98, ($darea->allocation->[3]-$height)/2 + 67, + 13, 62); + } else { + $darea->window->draw_arc ( $darea->style->black_gc, + 1, ($darea->allocation->[2]-$width)/2 + $x, ($darea->allocation->[3]-$height)/2 + 90, 20, 25, + 0, 360*64); + } + } elsif ($nb == 4) { + $darea->window->draw_pixmap ($darea->style->bg_gc('normal'), + $m3_middle, 0, 0, + ($darea->allocation->[2]-$width)/2+98, ($darea->allocation->[3]-$height)/2 + 67, + 13, 62) + } elsif ($nb == 5) { + $darea->window->draw_pixmap ($darea->style->bg_gc('normal'), + $m3_middle, 0, 0, + ($darea->allocation->[2]-$width)/2+98, ($darea->allocation->[3]-$height)/2 + 67, + 13, 62) + } + }; + $darea->signal_connect(button_press_event => sub { + my $b = $_[1]{button}; + $paintButton->($b - 1); + }); + $darea->signal_connect(button_release_event => sub { + $drawarea->() + }); + $darea->signal_connect(expose_event => sub { $drawarea->() }); + $darea->size($width, $height); + $darea->set_events([ 'button_press_mask', 'button_release_mask' ]); + $w->sync; # HACK + $vbox_grab and Gtk::Gdk->pointer_grab($darea->window, 1, + [ 'pointer_motion_mask'], + $darea->window, undef ,0); + $w->main; +} |