=head1 NOM Tk::composite - Créer une nouvelle classe de widget composite =head1 SYNOPSIS package Tk::MyNewWidget; use Tk:widgets qw/ liste de widgets Tk /; use base qw/ Tk::Frame /; # ou Tk::Toplevel Construct Tk::Widget 'MyNewWidget'; sub ClassInit { my ( $class, $mw ) = @_; #... par exemple, mettre ici les liaisons de classe ... $class->SUPER::ClassInit($mw); } sub Populate { my ( $self, $args ) = @_; my $flag = delete $args->{-flag}; if ( defined $flag ) { # prendre en compte -flag => xxx ce qui ne peut être fait # qu'au moment de la création # le "delete" ci-dessus assure que new() n'entraînera pas # un $cw->configure(-flag => xxx); } $self->SUPER::Populate( $args ); $self = $self->Component( ... ); $self->Delegates( ... ); $self->ConfigSpecs( '-cursor' => [ SELF, 'cursor', 'Cursor', undef ], '-something' => [ METHOD, dbName, dbClass, default ], '-text' => [ $label, dbName, dbClass, default ], '-heading' => [ {-text=>$head}, heading, Heading, 'My Heading' ], ); } sub something { my ( $self, $value ) = @_; if (@_> 1) { # l'initialiser } return # valeur courante } 1; __END__ =head1 NAME Tk::Whatever - un widget whatever =head1 SYNOPSIS use Tk::Whatever; $widget = $parent->Whatever(...); =head1 DESCRIPTION ... =head1 DESCRIPTION L'idée qui sous-tend un widget composite est de créer un widget de plus haut niveau, parfois appelé un "super-widget" ou un "meta-widget". Très souvent, un composite sera construit à partir d'autre widgets en les B, plutôt qu'en les spécialisant. Par exemple, le widget composite distribué B est I d'un B et d'un B