-
Il est possible d'installer dans les fenêtre graphiques des widgets, des objets scriptables que l'utilisateur peut déplacer à la souris.
-
Il n'y a pas d'interface graphique pour créer des widgets : il faut utiliser la commande make new dans un script.
-
Lorsque l'utilisateur clique sur un widget dans une fenêtre graphique puis le déplace, Smile envoie l'événement pick in au script de la fenêtre graphique qui contient ce widget.
Exemple
L'exemple suivant crée une fenêtre graphique contenant quatre widgets permettant de modifier une courbe de Bézier.
L'exemple consiste en deux étapes. Tout d'abord, avec un premier script, une nouvelle fenêtre est créée avec quatre widgets. Dans un second temps, il faut définir le script de la fenêtre graphique pour gérer les widgets.
Pour créer les objets, exécutez le bloc suivant dans un terminal AppleScript :
set w to make new graphic window with properties {name:"Bezier", never save:true}
set a to (w's pagewidth) / 6
make new widget at w with properties {point:{a, 2 * a}, pattern style:2, fill color:{0, 0, 0, 1}, pattern size:5}
make new widget at w with properties {point:{2 * a, a}, pattern style:2, fill color:{1, 1, 1, 1}, pattern size:5}
make new widget at w with properties {point:{5 * a, 2 * a}, pattern style:2, fill color:{0, 0, 0, 1}, pattern size:5}
make new widget at w with properties {point:{4 * a, a}, pattern style:2, fill color:{1, 1, 1, 1}, pattern size:5}
Maintenant sélectionnez Graphiques ▸ Editer le script pour ouvrir le script de la fenêtre. Une fenêtre de script (colorée) s'ouvre. Copiez les fonctions suivantes dans cette fenêtre de script :
|
on pick in w at x
try
target object of x
refresh(w)
end try
end pick in
on prepare w
refresh(w)
end prepare
on refresh(w)
set {e1,c1,e2,c2} to point of every widget of w
BeginFigure(w) -- If you don't use BeginFigure, you may need to call 'draw w' instead
SetPenWidth(0.5)
MoveTo(e1)
BezierPath(c1, c2, e2)
DrawPath(2)
SetPenWidth(0.25)
PolyLine({e1, c1})
PolyLine({e2, c2})
DrawPath(2)
EndFigure()
end refresh
|
|