AppleScript permet de manipuler des références à des objets, c'est ce qui permet de désigner les différents éléments de l'application.
-
Le dictionnaire de Smile définit une classe application. Il n'y a qu'un objet de classe application, c'est l'application Smile elle-même. La rubrique Elements de la classe application donne la liste des classes d'objets auxquels on s'adresse directement, par nom, par numéro ou par id. Par exemple la classe graphic window fait partie de ces Elements, donc les lignes suivantes sont des références correctes (mais pas forcément valides, l'objet correspondant peut ne pas exister).
set theWind to graphic window 1
set theWind to graphic window "untitled"
Le dictionnaire indique pour chaque classe si les objets de la classe sont susceptibles ou non de contenir eux-mêmes des éléments. Par exemple, un objet de type dialog peut contenir des objets de type dialog item.
-
Pour désigner un objet élément d'un autre objet, utilisez la préposition of pour décrire sa hiérarchie, qui démarre implicitement de l'application elle-même :
set theCurve to curve 3 of plot view "Temperatures" of theWind
On utilise ce type de référence, par exemple pour modifier une propriété :
set theCurve to curve 3 of plot view 1 of graphic window "untitled"
set pattern style of theCurve to 8
Naturellement, excepté la classe application, chaque classe figure en tant qu'élément dans au moins une classe.
À chaque fois que ceci n'est pas susceptible d'engendrer de confusion, vous pouvez désigner un élément par le terme générique item suivi du rang de l'élément. Par exemple, les deux expressions ci-dessous désignent le même objet, pourvu que la graphic window ne contienne pas d'autre objet que des plot views :
set theCurve to curve 3 of plot view 1 of graphic window "untitled"
set theCurve to item 3 of item 1 of graphic window "untitled"
-
Différentes descriptions peuvent désigner le même objet.
window 2
-- text window id 1
window "Worksheet"
-- text window id 1
Parmi toutes ces descriptions, la description canonique (celle que Smile utilise en interne, et qu'on obtient à chaque fois qu'on évalue une référence à un objet) est celle par id. Chaque objet conserve un id unique pendant toute la durée d'une session.
-
La propriété container d'un objet renvoie une référence à l'objet qui le contient.
dialog item 1 of dialog item 9 of dialog "Find"
-- dialog item id 28 of dialog item id 27 of dialog id 14
container of dialog item 1 of dialog item 9 of dialog "Find"
-- dialog item id 27 of dialog id 14
container of container of dialog item 1 of dialog item 9 of dialog "Find"
-- dialog id 14
-
Les objets de Smile ont deux autres propriétés spéciales, properties et whole.
La propriété properties d'un objet renvoie un record qui contient tous les réglages d'un objet.
La propriété whole renvoie en outre le script de l'objet et, le cas échéant, la liste de toutes les propriétés de ses éléments (et ainsi de suite hiérarchiquement). Ces propriétés sont destinées à l'enregistrement et au clonage des objets.
|