OVH Cloud OVH Cloud

AppleScript : boutons et conditions...

4 réponses
Avatar
laurent.pertois
Bonsoir,

Alors, AppleScript et moi, on est un peu fâchés mais je ne desespère pas
d'y arriver un jour :)

Je suis en train de faire mumuse avec deux ou trois trucs et je bute sur
deux problèmes.

Voici un bout de code :

-------------%<------------%<--------------------

set logsList to {"bla", "blabla", "Autre"}

set logChoosen to (choose from list logsList with prompt "Choisissez un
element :" default items {"bla"} without multiple selections allowed and
empty selection allowed)

set the logAddress to the logChoosen as string

if the logAddress is false then quit

-------------%<------------%<--------------------

Premiers, trucs, quand je choisis Autre, je renvoie sur une fenêtre qui
demande à l'utilisateur de saisir son truc, ça fonctionne, ça je gère.

Mais, j'aurais préféré que ce "Autre" soit un bouton plutôt qu'un
élément de ma liste, c'est possible ?

Ensuite, le dernier "if" essaie d'intercepter l'appui sur "cancel", mais
il ne fait rien :(

Dans d'autres parties de mon script, ça fonctionne, j'intercepte bien le
false et ça arrête, mais pas là...

Si besoin est, l'intégrale du script est là :

<http://lpertois.free.fr/mosx_scripts/displayLogs2.zip>

D'avance merci,

Attention : fu2 sur fr.comp.sys.mac.programmation

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

4 réponses

Avatar
Patrick Stadelmann
In article <1hdt6t2.1h90ma11clufrbN%,
(Laurent Pertois) wrote:

Mais, j'aurais préféré que ce "Autre" soit un bouton plutôt qu'un
élément de ma liste, c'est possible ?


Non, la commande "choose from list" ne propose que le bouton OK et
Annuler (que l'on peut renommer). Si tu veux une interface plus évoluée,
il faut passer par AppleScript Studio.

Ensuite, le dernier "if" essaie d'intercepter l'appui sur "cancel", mais
il ne fait rien :(


Tu as converti la réponse en texte (string) juste avant. Il faut soit
tester comme suit :

if the logAddress is "false" then

ou mieux, tester avant de convertir en chaîne :

if logChoosen is false then quit
set the logAddress to the logChoosen as string

Patrick
--
Patrick Stadelmann

Avatar
laurent.pertois
Patrick Stadelmann wrote:

Ah, Patrick, encore toi pour m'aider :)

In article <1hdt6t2.1h90ma11clufrbN%,
(Laurent Pertois) wrote:

Mais, j'aurais préféré que ce "Autre" soit un bouton plutôt qu'un
élément de ma liste, c'est possible ?


Non, la commande "choose from list" ne propose que le bouton OK et
Annuler (que l'on peut renommer). Si tu veux une interface plus évoluée,
il faut passer par AppleScript Studio.


Bon, tant pis, je vais continuer avec mon Autre dans la liste,
AppleScript Studio, là, je craque :)

Ensuite, le dernier "if" essaie d'intercepter l'appui sur "cancel", mais
il ne fait rien :(


Tu as converti la réponse en texte (string) juste avant. Il faut soit
tester comme suit :

if the logAddress is "false" then

ou mieux, tester avant de convertir en chaîne :

if logChoosen is false then quit
set the logAddress to the logChoosen as string


Suis-je bête, merci mille fois.

Ah ben, je viens de tester, il quitte bien le script mais il continue
sur ce qu'il y a en-dessous :-/

Par contre, au début du script j'ai d'autres conditions comme celle-ci
qui fonctionnent très bien.


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


Avatar
Patrick Stadelmann
In article <1hdtz2z.j53n7r17oaj4eN%,
(Laurent Pertois) wrote:

Ah ben, je viens de tester, il quitte bien le script mais il continue
sur ce qu'il y a en-dessous :-/


Ah oui, je n'avais pas fais gaffe, c'est un piège classique !

Par contre, au début du script j'ai d'autres conditions comme celle-ci
qui fonctionnent très bien.


Non... En fait, avec "display dialog" si l'on choisit "annuler" le
script quitte automatiquement avec une erreur "user canceled". Tes
"quit" sont donc tous ignorés. Tu peux le vérifier en mettant un "quit"
au début du script. En fait, le "quit" est bien envoyé mais il ne sera
traité qu'après l'exécution du script (sauf si tu es dans Script Editor
qui lui doit exécuter le script "commande par commande".

Pour sortir d'un script, on peut utiliser "return" si on est au premier
niveau (i.e. pas dans une sous-routine) ou générer un "user canceled" ce
qui fonctionne partout :

if the logChoosen is false then error number -128

Patrick
--
Patrick Stadelmann

Avatar
laurent.pertois
Patrick Stadelmann wrote:

Non... En fait, avec "display dialog" si l'on choisit "annuler" le
script quitte automatiquement avec une erreur "user canceled". Tes
"quit" sont donc tous ignorés. Tu peux le vérifier en mettant un "quit"
au début du script. En fait, le "quit" est bien envoyé mais il ne sera
traité qu'après l'exécution du script (sauf si tu es dans Script Editor
qui lui doit exécuter le script "commande par commande".


Ah okok, je comprends mieux, j'en ai profité pour enlever les lignes
inutiles, effectivement le cancel suffit.

Pour sortir d'un script, on peut utiliser "return" si on est au premier
niveau (i.e. pas dans une sous-routine) ou générer un "user canceled" ce
qui fonctionne partout :

if the logChoosen is false then error number -128


Merci beaucoup, une fois de plus.

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