Satimage Précédent | Suivant
prepare
Accueil Documentation Smile Les objets de Smile La programmation des objets Rédaction d'un script objet prepare  
  • Lorsque Smile crée un objet, il envoie l'événement prepare au script de l'objet, juste avant de le rendre visible. Smile crée un objet quand vous ouvrez un document, ou quand vous créez un nouvel objet. Par exemple, lorsque vous double-cliquez sur un bundle de SmileLab, il s'ouvre comme une graphic window dans Smile : le script de la graphic window reçoit l'événement prepare juste avant de devenir visible. Il en est de même avec les text windows et les dialogs.

    Pour gérer l'événement prepare, installez dans le script de l'objet une procédure telle que ci-dessous :
    on prepare the_object
        -- initialisation de l'objet
    end prepare
    the_object est une référence au propriétaire du script, à savoir l'objet qui est en train d'être créé. S'il est nécessaire de procéder à des initialisations au moment où l'objet s'ouvre, vous devez les programmer dans cette procédure.

  • Dans Smile, les fenêtres invisibles n'ont pas d'index. Quand la procédure prepare s'exécute, son propriétaire (si c'est une fenêtre) n'est pas encore visible, par conséquent window 1 désigne vraiment la fenêtre visible au premier plan, et non pas la fenêtre qui en train de se créer. Par exemple quand on ouvre un dialogue alors que la fenêtre de premier plan est un terminal AppleScript, celui-ci est la window 1 au moment où la procédure prepare du dialogue se lance. Il deviendra la window 2 immédiatement après.

  • Votre procédure prepare peut parfaitement elle-même appeler la commande delete pour détruire l'objet qui est en train de se créer. On peut donc, par exemple si une condition nécessaire n'est pas remplie, annuler la création d'un objet dans sa procédure prepare.

    Voici par exemple une procédure qui, installée dans le script objet d'un document, lui interdit de s'ouvrir si l'utilisateur ne fournit pas le mot de passe voulu.
    on prepare the_window
        if askpassword("Indiquez votre mot de passe :") is not ":-)" then
            FatalAlert("Désolé, ce document est protégé.")
            delete the_window
            return
        end if
    end prepare
English version
Copyright ©2008 Paris, Satimage