6. MNU

6.1 Conventions d'utilisations


Les sélections dans les différents menus se font en utilisant les flèches ainsi que dans les boîtes de dialogue. L'utilisation de la souris (hormis les pointages graphiques) est à déconseiller pour un travail rapide (sauf pour les individus possèdant 3 mains).
La touche correspond à une confirmation.
La touche correspond à une annulation de la commande en cours et peut avoir la même signification que la sélection de l'item [non] dans les choix.

Exemple:
Voulez-vous continuer ?
______________________




Dans ce cas donne le même résultat que la sélection de [non] puis la frappe de . La touche donne une aide contextuelle, dans les champs de saisie, elle permet de choisir une option après sélection et confirmation avec
.

6.2 Programmation

MNU permet de créer des programmes de type batch tout en bénéficiant d'une interface utilisateur comprenant menus et boîtes de dialogue.

6.2.1 Les menus

Pour chaque item on utilise le prefixe "-" puis avec "=" on donne le nom du programme à lancer.
Errorlevel 127 correspond à la sortie du menu suite à la frappe .
Exemple d'une boucle principale.
echo off
cls
call init
cls
goto top1
:top
del doit.bat>nul
:top1
mnu -Print=mpr-Edit=edimg-Images=imgs-Files=mfiles>doit.bat
command /C doit>%o%
%d%
if exist doit.bat goto top
mode co80
echo Bye...

Le préfixe "#" permet d'indiquer le niveau de menu sans indication c'est le menu racine qui est défini avec pour particularité un calage en 0,0 et une boîte de dialogue demandant confirmation de la sortie de ce menu.
Exemple d'un menu de premier niveau.
:top
mnu #1-Infos=infos-Filtres TGA=mfilt-Import TGA=mtga>doit.bat
if errorlevel == 127 goto end
command /C doit
goto top
:end

6.2.2 Les Boites de dialogue

6.2.3 Les saisies

On utilise le switch /d , puis on donne un titre à la boîte en le délimitant par des crochets carrés. Chaque invite est considéré comme un item suivit de sa valeur au premier appel de la boîte. Il est possible de donner la longueur du champ de saisie en préfixant cette longueur par un "#", dans ce cas au premier appel c'est un champ vide qui sera présenté. MNU mémorise après confirmation de la saisie les valeurs des champs saisis qui seront restituées lors d'un prochain appel./D s'utilise de la même manière pour remplacer les paramètres manquant par *.

"#nnh" la saisie ne peut se faire que par l'aide. A la sortie de la boîte de dialogue, un message sera généré suivit des valeurs des différents champs. Dans le cas d'une sortie par aucun message ne sera généré et l'errorlevel==127.
mnu /d~edimgf [ Edition ]-Fichier d'entrée=#24>doit.bat
doit



Qui génèrera la boite de dialogue:

Edition
Fichier d'entrée




en proposant le dernier fichier utilisé dans le même contexte.

En utilisant "/unn" il est possible de condamner la saisie à partir du nnieme item, seules les valeurs contenues dans une aide peuvent être acceptées. Ceci est particulièrement utile pour les valeurs calculées.

Il est possible de forcer la valeur de la variable comme étant celle de la ligne de commande en utilisant le préfixe "/f". "/F" permet de laissée la longueur du champ identique à la longueur précédente.

Si le deuxième caractère du titre est un point d'exclamation le message sera clignotant.

6.2.4 Les alertes

On utlise le préfixe "/a".
mnu /a [ Dongle absent ]-Ce logiciel nécessite un dongle !=OK

Le préfixe /A oblige une réponse du clavier en mode enchainé.

6.2.5 Les questions

On utilise le préfixe "/y" , à la sortie de la boîte de dialogue, l'errorlevel=1 correspond à une réponse non, la réponse oui n'entraine pas d'errorlevel.
mnu /y [ %3 ]- Ce fichier image va être créé =y
if errorlevel==1 goto fin
xmap <%1/n%2 /j1 /D%4 /m /vf >%3
edimgr
:fin

6.2.6 Les affichages

On utilise l'indicateur "/X" avec une commande, il n'y a pas d'attente clavier et l'écran est laissé en l'état.
mnu /a/X [ Patientez ]-Je calcule...=OK

6.2.7 Les lectures de variables

On utlise le prefixe "/v" et le contenu des variables de la ligne de commande est affiché en sortie.
mnu /v-Rayon de la terre=?-Facteur K=?>parms

6.2.8 Les écritures de variables

On utilise le prefixe "/v/f" et les variables recevront la valeur définit dans la ligne de commande. Pour conserver la longueur de la variable précédente on utilise "/v/F".
mnu /v/f-Age du capitaine=45

6.2.9 Message par variable

On utilise l'indicateur "/E" et la variable dos tilde sera actualisée à la valeur du message. Ceci fonctionne pour l'ensemble des messages habituellement envoyé sur le périphérique de sortie standard.
mnu /v/E-Age du capitaine=45
set
~=45

6.2.10 Reformattage des messages

On utilise "/k" pour supprimer tous les espaces des messages, ce qui correspond à une concaténation des éléments.
On utilise "/K" pour ne laisser qu'un espace à la fin de chaque élément.

6.2.11 Identification

L'identification se fait par affectation d'une variable. le numéro de série et le numéro OEM étant formattés sur cinq digits.
mnu /v/f/#-Numéro de série=?????XXX
mnu /v/f/o#-Numéro 0EM=?????

Les 5 premiers caractères seront remplacés par le numéro de série. Si le premier caractère est un D alors il s'agit d'une version de démonstration et l'errorlevel = 255. Si l'errorlevel = 128 alors il n'y a pas de dongle de connecté.

6.2.12 Message par variable

6.2.13 RET/LF inconditionnel

Le flag /r génère un return linefeed à la fin du message quelque soit le contexte.

6.2.14 Squelette consonnantique

Permet de connaitre le squelette consonnantique d'une variable sous la forme du nom de fichier correspondant à l'environnement courant.
Exemple pour un nom de fichier d'aide.
mnu /sp -Age du capitaine=?

Exemple pour un nom de fichier de valeur de variable.
mnu /sv -Age du capitaine=?

6.3 Le mode enchainé

C:>set &#=ON

En positionnant la variable dos à ON, les variables globales seront acceptées comme paramêtres à l'appel des boîtes de dialogues et la frappe de sera simulé à l'appel de MNU tant que le mode sera ON.

6.4 Syntaxe

Il est possible d'utiliser le signe "-" dans un item en tant que trait d'union. mnu /y -Voulez-vous continuer ? =ok Le signe "-" devant un nombre est toujours interprété comme faisant partie du nombre. mnu /v/f-Valeur du point=-456

6.5 Edition des aides et des programmes.

Il est nécessaire de posséder un sous-directory hlp dans le directory de travail ou de définir le path utilisé par les aides dans la variable DOS @. appelle le fichier d'aide et permet l'édition de l'aide. appelle l'ensemble des fichiers de programmation ouverts au dernier appel. Pour le cas d'un premier appel c'est le fichier de programmation correspondant au niveau de l'arborescence qui est ouvert. Il est possible d'utiliser l'éditeur de son choix.
/r permet de ne pas générer ret lf dans les sorties
/k tue tous les espaces dans la sortie
/K laisse un seul espace pour chaque item dans la sortie