Suivez-nous sur X
|
|
|
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,
ALL
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
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
|
|