Programmation Graphique avec Gtk2-Perl
[30 mn de lecture - paru le 10/7/2004 10:34:59 AM - Public : Confirmé]
|
   
|
Auteur
3. Eléments Avancés
Les champs de texte peuvent parraître simples. Mais ils peuvent réagir à de multiples signaux.
$entree = Gtk::Entry->new();
L'objet ci-dessus est un champ texte où on ne peut taper qu'une seul ligne. Le contenu est modifiable avec:
$entree->set_text( $text );
$entree->append_text( $text );
$entree->prepend_text( $text );
On peut aussi masquer le texte, le rendre invisible:
$entree->set_visibility($visible ); #valeur booléenne.
On peut aussi créer de grands champs de texte:
$editable->select_region( $start, $end );
Et modifier le contenu à l'aide:
$editable->insert_text( $new_text, $position );
$editable->delete_text( $start, $pos );
$editable->get_chars( $start, $end );
$editable->cut_clipboard();
$editable->copy_clipboard();
$editable->paste_clipboard();
$editable->delete_selection();
Voilà de quoi créer un joli éditeur de texte. Les méthodes ont des noms assez explicites, il est donc inutiles de les détailler.
Toutes ces actions provoquent des signaux qui peuvent être utilisés comme
'changed', 'insert-text', 'delete-text'. La aussi le nombre de signaux est très important et donc imossible à détailler dans cette introduction.
Les boites de dialogue permettent une interaction avec l'utilisateur et peuvent le forcer à effectuer un choix. Ce sont des éléments indispensables d'une application:
$dialog = Gtk2::Dialog->new($titre,$parent,$flags...);
Les boites de dialogue contiennent en général du texte (un label) et des boutons. Pour ce faire, ces éléments sont empilés à l'aide de VBOX. On crée donc une VBOX dans laquelle on empile un label, un bouton et voilà notre boite de dialogue toute prête.
Les actions sur les boites sont nombreuses et peuvent toutes être interprétées par des signaux assez explicites:
- 'none'
- 'reject'
- 'accept'
- 'delete-event'
- 'ok'
- 'cancel'
- 'close'
- 'yes'
- 'no'
- 'apply'
- 'help'
Il n'est pas nécessaire de créer de toute pièce une boite de dialogue. On peut toujours utiliser une boite de dialogue prédéfinie:
$dialog = Gtk2::MessageDialog->new ($fenetre_parente,
$flags,$type,$bouton,..
$message);
avec comme types:
- 'info'
- 'question'
- 'error'
- 'warrning'
Les onglets sont un moyen facile d'avoir plusieurs pages dans une même fenêtre.
$onglets = Gtk2::Notebook->new();
Il ne suffit plus qu'à ajouter des pages:
$onglets->append_page( $child, $tab_label );
On peut bien entendu le faire par le début, par la fin ou par insertion en remplacent append par prepend ou insert (insert nécessite un troisième peramétre qui est $position. )
Les opérations qui peuvent être effectués sur les pages sont tout aussi nombreuses:
$onglets->remove_page( $page_num );
$onglets->get_current_page();
$onglets->page_num( $child );
$onglets->next_page();
$onglets->prev_page();
...
3.4. Barre de progression
Les barres de progression permettent la visualisation de l'avancement d'une tâche.
$progress = Gtk2::ProgressBar->new();
On modifie l'avancement en mettant à jour le pourcentage d'avancement:
$progress->set_fraction($percentage );
Bien entendu la barre peut avancer de gauche à droite, de droite à gauche, de bas en haut et de haut en bas:
$progress->set_orientation( $orientation );
avec comme orientation:
-
'left_to_right'
- 'right_to_left'
-
'bottom_to_top'
-
'top_to_bottom'
Lors qu'une tâche ne peut pas être mesuré il est souvent utile d'en montrer l'activité plutôt qu'une fausse estimation:
$progress->pulse();
progress->set_pulse_step($fraction);
Un texte peut y être ajouté:
$progress->set_text( $text );
|