Programmation Graphique avec Gtk2-Perl
[30 mn de lecture - paru le 10/7/2004 10:34:59 AM - Public : Confirmé]
|
   
|
Auteur
2. Eléments standard
Voici donc d'autres objets un peu plus complexes
2.1. Réglages
Les éléments de réglage peuvent être assimilés à des boutons. mais ils sont plus complexes car leur fonctionnement n'est pas booléen mais permet un choix sur plusieurs valeurs.
En fait GTK permet ici de créer plusieurs types de réglages. Le problème devrait être lié aux signaux. Si chaque objet de réglage passe un signal différent, le programmeur ne s'en sortira jamais. Il existe donc un objet adjustement qui permet de stocker les signaux des réglages et de les utiliser de la même manière quelque soit leur origine pour rendre l'utilisation des réglages plus flexible:
$ajust = Gtk2::Adjustment->new($value,$lower,$upper,$step_increment,$page_increment,$page_size);
Voilà un bel objet de réglages, invisible car il ne fait que gérer les données issues des autres objets (visibles) de réglages.
Les parametres sont:
- $value comme valeur initiale/actuelle
- $lower est la limite basse
- $upper est la limite haute affichée (donc pas forcément la valeur la plus haute de $value)
- $step_increment est le pas d'incrémentation
- $page_size est la zone visible de l'objet
Pour récupérer ces information que vous voulez utiliser autrement, avec votre propre gestionnaire:
get_adjustment->nom ;
où le nom est l'un des parametres suivants déja décrits:
value
lower
upper
step_increment
page_increment
page_size
Pour utiliser les signaux issus des réglages:
$ajust->signal_connect("value_changed",\&fonction);
Voilà, il suffit de connecter un objet visible à l'ajustement souhaité:
$echelle = Gtk2::HScale->new( $ajust ) ;
quelques exemples d'objets: HScale, VScale, HScrollBar, VScrollBar...
La mise à jour de la valeur changée par l'utilisateur à l'aide des réglages peut être fait de trois façons:
$echelle->set_update_policy($update) ;
où $update est une des trois valeurs suivantes:
- continuous donc en temps réel (par défaut)
- discontinuous donc une fois que l'utilisateur a relâché le bouton de la souris
- delayed donc après un certain laps de temps
2.2. Menus
Les menus sont des éléments indispensables dans toute application. Ils sont découpés en 3 éléments distincts:
- la barre de menu qui comporte des éléments de menu
- le menu qui apparait en clickant sur un élément du menu
- l'élement du menu ou de la barre de menu.
L'ordre de création d'un menu se fait donc de cette manière:
- on crée la barre de menu
- on crée les éléments de la barre de menu
- pour chaque élément de la barre de menu, on crée un menu
- dans chaque menu on crée des éléments de menu - pour chaque élément du menu, soit on associe une action soit on crée un autre menu (sous-menu)
- pour chaque sous-menu on crée des éléement... et ainsi de suite.
Voici la procédure:
$menubarre = Gtk2::MenuBar->new ();
On crée ensuite des éléments qu'on ajoute à la barre:
$element01 = Gtk2::MenuItem->new($label);
$menubarre->append($element01); #Pour ajouter par le début
ou
$menubarre->prepend($element01); #Pour ajouter par la fin
On crée des menus pour chaque élément:
$menu1 = Gtk2::Menu->new ();
Et on recommence à créer des éléments pour chaque menu:
$element11 = Gtk2::MenuItem->new($label);
$menu1->append($element11); #Pour ajouter par le début
ou
$menu1->prepend($element11); #Pour ajouter par la fin
Rien de très compliqué
2.3. Barre d'état
Les barres d'état affichent du texte, en général des informations courantes utilies à l'utilisateur.
$statusbar = Gtk::Statusbar->new();
la création d'une barre d'état associe à celle-ci un identificateur unique permettant d'identifier l'utilisateur. Pour récuperer l'indentificateur:
$statusbar->get_context_id( $description );
Avec l'id on peut modifier l'affichage de la barre qui fonctionne à la manière d'une pile. Les événements sont empiles avant d'être affichés. Voici les opérations possibles sur la pile:
$statusbar->push( $context_id, $text );
$statusbar->pop( $context_id );
$statusbar->remove( $context_id, $message_id );
2.4. Barre d'outils
La barre d'outils est tout aussi facile à créer:
$toolbar = Gtk2::Toolbar->new();
Il suffit d'y ajouter de 3 manières des boutons avec du texte ou une icône:
$toolbar->append_item ($text, $tooltip_text, $tooltip_private_text,
$icon, $fonction, $user_data);
$toolbar->prepend_item ($text, $tooltip_text, $tooltip_private_text,
$icon, $fonction, $user_data);
$toolbar->insert_item ($text,$tooltip_text,$tooltip_private_text,
$icon, $fonction, $user_data, $position);
Les parametres sont explicites sauf pour tooltip_private_text qui doit rester nul car c'est un paramètre obsolète et user_data est une donnée complémentaire à passer en parametre à la fonction appelé.
Les boutons ne sont pas les seuls objets pouvant être ajoutés à une barre d'outils. On peut aussi ajouter d'autres types prédéfinis:
$toolbar->append_element ( $type, $widget, $text,
$tooltip_text, $tooltip_private_text, $icon, $fonction, $user_data);
$toolbar->prepend_element ( $type, $widget, $text,
$tooltip_text, $tooltip_private_text, $icon, $fonction, $user_data);
$toolbar->insert_element ( $type, $widget, $text,
$tooltip_text, $tooltip_private_text, $icon, $fonction, $user_data,$position);
où type est un des types suivant:
- 'space' pour ajouter un espace
- 'button' pour ajouter un bouton
- 'togglebutton' pour ajouter un bouton toggle
- 'radiobutton' pour ajouter un bouton radio
- 'widget' pour ajouter un widget quelconque
On peut tout aussi bien ajouter n'importe quel objet à la barre:
$toolbar->append_widget ($objet, $tooltip_text, $tooltip_private_text);
Les parametres et les méthodes permettent différents espacements entre les objets, mais aussi l'insertion d'icones à partir d'un ASCII ART. La barre peut être verticale ou bien horizontale, bref des données qu'il m'est impossible de décrier en seulement quelques pages.
2.5. Bulles d'aide
Les bulles d'aides sont de petits messages popup qui s'affichent lorsque l'on laisse la souris un instant sur un objet:
$bulle = Gtk2::Tooltips->new();
$bulle->set_tip ( $element01 , "notre premier element de la barre de menu " , "" ) ;
De cette manière on associe une bulle d'aide à un élément en occurence le premier element de notre menu. On peut activer les bulles, les desactiver et fixer un délai pour leur affichage:
$bulle->enable();
$bulle->disable();
$bulle->set_delay ( $delai );
|