-
Lorsque l'utilisateur clique dans une graphic view, ou dans une graphic window en dehors de toute graphic view, Smile envoie l'événement suivant au script de la graphic window ou de la graphic view concernée :
pick in the_object at the_record
the_object est une référence à l'objet qui possède le script.
the_record peut contenir jusqu'à trois champs : point, step et target object.
- point est une liste de deux nombres réels, les coordonnées de la souris.
-
si le clic est effectué à l'intérieur d'une vue 1D ou 2D, les coordonnées sont en unités utilisateur, c'est-à-dire dans le système de coordonnées des axes. Ils restent dans ce système de coordonnées tant que la souris n'est pas relâchée.
-
si le clic est effectué sur une surface dans une vue 3D (view3d), les coordonnées sont constituées de trois nombres, correspondant aux coordonnées du point de la surface qui a été cliquée, pour autant que la souris soit au-dessus de la surface.
-
si le clic est effectué en dehors de toute vue graphique (même si par la suite la souris est déplacée sur une vue graphique), les coordonnées sont en pixels, dans le système de coordonnée de la graphic window.
- step est un entier pouvant prendre les valeurs suivantes :
- 1
-
l'utilisateur vient d'appuyer sur le bouton de la souris
- 2
-
l'utilisateur déplace la souris, le bouton étant maintenu enfoncé : l'événement pick in est envoyé à chaque fois que la position de la souris change
- 3
-
l'utilisateur relâche le bouton de la souris
- 4
-
envoyé lors d'un double-clic
- target object est une référence à l'objet cliqué. Il n'est présent que dans les deux cas suivant :
-
si le clic est effectué sur une surface dans une vue 3D, target object est une référence à la surface,
-
si le clic est effectué sur un widget dans une graphic window, target object est une référence à ce widget.
-
Pour retrouver les coordonnées en pixels à partir du champ point donné en coordonnées utilisateur, utilisez la commande convert coordinates.
on pick in the_view at the_record
set userPt to point of the_record
set pixelPt to convert coordinates userPt in the_view
end pick in
-
Le comportement de la souris que vous pouvez installer en définissant une fonction pick in dans le script d'un objet remplacera le comportement par défaut (qui affiche les coordonnées de la souris) à moins que vous n'utilisiez dans cette fonction une instruction continue comme dans l'exemple ci-dessous.
Exemple
L'exemple suivant, installé dans le script d'un plot view, créera un nouveau point dans une courbe (qui sera créée si nécessaire) à chaque clic de souris à l'intérieur la vue graphique.
on pick in the_view at the_record
continue pick in the_view at the_record
set theStep to step of the_record
if theStep is not 1 then return
set {x, y} to point of the_record
try
set c to curve 1 of the_view
on error
set c to make new curve at the_view
set xdata of c to {0}
set ydata of c to {0}
set line style of c to 1
set pattern style of c to 1
end try
set xdata of c to (get xdata of c) & {x}
set ydata of c to (get ydata of c) & {y}
set limits of the_view to {0, 1, 0, 1}
draw the_view
end pick in
Pour essayer ce script d'exemple, procédez comme suit :
-
Exécutez tout d'abord le script suivant de façon à créer le graphique.
set w to make new graphic window
make new plot view at w
-
Sélectionnez le menu Graphiques ▸ Editer le script puis choisissez le plot view. Cela ouvrira le script du plot view.
-
Recopiez le script précédent, enregistrez et refermez la fenêtre de script via le menu Fichier.
Maintenant cliquez à l'intérieur du plot view pour créer de nouveaux points.
|