Pour faire en sorte que votre dialogue lance Smile dans une configuration minimale, de façon à restreindre l'interface utilisateur au strict nécessaire requis par votre dialogue, vous aurez besoin de gérer 1 - la Worksheet, 2 - les menus, et éventuellement 3 - la fermeture de votre dialogue, par exemple pour faire en sorte de quitter Smile lorsque l'utilisateur ferme le dialogue.
Cette page inclut un lien pour télécharger un exemple d'un tel dialogue.
-
Après avoir installé Smile pour la première fois sur une machine, si l'utilisateur double-clique sur le dialogue et lance Smile pour la première fois, la fenêtre Worksheet s'ouvrira avec un message de bienvenue. Si ce n'est pas ce que vous souhaitez, vous pouvez fermer la Worksheet à l'ouverture de votre dialogue. De plus, vous pouvez désactiver l'ouverture automatique de la Worksheet, de façon à ce que la prochaine fois elle n'apparaisse plus du tout. Pour faire cela à l'ouverture du dialogue, vous devez le programmer dans la fonction prepare.
Nous vous recommandons de n'exécuter ces étapes qu'au premier lancement de l'application Smile sur la machine des utilisateurs. Autrement, l'utilisateur est soit déjà familier avec la Worksheet ou bien celle-ci est déjà désactivée. Le nombre de fois où l'application a été lancée est donné par la variable permanente my nRuns.
Voici un exemple d'un extrait de script permettant de gérer la Worksheet :
on prepare theDlog
[...]
HandleFirstWorksheet()
[...]
end prepare
on HandleFirstWorksheet()
if (get my nRuns) is not 1 then return
try
delete window "Worksheet"
set my gWantWorksheet to false
end try
end HandleFirstWorksheet
-
Lorsque votre dialogue lance Smile, tous les menus de Smile sont accessibles, alors que vous souhaitez sans doute les restreindre à ceux strictement nécessaires à votre application. Par exemple, vous ne voulez pas que l'utilisateur puisse éditer votre dialogue, ou créer une nouvelle fenêtre Unicode par inadvertance. Utilisez la propriété visible des menu items et des menus. Pour identifier les menus et les menu items, utilisez leur propriété name. Même les menus invisibles ont un index, et cet index est permanent. Par exemple, dans Smile 2.6.5 menu 7 sera toujours le menu "Dialog" même lorsqu'il n'est pas visible.
Nous vous recommandons d'adapter les menus uniquement si les utilisateurs n'étaient pas déjà en train d'utiliser Smile. Vous pouvez pour cela demander si une autre fenêtre que votre dialogue est déjà ouverte, comme dans l'exemple ci-dessous. Notez bien que lorsque Smile exécute la fonction prepare du dialogue à son ouverture, celui-ci n'est pas encore visible et n'a donc pas d'index : la fenêtre juste derrière le dialogue une fois ouvert (si elle existe) est encore à ce moment la window 1.
L'exemple suivant montre comment retirer les menus Fichier, Texte, Script, Scripts et Dialogue, et comment enlever certains éléments du menu Edition :
on prepare theDlog
[...]
HideUselessMenusIfAlone()
[...]
end prepare
on HideUselessMenusIfAlone()
try
set w to window 1
return
end try
repeat with i in {2, 4, 5, 6, 7}
set visible of menu i to false
end repeat
repeat with i from 9 to 17
set visible of menu item i of menu 3 to false
end repeat
end HideUselessMenusIfAlone
Les menus Texte, Script et Dialogue redeviendront automatiquement visibles lorsque des fenêtres concernées par ces menus viendront au premier plan. Par contre, il est de votre responsabilité de rendre à nouveau visibles les menus Fichier et Scripts ainsi que les éléments manquants du menu Edition lorsque l'utilisateur referme votre dialogue.
-
Lorsque l'utilisateur ferme le dialogue, vous devez réinitialiser les menus que vous avez modifiés, et si l'utilisateur n'utilise pas Smile pour autre chose, vous devez éventuellement quitter Smile. De façon à pouvoir agir lorsque le dialogue est supprimé, programmez cela dans la fonction delete.
Pour réinitialiser les menus, utilisez simplement les même lignes que pour les cacher, il suffit de régler les propriétés visible à true.
Pour quitter, utilisez la commande quit.
Vous pouvez effectuer un test pour savoir si une autre fenêtre est visible, et choisir de ne pas quitter dans ce cas. Notez que lorsque Smile exécute la fonction delete du dialogue, celui-ci est déjà invisible et n'a plus d'index : la fenêtre qui va être active après la fermeture du dialogue (si elle existe) est déjà la window 1. Voici un exemple de script :
on delete theDialog
[...]
QuitIfAlone()
[...]
continue delete theDialog
end delete
on QuitIfAlone()
try
set w to window 1
return
end try
quit
end QuitIfAlone
Notez bien que vous devez renvoyer l'événement delete avec l'instruction continue pour que Smile supprime effectivement le dialogue.
Nous fournissons ci-dessous un lien pour télécharger un exemple. Cet exemple est un dialogue émulant un chronomètre avec des boutons Start/Stop et Reset. Si vous l'ouvrez alors que vous êtes déjà en train d'utiliser Smile, il n'affectera pas votre Worksheet ni vos menus, et Smile ne quittera pas lorsque vous le fermerez. Si Smile n'est pas lancé et qu'un nouvel utilisateur double-clique sur le dialogue, celui-ci fermera la Worksheet et minimisera les menus de Smile, et quittera Smile à la fermeture du dialogue.
|