Intercettare valore button predefinito Applescript

Qui potrete scambiare pareri, consigli, suggerimenti di programmazione su Swift, Java, SQL, C++, Pascal, VB, Basic, etc...

Moderatore: ModiMaccanici

Rispondi
Alessio Forconi
Iscritto il: mer, 01 nov 2017 16:45
Messaggi: 3
Oggetto del messaggio: Intercettare valore button predefinito Applescript

Messaggio Inviato: mer, 01 nov 2017 16:57

Salve a tutti,

mi sto scontrando con un problema in Applescript.
Probabilmente è anche stupido ma non riesco a farlo.

In pratica avendo questo

Codice: Seleziona tutto

display dialog "Si o No?" buttons {"Yes", "No"} default button 1 giving up after 5
dopo 5 secondi il button 1 (cioè Yes, giusto?) viene selezionato di default

Quello che vorrei fare è intercettare il valore che restituisce il button Yes

Se faccio così

Codice: Seleziona tutto

set the my_choice to the button returned of the result
if my_choice is "Yes" then
	display dialog "Yes"
else if my_choice is "No" then
	display dialog "No"
end if
non ottengo niente, segno che il valore resituito non è Yes nè No

È possibile fare quello che voglio?

Grazie
iStefano
Genio guastatore
Genio guastatore
Avatar utente
Iscritto il: mer, 30 dic 2009 10:30
Messaggi: 7722
Località: Pomigliano D'Arco (NA)
Contatta:

Top

Oggetto del messaggio: Re: Intercettare valore button predefinito Applescript

Messaggio Inviato: mer, 01 nov 2017 19:19

Alessio Forconi ha scritto:Salve a tutti,

mi sto scontrando con un problema in Applescript.
Probabilmente è anche stupido ma non riesco a farlo.

In pratica avendo questo

Codice: Seleziona tutto

display dialog "Si o No?" buttons {"Yes", "No"} default button 1 giving up after 5
dopo 5 secondi il button 1 (cioè Yes, giusto?) viene selezionato di default

Quello che vorrei fare è intercettare il valore che restituisce il button Yes

Se faccio così

Codice: Seleziona tutto

set the my_choice to the button returned of the result
if my_choice is "Yes" then
	display dialog "Yes"
else if my_choice is "No" then
	display dialog "No"
end if
non ottengo niente, segno che il valore resituito non è Yes nè No

È possibile fare quello che voglio?

Grazie

se ricordo bene dovresti utilizzare i Booleans :


Yes = true

if != true
fai qualcosa
else
fai qualcosa

Scrivo su iMaccanici con TapaTalk per MacBook Air
Alessio Forconi
Iscritto il: mer, 01 nov 2017 16:45
Messaggi: 3
Oggetto del messaggio: Re: Intercettare valore button predefinito Applescript

Messaggio Inviato: mer, 01 nov 2017 19:28

Ahimè no, neanche con true o false funziona.
In realtà ho visto con

Codice: Seleziona tutto

display dialog "Si o No?" buttons {"Yes", "No"} default button 1 giving up after 5

set the my_choice to the button returned of the result
if my_choice is "Yes" then
	display dialog "Yes"
else if my_choice is "No" then
	display dialog "No"
else
	display dialog my_choice
end if
che il valore restituito è " ", cioè niente.
Ovviamente in caso prema uno dei due bottoni tutto funziona correttamente.

Comincio a pensare non si possa fare
iStefano
Genio guastatore
Genio guastatore
Avatar utente
Iscritto il: mer, 30 dic 2009 10:30
Messaggi: 7722
Località: Pomigliano D'Arco (NA)
Contatta:

Top

Oggetto del messaggio: Re: Intercettare valore button predefinito Applescript

Messaggio Inviato: gio, 02 nov 2017 09:05

Immagine

Scrivo su iMaccanici con TapaTalk per MacBook Air
Alessio Forconi
Iscritto il: mer, 01 nov 2017 16:45
Messaggi: 3
Oggetto del messaggio: Re: Intercettare valore button predefinito Applescript

Messaggio Inviato: ven, 03 nov 2017 23:33

Dato che mi sono interstardito ho continuato a provare e ho trovato questo workaround che usa la clausola gave up, che è quello che succede quando si lascia scorrere l'intervallo definito con giving up after n

Codice: Seleziona tutto

set choice to display dialog "Scegli Si o No " buttons {"Yes", "No"} default button "Yes" giving up after 5


if (button returned of choice) is "Yes" or (gave up of choice) then
	display dialog "Yes"
else if button returned of choice is "No" then
	display dialog "No"
end if
In questo modo, ovviamente, dando Invio si sceglie attivamente e come predefinito "Yes" oppure "No" se si vuole, mentre lasciando finire il tempo di giving up la condizione or (gave up of choice) agisce come se si fosse scelto "Yes".
In realtà però giving up in n è solo un tempo dato trascorso il quale si chiude la display dialog senza intervento dell'utente e senza memorizzare alcuna scelta ed è in questo che consiste la limitazione, cioè che se anche mettessi or (gave up of choice) su "No" questa non avrebbe valore perchè si ferma solo e sempre alla prima or (gave up of choice) che trova nel blocco if.
Rispondi