Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Applescript - Erreur lors de l'affichage d'un dialogue

17 réponses
Avatar
Lionel Mychkine
Soit le code suivant :

tell application "Finder"
display dialog "Mon message personnalisé" with icon stop ¬
buttons {"OK"} default button 1
end tell

Le dialogue s'affiche avec un seul bouton (rouge) dans la barre de
titre. Curieux, j'ai cliqué sur ce bouton pour voir ce qui se passait.
En fait la fenêtre de dialogue se ferme et il ne se passe rien; le
script continue de s'exécuter comme si aucune action n'était survenue.
Pour y mettre fin il faut le forcer à quitter.

J'ai tenté d'intercepter une éventuelle erreur en utilisant
l'instruction try mais cela n'a rien changé.

Comment, dans le script, intercepter un click sur le bouton de clôture
du dialogue ?

--
Lionel Mychkine

10 réponses

1 2
Avatar
Patrick Stadelmann
In article <4b9f4c9a$0$23905$,
Lionel Mychkine wrote:

Soit le code suivant :

tell application "Finder"
display dialog "Mon message personnalisé" with icon stop ¬
buttons {"OK"} default button 1
end tell

Le dialogue s'affiche avec un seul bouton (rouge) dans la barre de
titre.



???

Ici en 10.5.8 le dialogue affiche l'icône "Stop", le message et un
bouton "OK" qui est le bouton par défaut.

Comme ici, pas sans le bouton "Cancel".

Curieux, j'ai cliqué sur ce bouton pour voir ce qui se passait.
En fait la fenêtre de dialogue se ferme et il ne se passe rien; le
script continue de s'exécuter comme si aucune action n'était survenue.
Pour y mettre fin il faut le forcer à quitter.



Pas normal.

Comment, dans le script, intercepter un click sur le bouton de clôture
du dialogue ?



Le clic ferme le dialgoue, et "display dialog" retourne un record
contenant le nom du bouton pressé. Comme c'est l'unique valeur de retour
dans ton script, elle s'affiche dans la section "Result" de l'Editeur de
Scripts :

{button returned:"OK"}

Pour traiter la valeur de retour, on l'assigne à une variable :

set r to display dialog ...
if button returned of r = "OK" then beep

Patrick
--
Patrick Stadelmann
Avatar
Lionel Mychkine
In article
,
Patrick Stadelmann wrote:

> Le dialogue s'affiche avec un seul bouton (rouge) dans la barre de
> titre.

???



Je me suis peut-être mal exprimé, le bouton rouge n'est pas la seule
chose affichée. Le dialogue affiche l'icône Stop, le texte, le bouton
"OK" et un seul bouton dans la barre de titre : le bouton rouge de
fermeture de la fenêtre de dialogue.

> Comment, dans le script, intercepter un click sur le bouton de clôture
> du dialogue ?

Le clic ferme le dialgoue, et "display dialog" retourne un record
contenant le nom du bouton pressé. Comme c'est l'unique valeur de retour
dans ton script, elle s'affiche dans la section "Result" de l'Editeur de
Scripts :

{button returned:"OK"}



Désolé mais je crois que tu m'as lu un peu vite. Il n'y a pas de bouton
"OK" ou autre pressé puisque j'ai cliqué sur le bouton de fermeture de
la fenêtre de dialogue dans la barre de titre. Or je n'arrive pas à
intercepter cette action.

--
Lionel Mychkine
Avatar
Patrick Stadelmann
In article <4b9f5c4c$0$8910$,
Lionel Mychkine wrote:

In article
,
Patrick Stadelmann wrote:

> > Le dialogue s'affiche avec un seul bouton (rouge) dans la barre de
> > titre.
>
> ???

Je me suis peut-être mal exprimé, le bouton rouge n'est pas la seule
chose affichée. Le dialogue affiche l'icône Stop, le texte, le bouton
"OK" et un seul bouton dans la barre de titre : le bouton rouge de
fermeture de la fenêtre de dialogue.



Chez moi il n'y a aucun bouton dans le barre de titre. La fenêtre est
semblable à celle-ci, mais sans le bouton "Cancel" :

http://www.devdaily.com/blog-files/dialog-stop-icon.jpg

Désolé mais je crois que tu m'as lu un peu vite. Il n'y a pas de bouton
"OK" ou autre pressé puisque j'ai cliqué sur le bouton de fermeture de
la fenêtre de dialogue dans la barre de titre. Or je n'arrive pas à
intercepter cette action.



Il ne devrait pas y avoir de bouton de fermeture, un tel dialogue se
ferme via l'un des "vrais" boutons dans la fenêtre. S'il y en avait tout
de même un, il devrait logiquement être interprété comme une pression
sur le bouton "Annuler" et générer une erreur -128 (user canceled) que
l'on récupère avec des blocs "try / on error".

Tu est sous quelle version de Mac OS X ?

Patrick
--
Patrick Stadelmann
Avatar
Lionel Mychkine
In article
,
Patrick Stadelmann wrote:

