done_dialog

La fonction done_dialog permet de faire disparaître la boîte de dialogue à l'écran. Dans chaque boîte de dialogue doit se trouver au moins un élément, habituellement les boutons OK et Cancel (Annuler),auquel est associé l'action (done_dialog), car dans le cas contraire, on ne pourrait jamais quitter la boite de dialogue.

Si dans la définition d'une boîte de dialogue se trouvent plusieurs fonctions (done_dialog), on peut attribuer à la fonction l'argument supplémentaire [Etat]
c'est un nombre entier qui par la suite permettra d'identifier l'élément par l'intermédiaire duquel la boîte de dialogue a été quittée.

[Etat] C'est un nombre entier positif . La valeur founie à cet argument sera retournée par l'appel de la fonction (start_dialog) qui ouvre une case de dialogue et enclanche le processus de saisie des données.

Pour les tiles de clés accept, cette valeur vaut 1 (pour le bouton OK).
Pour les tiles de clés cancel, cette valeur vaut 0 (pour le bouton Arrêt).

Donc dans un programme AutoLISP on peut écrire :


   (action_tile   "accept"   "(done_dialog 1)")
   (action_tile   "cancel"   "(done_dialog 0)")
   ( rep (start_dialog))
   (cond
      ((= rep 1)
      ;| validation par \" OK \" |;
      ...
      )
      ((= rep 0)
      ;| validation par \" Arrêt \" |;
      ...
      )
      ...
   )

Les valeurs 0 et 1 utilisées comme arguments de la fonction done_dialog ont donc une signification prédéfinie.

On peut fournir en arguments d'autres valeurs à la fonction done_dialog, qui seront retournées par l'appel de la fonction start_dialog.


Exemple:

   (action_tile   "accept"   "(done_dialog 1)")
   (action_tile   "cancel"   "(done_dialog 0)")
   (action_tile   "cle_1"    "(done_dialog 2)")
   (action_tile   "cle_2"    "(done_dialog 3)")
   (setq rep (start_dialog))
   (cond
      ((= rep 1)
      ;| validation par \" OK \" |;
      ...
      )
      ((= rep 0)
      ;| validation par \"Arrêt\" |;
      ...
      )
      ((= rep 2)
      ;| traitement du tile de clé \"cle_1\" |;"
      ...
      )
      ((= rep 3)
      ;| traitement du tile de clé \"cle_2\" |;
      ...
      )
      ...
   )

La valeur rendue par start_dialog est sauvegardée ici dans la variable rep; celle-ci servant ensuite à identifier le traitement approprié à effectuer.

MPORTANT :
Ce mecanisme est utilisé pour les besoins d'accès à l'éditeur graphique en cours d'affichage d'une case de dialogue. Lors de l'affichage d'une case de dialogue, il devient IMPOSSIBLE par exemple de sélectionner une entité à l'écran, désigner un point, etc.