Chapitre 18
Les flèches

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 = Gtk2::Arrow->new ( $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'

Exemple

Voici un bref exemple pour illustrer l’usage des flèches.

arrows

# !/usr/bin/perl -w


use Gtk2 ’-init’ ;

# Variables convenables pour vrai et faux
use constant TRUE => 1 ;
use constant FALSE => 0 ;

my $window = Gtk2::Window->new( ”toplevel” ) ;
$window->set_title( ”Les flêches” ) ;
$window->signal_connect( ”destroy” , sub { Gtk2->main_quit ; } ) ;
$window->set_border_width( 10 ) ;

# Crée une boîte qui contiendra les boutons-flèches
my $box = Gtk2::HBox->new( FALSE, 0 ) ;
$box->set_border_width( 2 ) ;
$window->add( $box ) ;

# Regroupe et montre tous les widgets
$box->show() ;

my $button1 = create_arrow_button( ’up’ , ’in’ ) ;
$box->pack_start( $button1, FALSE, FALSE, 3 ) ;

my $button2 = create_arrow_button( ’down’ , ’out’ ) ;
$box->pack_start( $button2, FALSE, FALSE, 3 ) ;

my $button3 = create_arrow_button( ’left’ , ’in’ ) ;
$box->pack_start( $button3, FALSE, FALSE, 3 ) ;

my $button4 = create_arrow_button( ’right’ , ’out’ ) ;
$box->pack_start( $button4, FALSE, FALSE, 3 ) ;

$window->show() ;

Gtk2->main ;

### 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 = Gtk2::Button->new() ;
my $arrow = Gtk2::Arrow->new( $arrow_type, $shadow_type ) ;
$button->add( $arrow ) ;
$button->show() ;
$arrow->show() ;
return ( $button ) ;
}