Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

282 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   118 Visites
   Note INTERNET : 14
    (5 Votants)
   263 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2005 - Note de Synthèse Stage
Programmation Graphique avec Gtk2-Perl
[30 mn de lecture - paru le 10/7/2004 10:34:59 AM - Public : Confirmé]

Auteur

artistPrzemyslaw BRODACKI
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2004

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet 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);

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 );



Articles de la même catégorie

 Pages : Top


171 Visites
0 Commentaires
Présentation des nouveautés du langage Java 5
[15 mn de lecture - paru le 10/7/2004 9:22:17 AM - Public : Confirmé]

En savoir plus


62 Visites
0 Commentaires
development VB6 and SQLSERVER
[15 mn de lecture - paru le 10/7/2004 7:45:04 AM - Public : Débutant]

En savoir plus


67 Visites
0 Commentaires
Dotnetnuke 2.1.2 Best Practices
[20 mn de lecture - paru le 10/7/2004 4:01:06 AM - Public : Débutant]

En savoir plus

   Tous les Articles


SUPINFO Training Center peut vous proposer une formation ...

   Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
   Devenez Certifiés Cisco en 13 jours avec SUPINFO Training Center
   Devenez Administrateur Système Microsoft avec SUPINFO Training Center
   Devenez Développeur Microsoft .NET en 13 jours avec SUPINFO Training Center



Powered by Campus-Booster Technology
Conditions d'utilisation & Copyright | Respect de la vie privée
© Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

Web site autided by :