Intercettare valore button predefinito Applescript

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

Moderatore: ModiMaccanici

Alessio Forconi
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mer, 01 nov 2017 16:45
Messaggi: 3

Top

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

Avatar utente
iStefano
Stato: Non connesso
Genio guastatore
Genio guastatore
Avatar utente
Iscritto il: mer, 30 dic 2009 10:30
Messaggi: 8279
Località: Pomigliano D'Arco (NA)

Top

Contatta:
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
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mer, 01 nov 2017 16:45
Messaggi: 3

Top

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

Avatar utente
iStefano
Stato: Non connesso
Genio guastatore
Genio guastatore
Avatar utente
Iscritto il: mer, 30 dic 2009 10:30
Messaggi: 8279
Località: Pomigliano D'Arco (NA)

Top

Contatta:
Immagine

Scrivo su iMaccanici con TapaTalk per MacBook Air

Alessio Forconi
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mer, 01 nov 2017 16:45
Messaggi: 3

Top

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

Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti