Satimage Précédent
Réalisation d'un dialogue non modifiable
Accueil Documentation Smile Les interfaces utilisateur Réalisation d'un dialogue personnalisé Réalisation d'un dialogue non modifiable  
Empêcher les utilisateurs d'éditer votre dialogue
Vous pouvez, jusqu'à une certaine limite, empêcher les utilisateurs d'éditer votre dialogue. Il n'existe cependant pas de protection absolue : les utilisateurs experts pourront toujours éditer votre dialogue d'une manière ou d'une autre.
  • Vous pouvez attraper l'événement de menu qui permet de passer le dialogue en mode édition. Il s'agit de la commande de menu Edit. Pour cela, insérez dans le script de votre dialogue la fonction suivante :
    on do menu the_cmd to the_dialog
        if the_cmd is "Edit" then return
        continue do menu the_cmd to the_dialog
    end do menu
  • Vous pouvez aussi effacer l'élément de menu Edition ▸ Mode édition. Vous pouvez le faire par exemple dans la fonction prepare du script de votre dialogue :
    on prepare the_dialog
        set n to count menu item of menu "Edit"
        set visible of menu item (n-1) of menu "Edit" to false -- separator line
        set visible of menu item n of menu "Edit" to false -- "Edit mode"
        [...]
    Cela est réversible, un script peut tout à fait rétablir cet élément de menu.
Dans les deux cas, l'utilisateur pourra encore passer le dialogue en mode édition par script :
set the_dialog to window 2
set mode of the_dialog to true -- en mode édition
set mode of the_dialog to false -- en mode normal
L'utilisateur peut également éditer le script du dialogue par script :
EditObjectScript(the_dialog)
Empêcher l'utilisateur d'éditer le script d'un dialogue
Vous pouvez empêcher l'utilisateur d'éditer le script d'un dialogue. Il s'agit d'une solution robuste : l'utilisateur sera capable d'éditer le dialogue, mais ne verra jamais le code source de votre script. Le mécanisme consiste à stocker un script séparément, enregistré en tant que script non-éditable, et de le charger "manuellement" dans le dialogue.
  • Construisez votre dialogue normalement.
  • Une fois votre dialogue fini, enregistrez le script du dialogue dans deux fichiers séparés : l'un enregistré normalement pour pouvoir le modifier ultérieurement, et l'autre en tant que script non-éditable.
  • Par script, définissez le script du dialogue avec le script non-éditable :
    set the_script to load script (the_run_only_alias)
    set script of the_dialog to the_script
    save the_dialog in 0
Le script du dialogue est maintenant non-éditable. Pour le rendre à nouveau éditable, vous devez le redéfinir à un script éditable :
set script of the_dialog to "property whatever:0"
Puis vous pourrez à nouveau l'éditer (mais du fait que vous ne pouvez pas récupérer le code source d'un script non-éditable, vous devrez vous servir de votre script de sauvegarde).
Retour
English version
Copyright ©2008 Paris, Satimage