Obligement - L'Amiga au maximum

Samedi 16 novembre 2019 - 22:13  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liste des 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


Galeries

 · Menu des galeries

 · BD d'Amiga Spécial
 · Caricatures Dudai
 · Caricatures Jet d'ail
 · Diagrammes de Jay Miner
 · Images insolites
 · Fin de jeux (de A à E)
 · Fin de Jeux (de F à O)
 · Fin de jeux (de P à Z)
 · Galerie de Mike Dafunk
 · Logos d'Obligement
 · Systèmes d'exploitation
 · Trombinoscope Alchimie 7
 · Vidéos


Téléchargement

 · Documents
 · Jeux
 · Logiciels
 · Magazines
 · Divers


Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : DME - Création de menus et de macros
(Article écrit par François Gueugnon et extrait d'Amiga News Tech - août 1992)


Voici une extension de l'article sur l'utilisation de DME, un éditeur de texte créé par Matt Dillon, qui se concentre cette fois sur la création de menus et de macros.

L'heure cruelle du choix a sonné : choisit-on une programmation des touches autre que celle par défaut, se garde-t-on la liberté de programmer les différents paramètres au moment voulu, ou nous préparons-nous des menus donnant accès aux différentes macros ?

Répondre à ces questions est du ressort de chacun. Cependant, par expérience, il est possible de suggérer quelques solutions. La programmation spécifique des touches est valable lorsque l'utilisation est courante, tous les jours, sinon on passe plus de temps à essayer les différentes touches pour retrouver celle qui réalisait la merveille que l'on avait concoctée quelques mois plus tôt.

La définition de nombreuses fonctions, quelle qu'en soit la forme, conduit inévitablement à une sous-exploitation des potentialités. D'autant que l'on n'a jamais fini d'inventer toutes sortes d'exotismes qui encombrent plus qu'ils ne servent.

Deux méthodes sont possibles : la méthode "Top Down", qui consiste à partir d'un ensemble simple à ne créer que ce dont on découvre le besoin constant, et la méthode "Down Top", qui propose l'inverse, c'est-à-dire de procéder à des épurations successives à partir d'un ensemble important. Cette méthode suppose que l'on ne soit pas négligent (ce qui est rarement le cas) et que l'on soit capable de déterminer les fonctions rarement utilisées (ce n'est pas toujours facile à moins de disposer d'un compteur d'utilisation).

Pour les besoins immédiats, nous proposons de garder la préprogrammation des touches par défaut et d'utiliser le moyen du menu mis à notre disposition pour garder les macros que nous allons inventer, sous forme accessible et identifiable aisément. Juste pour en signaler la possibilité, DME offre l'accès constant à la création de menus.

Chacun pourra installer la solution ou la combinaison des solutions selon ses goûts et ses besoins.

Création de menus et sous-menus

Le jeu d'instructions qui permet la création, l'activation et l'annulation de menus est le suivant :
  • MENUADD header item cmd pour ajouter une colonne de menu.
  • MENUDEL header item pour effacer un élément (item) de cette colonne.
  • MENUDELHDR header pour effacer l'en-tête d'un menu et tout le reste.
  • MENUCLEAR pour effacer tout les menus.
  • MENUON pour activer les menus.
  • MENUOFF pour désactiver les menus.
Pour effectuer une commande quelconque, il suffit de presser la touche "Esc" à n'importe quel moment : on voit apparaître une boîte en dessous de la fenêtre courante, et il suffit d'y écrire la commande et de la terminer par "Entrée". Dans notre cas de préprogrammation par défaut, l'appui sur le bouton droit de la souris, qui provoquerait en temps normal l'apparition des menus, provoque l'iconification de la fenêtre courante. Pressons donc "Esc" et écrivons :

MENUADD MENU EFFACELIGNE DELINE

La fonction liée au bouton droit de la souris est maintenant devenue celle qui nous est familière : elle fait apparaître dans la ligne des menus, le menu nommé "MENU" (deuxième terme de la ligne de commande et noté "header" dans la définition de "MENUADD"). Le terme "EFFACELIGNE" correspondant à "ITEM" apparaît dès que le curseur est sur le menu. Quant à "DELINE", qui correspond à "cmd", c'est la commande souhaitée, tirée de la liste des commandes simples répertoriées ou faisant appel à une macro de notre choix.
  • Tout appel à "MENUADD MENU xxx CMD" augmente le menu de l'élément xxx, associé à une commande CMD définie.
  • La commande "MENUDEL header item" efface l'élément spécifié du menu spécifié. Si l'élément est le dernier du menu, le menu lui-même disparaît. Si le menu lui-même est le dernier menu, il disparaît également, entraînant le retour à l'ancienne fonction du bouton droit de la souris (iconification de la fenêtre courante).
  • La fonction "MENUDELHDR header" efface menu et éléments repérés par "header".
  • La fonction "MENUCLEAR" efface tous les menus, avec elle aussi la conséquence évoquée plus haut.
  • Les fonctions "MENUON" et "MENUOFF" activent et désactivent respectivement les menus. La fonction "MENUOFF fait disparaître les menus avec la conséquence citée. La fonction "MENUOFF" les fait réapparaître de façon active.
On voit le parti que l'on peut tirer de tout cela puisqu'une commande ou une macro peut aussi utiliser ces commandes !

Deux précisions :
  • La largeur d'un menu dépend de ce qui est écrit à l'intérieur. On constate que l'on peut écrire plus de menus que la largeur de la fenêtre ne peut effectivement en contenir. Les derniers ne sont alors pas visibles, mais le dernier visible de la fenêtre peut, lorsqu'il est activé, déborder à droite de la fenêtre et (comme on le voit par ailleurs fréquemment) déborder aussi sur le côté gauche de la fenêtre. Cependant, si l'on supprime des menus visibles, ceux qui ne l'étaient pas se rapprochent du côté gauche et par là même, deviennent visibles.

  • Chaque élément ajouté à un menu allonge la taille du menu. Il est possible d'avoir jusqu'à 25 éléments visibles dans un menu et même au-delà. Cependant les éléments supplémentaires se placent sur le sommet du menu, rendant ainsi son exploitation problématique.
Le nombre maximum de menus n'a pas été recherché. Nous ne saurions trop être méfiants car, à moins d'une volonté à expliciter, cette possibilité pourrait bien, un jour, être considérée par l'auteur comme nuisant à l'esthétique de l'ensemble. Et une programmation basée sur cet aspect deviendrait alors caduque. De plus, un menu de 25 éléments ressemblerait assez à ce dont nous voulions nous prémunir quelque lignes plus haut...

Macros DME

Nous allons maintenant aborder la description, la réalisation et le mode d'emploi de macros. Il est précisé en particulier qu'elles doivent se nommer xxx.DME et qu'elles doivent résider dans le répertoire courant, ou dans Rexx:, la recherche s'effectuant d'abord dans le répertoire courant (celui qui contient DME, bien sûr).

Les macros peuvent être tapées à partir de n'importe quel éditeur ou traitement de texte pourvu qu'elles restent en ASCII. DME est tout indiqué pour les générer et les essayer !

On rappelle ici que l'on peut invoquer une macro de trois façons :
  • rx nommacro s'il n' y a pas d'argument à passer.
  • rx1 nommacro arg1 s'il n'y en a qu'un.
  • rx2 nommacro arg1 arg2 s'il y en a deux.
Pour un nombre d'arguments supérieur, on construit selon l'emploi indifférent de rx1 ou rx2, une association telle que :

rx1 nommacro (arg1 arg2 arg3 arg4 arg5)

La parenthèse est nécessaire car l'espace est considéré comme un séparateur et l'argx serait alors pris comme une commande. On ferait de même :

rx2 nommacro (arg1 arg2) 'arg3 arg4 arg5'

Application

Nous supposons être sous l'éditeur DME, en train de composer un logiciel. Il nous apparaît, pour et pendant ce travail, qu'il serait intéressant d'effectuer des sauvegardes qui ne seraient pas écrasées par les suivantes.

Comme d'une part, il est pénible et sujet à des erreurs de devoir taper à chaque fois un nom différent (ce qui est nécessaire pour distinguer les différentes versions) et, que d'autre part, on voudrait avoir l'ordre dans lequel les versions ont été établies, on en arrive à se dire qu'une petite macro qui ferait cela à notre place serait la bienvenue.

On tape alors le programme ARexx suivant :

DME

La ligne 1 commence par un commentaire (léger) qui indique que c'est un programme ARexx. La ligne 2 vérifie qu'il existe sur le disque dur un répertoire nommé "DMEDIR". Si ce répertoire n'existe pas, il est créé sur le champ, conséquence de "IF... THEN". La ligne 3 regarde les fichiers déjà présents dans ce répertoire. S'il n'y en a pas, ligne 4, le premier recevra le numéro d'ordre 1, s'il y en a déjà ils sont rangés dans une table, lignes 5 à 8. Ce n'est pas indispensable de pratiquer ainsi, on aurait pu les compter seulement. Cela pourra être utile si l'on décide d'améliorer la macro en lui faisant repérer ceux qu'on aurait pu effacer, par exemple. Et il est vrai qu'on aurait pu écrire pour répondre juste à la question :

DME

La ligne 10 détermine le nom exact du fichier, qui sera "FICHx", "x" étant le rang d'arrivée du fichier. La ligne 11 commence par un mot réservé qui n'appartient pas à ARexx : SAVEAS, mais qui est reconnu par DME lui-même et qui sauve le fichier courant, celui qu'on est en train de réaliser et qui se trouve pour l'instant dans l'autre fenêtre DME. Le nom et le chemin de sauvegarde sont déterminés par le reste de la ligne 11. Malheureusement pour nos comptes, la sauvegarde de type SAVEAS ajoute une icône au fichier sauvegardé. Comme ça n'arrange pas nos affaires pour le comptage des fichiers, on ajoute la ligne 12 qui fait appel au CLI local par "ADDRESS COMMAND" (spécifique à ARexx) pour effacer ce gêneur. La ligne 13 n'est pas indispensable, encore que l'on ne sache pas très bien ce qui se passe à l'intérieur de tous ces échanges et que régler les problèmes où il faut et quand il le faut ne saurait nuire.

Nous en avons fini avec la définition de la macro. Elle est simple et courte, mais sa puissance est déjà considérable.

Sauvegarder une macro

Nous savons que nous devons sauvegarder cette macro dans le fichier courant en lui donnant ".DME" comme extension.

On tape donc et d'abord "Esc" pour faire apparaître la ligne de commande, et l'on tape :

SAVEAS DH0:ARexx/DME/sauve.dme

La commande "SAVEAS" fait partie des comandes DME. Le chemin d'accès spécifié ici dépend essentiellement de l'organisation de chacun, mais nous avons choisi de nommer ce programme sauve, augmenté de l'extension obligatoire ".dme". L'appui sur la touche "Entrée" déclenche un petit remue-ménage dans le disque et le traditionnel satisfecit "OK" s'affiche dans la ligne des messages de la fenêtre.

Établissement de la commande

On peut alors fermer la fenêtre d'édition de la macro et revenir à celle de travail. Dans celle-ci, on passe en mode commande avec la touche "Esc".

Pour créer un menu, on tape d'abord :

MENUADD FICHIERS SAUVEGARDE (rx sauve.dme)

"MENUADD" crée un menu nommé "FICHIERS". "SAUVEGARDE" est l'élément dans le menu qui est associé à la commande. Il n'y a pas d'argument à passer, on emploie donc la forme simple "rx nomfichier". Notez l'encadrement de la commande par des parenthèses : c'est nécessaire car l'espace compris entre rx et sauve.dme est considéré comme un séparateur et l'ensemble non encadré serait alors interprété comme deux commandes séparées.

Exploitation de la commande

C'est de loin le moment le plus agréable. On vérifie qu'en sauvegardant plusieurs fois de suite un texte ou programme qu'on a écrit, on retrouve dans le répertoire précisé une suite de sauvegardes nommées FICH1, F1CH2, FICH3... FICHn.

Établissement de la commande (bis)

A l'attention de ceux qui préféreraient utiliser une touche pour effectuer cette sauvegarde, voici le moyen d'en préprogrammer une. Imaginons qu'on veuille affecter la touche F10 a cet effet :

MAP f10 (rx sauve.dme)

L'essai est immédiat et concurrent (mais sans conflit) avec la commande précédemment établie pour le menu.

Établissement de la commande (ter)

On supposera ici que l'on ne souhaite pas encombrer la mémoire de l'ordinateur et qu'il n'y a ni réassignation ni menus disponibles. La procédure est encore plus simple, même si elle demande un peu plus de mémoire cervicale et un peu plus de frappe digitale :

rx sauve.dme

Conclusion momentanée

Les possibilités de DME et sa souplesse d'adaptation sont tout à fait étonnantes, eu égard à la rigidité de certains autres programmes. Certes, il est agréable d'utiliser un programme "terminé". Mais c'est un peu comme le prêt à porter : il faut avoir les mêmes goûts ou instincts que le programmeur ou se contraindre à l'emploi proposé avec tous les risques de rejet.

D'autre part, mettre en place soi-même le frontal d'exploitation n'est pas obligatoirement à la portée et/ou du goût de l'exploitant. Enfin, du côté du programmeur, l'effort de définition de l'exploitation est toujours important, et fréquemment un résultat décevant est une cause de l'échec du programme sur le marché, alors que l'idée et la technique interne sont en général excellentes.

Alors doit-on faire appel à des stylistes pour déterminer la meilleure ergonomie ? Une solution moyenne qui pourrait satisfaire un large éventail d'utilisateurs serait de réaliser un bon noyau et de fournir une solution de frontal par défaut, pour lequel le programmeur ne dépenserait qu'une énergie modérée. L'utilisateur pourrait utiliser immédiatement le programme et, au fur et à mesure de l'affinement de son exploitation propre, l'adapter au mieux à ses travaux quotidiens.

ARexx est sans doute le moyen qui, aujourd'hui, est le mieux adapté à de telles réalisations.


[Retour en haut] / [Retour aux articles] [Article précédent]