# Applescript : text returned dialog box with buttons



## spinoops (22 Juin 2012)

Bonjour,

J'ai une petite question sûrement toute bête, mais je n'arrive pas à trouver une solution. J'ai pourtant regardé pas mal de tuto mais l'utilisation d'une boîte de dialogue avec retour de texte se résume toujours à un simple bouton OK.

Or moi, j'aimerais utiliser plusieurs boutons au retour de ma boîte de dialogue, seulement, il semblerait qu'il y ait un conflit entre le "button returned" et le "text returned".

Voici un exemple :


```
display dialog "Veuillez entrer le chemin du point de partage." default answer "afp://" buttons {"Annuler", "Suivant"} default button 2

--la variable qui devrait retourner le texte
set vText to text returned of result
--la variable qui devrait retourner le bouton
set vButton to button returned of result

if vButton = "Suivant" then
	
	display dialog "c'est bon " & vText
	
end if
```

Donc dans mon cas, si j'écris mon chemin et je clique sur suivant, une nouvelle fenêtre devrait s'ouvrir. Si je presse sur annuler, la fenêtre devrait se fermer. (Dans mon vrai code, j'ai une boucle repeat qui, si je clique sur annuler, retourne au début de code.) Cependant, dans cet exemple, j'ai justement une erreur de conflit de type : _"Il est impossible d&#8217;obtenir button returned of "afp://"."_

Si quelqu'un peut m'aider, je pense plutôt à une erreur de syntaxe...

Merci d'avance, @ bientôt


----------



## ceslinstinct (22 Juin 2012)

spinoops a dit:


> Bonjour,
> 
> il semblerait qu'il y ait un conflit entre le "button returned" et le "text returned".



Bonjour

Essais ce code avec ton *display dialog*.


```
set {vText, vButton} to {text returned, button returned} of (display dialog "Veuillez entrer le chemin du point de partage." default answer "afp://" buttons {"Annuler", "Suivant"} default button 2)
if vButton is "Annuler" then return --Sécurité
```

@+


----------



## spinoops (22 Juin 2012)

C'est parfait ! Un grand merci


----------



## spinoops (26 Juin 2012)

J'ai encore juste une question : 

On peut prendre comme exemple le script vu plus haut mais j'ai ce problème avec n'importe quel Applescript.

En effet, lorsque je veux fermer un "display dialog" avec le bouton croix rouge en haut à gauche, c'est soit mon application Applescript qui plante totalement lorsque j'exécute mon script ou dans le cas d'une compilation, c'est mon finder qui se relance comme s'il avait planté.

Y'a-t-il une manière d'utiliser la fermeture de cette manière sans avoir de plantée? 

Je ne peux malheureusement pas configurer un bouton "Cancel", car comme en Applescript il n'est possible que de placer 3 boutons max sur un "display dialog", tous mes boutons sont utilisés.

Merci d'avance


----------



## ceslinstinct (26 Juin 2012)

spinoops a dit:


> J'ai encore juste une question :
> 
> Je ne peux malheureusement pas configurer un bouton "Cancel", car comme en Applescript il n'est possible que de placer 3 boutons max sur un "display dialog", tous mes boutons sont utilisés.
> 
> Merci d'avance


Bonjour

Et faire croire que tes 3 boutons peuvent quitter le code?

En utilisant le contenu de la variable vText comme quatrième bouton, si pas de modifications alors quitte.

Exemple:


```
set {vText, vButton} to {text returned, button returned} of (display dialog "Veuillez entrer le chemin du point de partage." default answer "afp://" buttons {"Premier", "Deuxième", "Troisième"} default button 2)

if vText is "afp://" then return

display dialog vText
```

PS: Pour utiliser 5 où plus de boutons, il faut alors passer par un  *choose from list* pour faire simple.

@+


----------



## spinoops (26 Juin 2012)

Ouep, je vais plutôt partir sur un "choose from list". Merci pour la réponse


----------



## spinoops (26 Juin 2012)

Je dois être pomme, mais la syntaxe me semblait couler de source pour le code suivant :


```
repeat
	
	set nameList to {"Envoyer vers serveur", "Restaurer", "Configuration"}
	
	set {textList, buttonList} to {text returned, button returned} of (choose from list the nameList with prompt "Choose : " with title "Choose")
	
	if buttonList is "OK" then
		
		if textList is "Envoyer vers serveur" then
			
			display dialog "C'est l'envoi vers le serveur"
			
		else if textList is "Restaurer" then
			
			display dialog "C'est la restauration"
			
		else if textList is "Configuration" then
			
			display dialog "C'est la configuration"
			
		end if
		
	else
		
		exit repeat
		
	end if
	
end repeat
```

Je me retrouve donc avec une erreur du type :

error "Il est impossible dobtenir text returned of {\"Envoyer vers serveur\"}." number -1728 from text returned of {"Envoyer vers serveur"}

Je n'arrive pas à comprendre cette erreur... Est-ce le contenu de ma variable text returned qui pose problème avec les caractères "{\"?

Merci d'avance

PS : Le repeat peut sembler ne servir à rien dans ce code... Mais il fait partie de mon programme principal. C'est la raison pour laquelle je l'ai inséré dans cet exemple.


----------



## ceslinstinct (26 Juin 2012)

spinoops a dit:


> Je n'arrive pas à comprendre cette erreur... Est-ce le contenu de ma variable text returned qui pose problème avec les caractères "{\"?
> 
> Merci d'avance
> 
> PS : Le repeat peut sembler ne servir à rien dans ce code... Mais il fait partie de mon programme principal. C'est la raison pour laquelle je l'ai inséré dans cet exemple.



Bonsoir

Tu n'utilise pas un *display dialog*.

Dans un *choose from list* c'est les lignes de texte qui servent de bouton.

Le bouton OK c'est juste pour valider ta sélection.

Regarde ce code modifié pour voir si ça fonctionne chez toi.


```
repeat
	
	set nameList to {"Envoyer vers serveur", "Restaurer", "Configuration"}
	
	set choix to (choose from list the nameList with prompt "Choose : " with title "Choose") as string
	if choix is "false" then exit repeat -- Bouton Annuler
	
	if choix is "Envoyer vers serveur" then
		
		display dialog "C'est l'envoi vers le serveur"
		
	else if choix is "Restaurer" then
		
		display dialog "C'est la restauration"
		
	else if choix is "Configuration" then
		
		display dialog "C'est la configuration"
		
	end if
	
end repeat
```

@+


----------



## spinoops (27 Juin 2012)

Super ça marche  Merci !

Par contre, j'ai du mal à trouver de la doc concrète (notamment pour les syntaxes) sur internet. Il y a bien un lien chez Apple qui apparaît toujours mais ça semble mort... Je vais peut-être me renseigner pour un bouquin éventuellement.


----------

