Satimage Précédent
Installation de widgets dans une graphic window
Accueil Documentation SmileLab Scripting Personnalisation de l'interface utilisateur d'un graphique Installation de widgets dans une graphic window  
  • 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
Sélectionnez le menu Fichier ▸ Enregistrer puis Fichier ▸ Fermer.

Vous pouvez maintenant déplacer les widgets à la souris pour voir la courbe de Bezier changer.
English version
Copyright ©2008 Paris, Satimage