Obligement - L'Amiga au maximum

Lundi 27 mars 2017 - 18:28  

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


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


En pratique : CanDo - présentation et premier exemple
(Article écrit par Guy Beteille et extrait d'Amiga News - décembre 1991)


Qui n'a pas pesté devant son clavier-moniteur-micro en se disant "Ah ! Si je pouvais..." (...programmer des boutons, des trucs à cliquer, à double-cliquer, des fenêtres de liste, des animations vantant votre génie accompagnées d'une musique à-la-Rocky-arrivant-sur-le-ring, un éditeur de texte, une base de donnée personnalisée, tout ça avec un aspect pro) ? Qui ? Personne très certainement... Alors, que faire ?

Généralement, sauf étude très informatisée à base d'assembleur et de C, on se retourne avec une certaine appréhension de débutant vers le BASIC (les BASIC qui n'en sont plus), qu'il soit AmigBasic, GFA, AMOS, compilable ou pas... Et on écrit "Hello!" sur son écran, et on est content ! Seulement on en veut plus, et plus encore... le listing s'allonge, les bogues arrivent, les nerfs manifestent ! C'est qu'il faut gérer la souris, les éventuels déplacements d'un curseur, le clavier, des boutons, des menus, ouvrir des écrans, des fenêtres, des requêtes... toujours se dire "et si on fait ça, que se passe-t-il ?". Et bien sûr, il se passe rarement ce qu'on avait prévu ! Après des nuits blanches on se redit "Ah ! Si je pouvais !".

Une réponse est venue du Texas. Il semble que ceux qui se nomment joliment "The CanDo Guys" (Les Gars de CanDo) ont bien compris la situation du néophyte en programmation qui souhaiterait faire plus et surtout exploiter les ressources de son Amiga. Leur réponse c'est CanDo "Tu Peux Le Faire".

Nous allons le faire !

CanDo vous connaissez, The Duke en a parlé dans cet article. L'objet de cette série d'articles sur CanDo c'est d'utiliser CanDo, apprendre à concevoir et à réaliser des applications. Bien sûr il faut commencer par un peu de théorie (je dirais plutôt de philosophie), non pas pour s'assommer d'entrée mais juste pour comprendre comment est organisé CanDo.

Ceci acquis, à vous les tableaux de bord pleins de boutons à cliquer, les fenêtres avec ascenseur, les éditeurs de texte, d'images, de brosses animées, de sons, d'icônes, les petites bases de données, les applications en tout genre... Ne soyons pas chiche : "A vous le monde du multimédia !". CanDo va vous aider à gérer le plus rébarbatif, à vous d'être créatif !

Le langage CanDo

Comme un grand, CanDo possède son propre langage. Celui-ci n'est pas sans rappeler le BASIC, du moins dans sa formulation. Il est en général facile de comprendre une instruction car les formulations sont claires : AnyChangedBuffers, CharsToBegOfLine, GetWord, LoadBrushAnim...

A ce propos, une petite digression... Je ne sais pas si The CanDo Guys ont pris l'idée ailleurs. Toujours est-il qu'ils ont remplacé l'espace qui sépare les mots par la mise en majuscule de la première lettre de chaque mot. Au début c'est surprenant mais notre oeil et notre cerveau s'habituent vite et décoder une instruction CanDo devient amusant. VoiciUnePhraseÉcriteSansEspacePourTesterCeNouveauProcédéDeGraphie (ce sont les traitements de textes qui vont faire une drôle de tête !).

Bien sûr tout est en anglais... Ce n'est pas trop gênant, sauf si l'on veut lire les textes d'aide que l'éditeur offre pour chaque instruction.

Le langage CanDo nous offre 355 instructions, réparties en trois groupes :

1. Les commandes

Une commande est une instruction qui "fait" une action ; il faut souvent lui mettre un paramètre à la suite. Exemple :

Nop ; commande sans effet suivie d'un commentaire (après le point-virgule).
SetWindowTitle "Titre de la fenêtre" ; Changer le titre de la fenêtre.
Let Variable = "J'écris dans la fenêtre" ; Définir une variable.
PrintText Variable,10,10 ; affiche un texte dans la fenêtre.

2. Les fonctions

Elles n'ont pas une action directe, mais elles "retournent" la valeur du résultat de leur action (en principe dans une variable, soit comme paramètre d'une commande). Exemple :

