Satimage Précédent | Suivant
Installation d'un menu contextuel
Accueil Documentation Smile Personnalisation de Smile Installation d'un menu contextuel  
  • Il est possible d'installer un menu contextuel personnalisé pour les text windows, les dialogs, les graphic windows et les graphic views.
  • Installer un menu contextuel consiste à compléter le script d'un objet, et de ce fait le menu contextuel n'est enregistré que si le script est enregistré avec la fenêtre. C'est le cas des text windows et des dialogs. C'est également le cas pour les graphic windows et les graphic views qu'elles contiennent pourvu qu'elles aient été sauvées au format Bundle.
  • Installer un menu contextuel consiste à définir deux fonctions dans le script d'un objet : CustomMenuItems, qui est appelé lorsque l'utilisateur effectue un ctrl-clic (ou un clic droit) sur la fenêtre ou l'objet, et do menu, qui est appelé lorsque l'utilisateur sélectionne un élément du menu contextuel.
    • CustomMenuItems(the_object) doit renvoyer les éléments à afficher dans le menu contextuel, sous forme d'une liste de textes. CustomMenuItems(the_object) reçoit une référence à l'objet sur lequel le clic a été effectué.

      Essayez de ne pas inclure dans la liste de textes renvoyés par CustomMenuItems(the_object) une chaîne de quatre caractères, car il pourrait en résulter un conflit avec les commandes du menu de Smile.
    • définissez une fonction do menu pour gérer les appels de menu. Lorsque l'utilisateur choisit un élément du menu contextuel, le script de l'objet reçoit l'événement do menu the_cmd to the_objectthe_cmd est la commande du menu (l'élément de menu sélectionné, sous forme de texte) et the_object est la référence à l'objet sur lequel le clic a été effectué.
  • Pour renvoyer au comportement par défaut, utilisez le mot-clé continue. Ainsi, l'exemple ci-dessous installe une liste de menus supplémentaires en plus du menu contextuel par défaut.
    on CustomMenuItems(the_object)
        set the_list to {"New run", "Stop run", "-"}
        set the_builtin to continue CustomMenuItems(the_object)
        return the_list & the_builtin
    end CustomMenuItems
  • Il est possible de créer des menus contextuels possédant des sous-menus. La liste de textes renvoyés par la fonction CustomMenuItems peut désormais contenir également des records {name:theSubMenuName, menu:theSubMenuList}.
    on CustomMenuItems(the_object)
        set the_list to {"a", {name:"b", menu:{"1", "2", "3", {name:"4", menu:{"x", "y", "z"}}}}, "c", "-"}
        set the_builtin to continue CustomMenuItems(the_object)
        return the_list & the_builtin
    end CustomMenuItems
  • Il est important d'appeler le comportement par défaut dans la fonction do menu, car autrement il deviendrait impossible d'enregistrer ou même de fermer la fenêtre par les moyens habituels.
    Par exemple une fonction do menu définie dans le script d'une graphic window devrait renvoyer l'événement do menu comme dans l'exemple ci-dessous :
    on do menu the_cmd to theView
        if the_cmd is "New run" then
            -- perform new run
        else if the_cmd is "Stop run" then
            -- stop current run
        else
            continue do menu the_cmd to theView
        end if
    end do menu
  • Le menu contextuel reconnaît les métacaractères habituels des menus, où qu'ils soient dans le texte définissant le menu.
    ( (parenthèse ouverte)
    grise l'élément de menu
    <B <I <U
    affichent l'élément de menu en gras, italique ou souligné
    - (moins) tout seul
    affiche une ligne de séparation dans le menu
English version
Copyright ©2008 Paris, Satimage