Chez moi il n'y a aucun bouton dans le barre de titre. La fenêtre est
semblable à celle-ci, mais sans le bouton "Cancel" :

http://www.devdaily.com/blog-files/dialog-stop-icon.jpg



J'ai exactement la même chose, sans le bouton Cancel en effet, mais avec
le bouton de fermeture dans la barre de titre ;-(

Il ne devrait pas y avoir de bouton de fermeture, un tel dialogue se
ferme via l'un des "vrais" boutons dans la fenêtre. S'il y en avait tout
de même un, il devrait logiquement être interprété comme une pression
sur le bouton "Annuler" et générer une erreur -128 (user canceled) que
l'on récupère avec des blocs "try / on error".

Tu est sous quelle version de Mac OS X ?



J'utilise un Powermac G5 sous MacOS 10.5.8.

J'ai essayé d'intercepter une erreur lors de l'affichage du dialogue
mais rien n'est intercepté :

try
display dialog "Mon message personnalisé" with icon stop ¬
buttons {"OK"} default button 1
on error
return
end try

--
Lionel Mychkine
Avatar
Lionel Mychkine
L'Applescript dont il a été question a été compilé en tant
qu'application Universal dans l'Editeur de Scripts. Lorsque je la
compile en tant qu'application "Classic", tout rentre dans l'ordre et le
bouton de fermeture dans la barre de titre du dialogue n'apparaît plus !

--
Lionel Mychkine
Avatar
laurent.pertois
Lionel Mychkine wrote:

Je me suis peut-être mal exprimé, le bouton rouge n'est pas la seule
chose affichée. Le dialogue affiche l'icône Stop, le texte, le bouton
"OK" et un seul bouton dans la barre de titre : le bouton rouge de
fermeture de la fenêtre de dialogue.



Sur un 10.6.2 je n'ai pas le bouton de fermeture de la fenêtre, je ne
peux la faire disparaître qu'avec le bouton OK.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.
Avatar
g4fleurot
Laurent Pertois wrote:

Sur un 10.6.2 je n'ai pas le bouton de fermeture de la fenêtre, je ne
peux la faire disparaître qu'avec le bouton OK.



Tiens donc !
Je viens de constater que je l'ai ce bouton rouge.
<http://cjoint.com/data/dqoRpnwNij.htm>

J'ai mon iMac 2,5" avec MacOS x 10.6.2 depuis mi-novembre et je démarre
l'ordinateur tous les matins avec un AppleScript (que j'utilise depuis
des années) et je ne l'avais pas remarqué, car j'appuie sur l'extème
droite du clavier en bas pour continuer ou esc en haut à gauche pour
annuler.
En cliquant sur ce bouton la fenêtre se ferme, mais le script est bloqué
à ce niveau et sans rien faire, au bout d'un certain temps (assez long -
2 minutes) apparaît un message indiquant :
Erreur d'AppleScript
Erreur dans Finder : Délai dépassé pour un AppleEvent
Le résultat dans la fenêtre du script en le lançant par l'éditeur est :
error "Erreur dans Finder : Délai dépassé pour un AppleEvent." number
-1712.

Autrement,
tell application "Finder"
display dialog "Mon message personnalisé"
end tell
tout bête donne :
<http://cjoint.com/?dqo1yPJwL6>

Il y aurait donc bien un bug qui crée le bouton rouge.
--
Gérard FLEUROT plus un
Avatar
Lionel Mychkine
In article <1jfg5fx.9gjf0jvzunsdN%,
(Laurent Pertois) wrote:

Sur un 10.6.2 je n'ai pas le bouton de fermeture de la fenêtre, je ne
peux la faire disparaître qu'avec le bouton OK.



En effet. C'est un bug sur les machines PPC qui se produit uniquement
quand on compile le script en tant qu'application Universal. C'est quand
même tordu !

J'ai pris l'option "Universal"sur tous les scripts que j'ai écrits parce
que je prépare la migration sur une machine Intel. Avec mon PowerMac G5,
il faut que je change de machine si je veux migrer sur Snow Leopard.

--
Lionel Mychkine
Avatar
g4fleurot
Lionel Mychkine wrote:

C'est un bug sur les machines PPC



Pas uniquement puisque je l'ai sur un iMac Intel en MacOs X 10.6.2 et en
lançant le script à partir de l'Éditeur sans l'avoir enregistré sous
quelque forme que ce soit.

--
Gérard FLEUROT plus un
Avatar
Lionel Mychkine
In article <1jfge4n.fi4ws91ta9jy8N%,
(Fleuger) wrote:

Pas uniquement puisque je l'ai sur un iMac Intel en MacOs X 10.6.2 et en
lançant le script à partir de l'Éditeur sans l'avoir enregistré sous
quelque forme que ce soit.



J'ai testé pour le coup. Effectivement, lorsque le script s'exécute dans
Script Editor, on a droit au bouton rouge. Tout rentre dans l'ordre
lorsque le script est compilé...

--
Lionel Mychkine
1 2