Obligement - L'Amiga au maximum

Dimanche 19 novembre 2017 - 05:48  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : Blitz Basic - gadtools.library
(Article écrit par Mathieu Chènebit et extrait d'Amiga News - octobre 1996)


La gadtools.library est une bibliothèque de programmation des gadgets. Introduite avec le Workbench 2.0 et notamment les A500+, elle offre à l'utilisateur des gadgets plus beaux, plus nombreux et plus rapides.

Tout d'abord, je commence avec une astuce envoyée gracieusement par un lecteur. Didier Levet a en effet découvert que souvent le Blitz Basic plantait sur un A4000 lorsque le programme débutait avec la commande WBStartup. Il a aussi trouvé la solution : il suffit d'ajouter Forbid_ avant le End final. Voilà qui devrait venir en aide à quelques personnes.

Par ailleurs, si vous avez des remarques par rapport à cette rubrique Blitz Basic (suggestions, critiques, astuces...), n'hésitez pas à me les transmettre par le biais du journal ou de mon adresse électronique.

Du point de vue du programmeur Blitz Basic, le manuel est très peu explicite sur la gadtools.library. Les commandes sont en effet décrites, mais il n'est nullement expliqué comment les utiliser. Le but de cet article est de vous apprendre concrètement comment programmer une interface graphique avec des gadgets GadTools.

Rappel

Tout d'abord, je vous rappelle brièvement le fonctionnement de la bibliothèque. Pour commencer, vous ouvrez une fenêtre avec l'instruction "Window" habituelle. Ensuite, vous déclarez vos gadgets grâce aux commandes appropriées, et vous rattachez la liste GT (GTList en anglais, soit une liste de gadgets GadTools) à la fenêtre préalablement ouverte avec la commande "AttachGTList".

Enfin, vous initialisez vos gadgets s'il y a lieu et vous lancez la routine de gestion des événements relatifs aux gadgets. Notez qu'une GTList est un type d'objet Blitz Basic tout comme les BitMap, les Shape... Vous pouvez donc leur appliquer les commandes Use et Free, ce qui peut être très utile si vous désirez faire une GTList proportionnelle à la taille de vos fenêtres par exemple.

De même, la commande DetachGTList vous permettra de détacher la liste GadTools de la fenêtre, si, par exemple, vous deviez fermer puis réouvrir une fenêtre sans arrêter le programme (c'est le cas par exemple lors de l'écriture d'une commodité et de la fenêtre de départ a été fermé, puis doit être réouverte avec le message Appear d'Exchange).

Les gadgets GadTools ont des points communs : quand vous les déclarez, la syntaxe du début est généralement la même : le numéro de la liste GT, le numéro d'identification, les coordonnées en x, les coordonnées en y. Ensuite, surviennent les spécificités de chaque gadget : largeur et hauteur, shape à associer, liste d'options... Voyons maintenant comment tout cela fonctionne avec des exemples concrets.

Comment obtenir une entrée utilisateur

Il s'offre à vous deux choix : une requête Reqtools ou ASL et un gadget de saisie de texte. Nous allons nous intéresser à la deuxième solution. Il existe deux types d'entrées différentes : les chaînes numériques et les chaînes de caractères. Pour les chiffres, nous utiliserons la commande GTInteger et pour les lettres, la commande GTString.

Vous pouvez agir sur ces gadgets avec les instructions GTSetInteger et GTSetString qui fonctionnent sur le même principe : les arguments sont le numéro de la liste GT, le numéro d'identification du gadget dans la liste ("id") et la valeur que vous assignez au gadget. Vous pouvez aussi saisir les entrées données par l'utilisateur lorsque le code d'évènement est $40 (gadget relâché) avec les fonctions GTGetInteger et GTGetString.

Mais je vais vous donner une petite astuce : on serait tenter de saisir ces gadgets lorsque le code $40 est activé pour ce gadget, c'est-à-dire pour parler plus clairement avec If ev=$40... If GadgetHit=1 (le numéro de votre gadget GTString ou Integer)... Et bien non, il faut procéder différemment car le code $40 appliqué à un GTString ou à un GTInteger correspond à un retour chariot.

Ceci veut dire que l'utilisateur devra appuyer à chaque fois sur la touche entrée pour que ces... entrées soient prises en compte, ce qui est fort peu pratique. L'astuce consiste à saisir les champs des gadgets uniquement lorsque l'utilisateur appuyera sur le gadget "Ok" ou "Sauver", bref sur le gadget de fin.

Comment l'utilisateur peut choisir dans une liste d'options

Une autre méthode qui n'offre cependant qu'un choix limité est l'utilisation de GTCycle. Cette commande vous créera des gadgets cyclables. La syntaxe de cette commande est similaire à tous les autres gadgets GadTools sauf que les options sont entrées dans une même chaîne à la fin de la ligne de commande et sont séparées avec le caractère "|" (et non pas "1" comme écrit dans le manuel français...).

Le numéro de l'entrée choisie sera indiqué par EventCode que nous retrouvons aussi pour les ListView. Le ListView est un gadget qui permet à l'utilisateur de faire son choix dans une liste d'options. Là encore, l'utilisation de ce gadget est un peu particulière. Le programme ira en effet chercher dans une liste le nom des options et leur numéro. Mais encore une fois, un bon exemple vaut mieux qu'un long discours. Ce petit Source qui ne fait... rien (!) illustrera parfaitement les deux paragraphes précédents (voir code source).

Autres gadgets

Vous pouvez aussi coller des brosses IFF sur vos gadgets avec la commande GTShape (similaire à la commande LoadShape - cf numéros précédents), mais attention, le nombre de couleurs est limité à quatre. Les gadgets GTText et GTNumber sont quant à eux destinés à n'être que lus. L'utilisateur ne pourra en aucune manière agir dessus. Les gadgets CheckBox sont des cases à cocher offrant un choix limité à l'utilisateur : il n'y a que deux positions, soit la case est cochée, soit elle est vierge ce qui signifie que l'option n'est pas activée. Attention toutefois, leur fonctionnement est relativement compliqué.

Enfin, les GTButton sont des gadgets tout simples avec du texte à l'extérieur ou à l'intérieur ($10). Ce sont les boutons qui servent à valider: Cancel, OK, Save... Pour les utiliser, rien de plus simple : il suffit de les déclarer et de vérifier si l'utilisateur a agi dessus. Si oui, alors effectuez l'action associée (quitter, sauver...).

Pour conclure, cet article sur la gadtools.library, je voudrais vous dire que je n'ai pas expliqué toutes les fonctions de cette bibliothèque. Je me suis contenté de décrire les plus importantes à mon goût et les plus difficiles à mettre en oeuvre. La prochaine fois, on essayera peut-être de se construire une interface graphique pour Lha. Bonne programmation !

WbToScreen 0
ShowScreen 0

NEWTYPE .lview
    pos.w
    nom$
End NEWTYPE

Dim List MaListe.lview(100)

succes=AddItem(MaListe())
If succes=-1 Then MaListe(i)s=1,"Youpi !"

Window 0,0,0,330,135,$143F,"GadTools Test",1,2

GTCycle 0,1,0,-5,150,13,"",0,"Choix1 | Choix2 | Choix3"
GTListView 0,2,0,20,150,75,"",$800,MaListe()
GTString 0,3,160,-5,125,13,"",0,150
GTInteger 0,4,160,30,125,13,"",$4,0
AttachGTList 0,0

Repeat
ev.l=WaitEvent
    If ev=$40
        If GadgetHit=1
            choix=EventCode
            GTSetInteger 0,4,choix
        EndIf
        If GadgetHit=2
            x=EventCode
            GTSetString 0,3,MaListe(x)om
        EndIf
    EndIf
Until ev=$200

Free Window 0
Free GTList 0
Forbid_
End


[Retour en haut] / [Retour aux articles]