Bonjour Samlastar,
Suite à l'instruction Choose from List, la variable Temp peut avoir plusieurs valeurs et ton script ne les teste pas toutes.
Comme ce sujet fait souvent l'objet de questions, je vais essayer de donner une explication détaillée qui pourra servir au plus grand nombre. (j'espère !)
Commençons par la valeur la plus simple : Si l'utilisateur clique sur le bouton "annuler" : dans ce cas, Temp vaut "False".
C'est une curiosité historique de cette instruction "choose from list". (les autres dialogues donnent soit une erreur, soit le nom du bouton cliqué).
Il faut donc encadrer le traitement des réponses par un test "is not false then", qui permet de limiter la suite du programme à ce qui est valide.
La seconde erreur de ton script est due au type retourné par le choose from list : la variable est une liste.
Applescript entretient la confusion en te laissant croire, lorsque cette liste n'a qu'un seul élément, que c'est une valeur...
Si l'utilisateur sélectionne la valeur "1", la variable est {"1"}, soit une liste avec un seul élément "1". Tu peux tester directement si la valeur est "1", le compilateur est tolérant.
Par contre, si l'utilisateur sélectionne plus d'une valeur (tu as mis "multiple selections allowed" !), alors là le compilateur ne peut pas te laisser faire, car le résultat est {"1","3"} soit une liste avec ici 2 éléments, le "1" et le "3" ont été choisis par l'utilisateur.
il faudrait donc voir le nombre d'items sélectionnés, et traiter chacun d'eux. (si tu ne veux q'un seul item possible, il suffit de retirer le multiple selection allowed).
Pour traiter chaque cas, on va donc utiliser une boucle repeat qui va parcourir tous les choix possibles.
Enfin, la dernière particularité est que chaque item sélectionné est de type text et pas de type string.
Or, tes if successifs comparent avec les string "1", "2", "3".
Là je n'ai jamais eu d'explication logique pour laquelle ta liste initialisée avec les choix possible est du text et pas du string !!
Ce n'est pas grave et pour s'en convaincre, il suffit de faire des display dialog class of xxx pour voir le type de ta variable.
Dans notre cas, on va donc forcer chaque item de la sélection en string et le tour est joué !!
Voici ton exemple complet corrigé pour supporter tous les cas :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| set temp to choose from list {"1", "2", "3"} with title "Choose on this list" with prompt "How much youtube video boosted ?" OK button name "Select" cancel button name "Annulez" default items {"1"} with multiple selections allowed
if temp is not false then -- ne fait rien si l'utilisateur clique sur Annuler
repeat with Mon_item in temp-- boucle sur chaque valeur sélectionnée
set nbrvideo to Mon_item as string-- force le text en string
if nbrvideo = "1" then
display dialog "on trouve 1"
-- insert if actions here
end if
if nbrvideo = "2" then
display dialog "on trouve 2"
end if
if nbrvideo = "3" then
display dialog "on trouve 3"
end if
end repeat -- boucle sur la sélection suivante
end if |
Ce code est plus "solide" car il couvre tous les cas d'utilisation. J'espère avoir été clair.
Cordialement ... et joyeux Noël à tous !
Partager