Le widget flèche dessine une pointe de flèche. On a le choix entre un certain nombre de directions possibles et une certain nombre de styles. Placée dans un bouton, une flèche peut être très utile. Comme le widget Label, elle n'émet aucun signal.
Il n'y a que deux fonction pour manipuler les flèches.
$arrow = new Gtk::Arrow ( $arrow_type , $shadow_type );$arrow ->set ( $arrow_type , $shadow_type );
La première crée une nouvelle flèche en précisant le type et l'apparence. La seconde permet à ces valeurs d'être modifiées rétrospectivement.
L'argument $arrow_type peut prendre l'une des valeurs suivantes :
'up''down'
'left'
'right'
Ces valeurs indiquent évidemment la direction dans laquelle pointe la flèche.
L'argument $shadow_type peut prendre les valeurs :
'in''out' ( valeur par défaut )
'etched in'
'etched out'
Voici un bref exemple pour illustrer l'usage des flèches.
#!/usr/bin/perl -wuse Gtk;
use strict;
init Gtk;
my $false = 0;
my $true = 1;
my $window;
my $button;
my $box;
$window = new Gtk::Window( "toplevel" );
$window->set_title( "Arrow Buttons" );
$window->signal_connect( "destroy", sub { Gtk->exit( 0 ); } );
$window->border_width( 10 );
# Crée une boîte qui contiendra les boutons-flèches
$box = new Gtk::HBox( $false, 0 );
$box->border_width( 2 );
$window->add( $box );
# Regroupe et montre tous les widgets
$box->show();
$button = create_arrow_button( 'up', 'in' );
$box->pack_start( $button, $false, $false, 3 );
$button = create_arrow_button( 'down', 'out' );
$box->pack_start( $button, $false, $false, 3 );
$button = create_arrow_button( 'left', 'in' );
$box->pack_start( $button, $false, $false, 3 );
$button = create_arrow_button( 'right', 'out' );
$box->pack_start( $button, $false, $false, 3 );
$window->show();
main Gtk;
exit( 0 );
### Routines
# Crée un widget flèche avec les paramètres spécifiés et la
# place dans un bouton
sub create_arrow_button { my ( $arrow_type, $shadow_type ) = @_; my $button; my $arrow; $button = new Gtk::Button(); $arrow = new Gtk::Arrow( $arrow_type, $shadow_type ); $button->add( $arrow ); $button->show(); $arrow->show(); return ( $button ); }