Gestion des boîtes de dialogue

A l'aide d'AutoCAD, les utilisateurs peuvent concevoir et utiliser des boîtes de dialogue avec leurs applications. L'apparence d'une boîte de dialogue est définie par les fichiers du langage de contrôle des boîtes de dialogue (DCL) Les fonctions d'une boîte sont contrôlées par l'application LISP.
AutoLISP fournit les fonctions suivantes pour l'ouverture et la fermeture des boîtes de dialogue :
done_dialog new_dialog term_dialog load_dialog start_dialog unload_dialog

Avant d'utiliser ces fonctions, vous devez avoir un fichier DCL qui définit la boîte de dialogue. Enregistrez le code DCL indiqué ci-après dans un fichier Exemple.dcl placé dans un répertoire de votre chemin d'accès. Ce fichier DCL contient les instructions définissant la boîte de dialogue "Exemple de boîte de dialogue" contenant un composant de texte et un bouton OK.


bonjour: dialog {
   label = "Exemple de boîte de dialogue";
   :text {
            label = "Bonjour, tout le monde !";
          }
   ok_only;
}

L'affichage d'une boîte de dialogue implique un certain nombre d'étapes. Lors de la première étape, utilisez la fonction load_dialog pour charger le fichier DCL en mémoire et obtenir le numéro d'identification DCL. Une fois le fichier DCL chargé, appelez new_dialog et transmettez le nom de la boîte de dialogue et le numéro d'identification DCL sous la forme d'arguments. Si new_dialog ne renvoie pas nil, appelez start_dialog afin de passer le contrôle de la boîte de dialogue à AutoCAD et à l'utilisateur. Le composant ok_only (bouton OK) étant prédéfini, son action l'est également. Vous affectez en principe des actions et définissez les états et valeurs des composants avant d'appeler start_dialog.

L'action assignée au composant ok_only est done_dialog. Lorsque vous choisissez le bouton OK, AutoCAD transmet l'appel done_dialog à l'application AutoLISP et met fin au dialogue.

Si vous avez enregistré le fichier Exemple.dcl dans un répertoire de votre chemin d'accès, vous pouvez utiliser la fonction AutoLISP suivante pour l'afficher. (Cette version effectue un contrôle d'erreur limité ; sa structure est donc plus facile à visualiser.)


(defun C:AFFICHER( / id_dcl)
  (setq id_dcl (load_dialog "Exemple.dcl"))    ;charge le fichier DCL.
  (if (not (new_dialog "bonjour" id_dcl))          ;initialise la boîte de dialogue.
      (exit)                                                   ;quitte en cas d'échec.
  )
  (start_dialog)                                            ;affiche la boîte de dialogue.
  (unload_dialog id_dcl)                                ;décharge le fichier DCL.
  (princ)
)

La boîte de dialogue apparaît alors ainsi :


La boîte ouverte sur appel de start_dialog reste active jusqu'à ce que l'utilisateur sélectionne un composant (en principe un bouton) dont l'expression d'actions associée appelle done_dialog.