Let Fichier = AskForFileName ("DF0:", "Choisir un fichier.",10,10) ; AskForFileName() ouvre la fenêtre de requête de fichier et retourne le nom du fichier sélectionné.
Let TailleFichier FileSize (Fichier) ; FileSize() donne la taille du fichier.

3. Les variables

Ce sont des variables propres à CanDo, ce n'est pas à nous de les définir, nous pouvons juste lire la valeur qu'elles contiennent. Les valeurs de ces variables sont remises à jour par CanDo. Elles donnent une foule de renseignements, et facilitent ainsi la programmation. Bien entendu nous ne pouvons pas modifier la valeur de ces variables. Exemple :

Let Colonne = TheColumnNumber
Let Ligne = TheLineNumber
Let Caractère = TheCharacter
Let Mot = TheWord
Let TexteLigne = TheLine

En imaginant que vous ayez réalisé un document texte, ces cinq variables d'exemple vous donnent respectivement la position verticale et horizontale du curseur ainsi que le caractère, le mot et le texte de la ligne sur lesquels il se trouve.

Voilà, rien de bien original en somme ! C'est ce que l'on retrouve dans d'autres langages... Oui mais, c'est du CanDo... C'est la façon de concevoir la programmation qui change et qui va permettre au débutant d'arriver à des résultats très sophistiqués, pour peu qu'il se donne la peine d'ouvrir son manuel, ou son Amiga News s'il est très paresseux (l'objet de cet article est de vous familiariser avec CanDo). Voyons donc comment CanDo a été pensé...

La philosophie CanDo

La programmation sous CanDo ne nécessite pas obligatoirement un long listing, et surtout un seul et unique listing. Parfois même quelques lignes suffisent (vous n'espériez pas n'avoir rien à faire tout de même !).

Au contraire elle vous demande de découper votre programme en petites parties, parties qui seront exécutées en fonction d'un événement (généralement liées à un objet)... Ce que vous devez programmer c'est justement ce que doit faire CanDo lorsque survient un événement ! Pour comprendre, détaillons comment CanDo conçoit une application minimum.

Une application est un "Deck" (bureau) et est au minimum composée d'une "Card" (Carte). La carte constitue le noyau de l'application, elle est matérialisée par un écran et une fenêtre (dans la nouvelle version, il est possible d'ouvrir simultanément plusieurs fenêtres. Nous y reviendrons). Puis viennent les "objets" attachés à cette carte. Un objet peut-être un bouton, un menu, un champ de saisie, un document (un mémo ou une liste), une touche du clavier, un chronomètre (timer), un objet "brosse animée", "son" ou "ARexx"...

Carte, fenêtre et objets sont pris en charge par CanDo. Une série d'éditeurs permettent de les définir très facilement en quelques clics ; c'est toute la programmation que l'on vous demande. Par contre, chaque objet est susceptible de produire un ou plusieurs événements (par exemple cliquer un bouton est un événement). A vous de décider si votre application doit intervenir. Si c'est le cas il vous faut écrire un "script" qui sera "attaché" à l'objet et exécuté uniquement si l'événement intervient. Ce script pourra éventuellement passer le relai à une "routine" (sous-programme). Ces routines sont accessibles à tous les scripts et peuvent faire office de macro-commandes (du fait qu'elles acceptent des arguments).

Le schéma suivant tente de vous faire visualiser cette organisation...

CanDo

Pour résumer :
  • CanDo offre des éditeurs...
  • Cartes, objets...
  • Ces cartes, objets... générent des événements...
  • Ces événements exécutent un script...
  • A vous de rédiger ce script !
CanDo

De la pratique

Ce n'est pas clair ? Si ! Mais un exemple serait le bienvenu ! Cliquez sur l'icône "fenêtre" et regardez l'éditeur de fenêtre.

A gauche un choix de boutons (quatre en l'occurrence) permet de définir les différents attributs de la fenêtre, sa dimension, ses couleurs, ses "objets" (bouton de fermeture, barre titre, boutons de profondeur, de redimensionnement) et ses options. A droite cinq boutons d'événements qui vont permettre d'appeler l'éditeur de scripts.

CanDo

Décidons arbitrairement d'ouvrir une fenêtre sur l'écran du Workbench ; cette fenêtre disposera de tous ses objets. Notre programmation consistera à faire changer le titre de la fenêtre chaque fois qu'un événement "fenêtre" surviendra. Que peut-il arriver à cette fenêtre ? Quatre événements qui réveilleront CanDo et nous aussi :
  • On peut la fermer à l'aide du gadget de fermeture.
  • La redimensionner.
  • L'activer en la cliquant.
  • La désactiver en cliquant ailleurs sur le Workbench.
(on peut aussi la déplacer, mais CanDo ne s'y intéressera pas et nous non plus !)

Ce qui signifie que nous devons écrire quatre scripts, un pour chacun des quatre événements que nous voulons contrôler (oubliez le bouton "AppEvent", valable seulement sous Workbench 2.0).

Cliquez sur le bouton "CloseButton", et hop... voilà l'éditeur de script... Que doit faire ce script ? Nous permettre de quitter notre application... Alors tapons "Quit".

CanDo

Cliquons ensuite "OK" pour revenir à l'éditeur de fenêtre. Au tour du bouton "Resized". Nous voulons que le titre de la fenêtre affiche "Je suis redimensionnée !" lorsque on utilise le gadget en bas à droite de la dite fenêtre.

Une seule instruction dans le script de cet événement fera l'affaire : SetWindowTitle "Je suis redimensionnée !". Les scripts des boutons "DeActive" et "Active" utiliseront la même commande. Seul le texte différera. Enfantin non ? La partie programmation est terminée, notre petite application aussi !

Lister une application

Si nous décidons de lister l'application à l'aide de l'utilitaire "ThePrinter" fourni avec CanDo, voici ce que nous obtiendrons :

CanDo
CanDo

Les listings CanDo ne sont pas des plus faciles à lire, bien que très détaillés. Cartes et objets y sont décrits, ce qui noie un peu les scripts et rend mal aisée la compréhension globale de l'application.

La solution, qui n'est pas forcément la plus pratique, est de sauvegarder chaque script et routine sous forme de fichier texte. Cette sauvegarde se fait depuis le menu de l'éditeur de scripts avec l'option "Save Text". Ensuite, il est possible de les éditer avec son éditeur de texte favori et de les récupérer dans CanDo avec les options menu "Load Text" et "Insert Text".

Cette façon de faire qui nécessite de jongler entre deux éditeurs est utile lorsque les listings deviennent plus long. L'éditeur de CanDo n'offrant pas une édition "pleine page" limite en effet la lecture à quelques lignes. Pour la mise au point c'est souvent une gêne...

Un avantage de cet éditeur est de pouvoir éditer des routines depuis l'éditeur de script. Un désavantage est de ne pouvoir éditer des routines que depuis l'éditeur de script... Pour éditer une routine, il faut avec cette nouvelle version, passer obligatoirement par l'éditeur de script qui lui-même ne vient qu'après être passer par un éditeur d'objet... A la longue cela fait beaucoup de clics et beaucoup de perte de temps.

Ceux qui sont juste en mémoire (mémoire Amiga, bien entendu !) et travaillent sans disque dur devront patienter davantage. Mais le résultat en vaut la peine...

Tester son application

Il est possible d'exécuter son application à n'importe quel moment de son édition. Pour cela, activez le bouton "Browser" du tableau principal de CanDo, puis cliquez sur la fenêtre de votre application pour la rendre active... Attention, cette méthode n'est pas sans défaut car il se peut que les scripts associés à la carte ne soient pas exécutés ou que des variables ne soient pas réinitialisées.

Pour éviter ce genre de désagrément il faut dans le menu "Expert" choisir "Dispose Variables", puis cliquer sur le bouton "Goto to Card" (flèche vers le bas) et choisir d'aller à la carte qui doit être exécutée (même s'il n'y a qu'une carte !), et ensuite cliquer "Browse"...

Pour obtenir le menu "Expert" remplacez, dans le fichier Cando.defaults, "ExpertMode = No" par "ExpertMode = Yes". Pour revenir à CanDo, cliquez le bouton "Design"... Le deuxième procédé d'exécution est le choix du "SuperBrowser" dans le menu "Misc". Là, CanDo laisse la place à une minuscule fenêtre sur l'écran Workbench. A la fin de votre test double-cliquez cette fenêtre pour revenir à CanDo.


[Retour en haut] / [Retour aux articles]