Como "exigir uma resposta" em uma caixa de diálogo em AppleScript?

3

Se alguém inserir uma ação "Solicitar texto " em seu fluxo de trabalho no Automator, será apresentada a opção "Requer uma resposta" do usuário:

insira a descrição da imagem aqui

Se o usuário não fornecer uma resposta, ele não poderá pressionar o botão "OK". O computador emitirá um bipe para o usuário se o botão "OK" for pressionado enquanto o campo de resposta estiver vazio.

Existe uma maneira de replicar esse comportamento exato no AppleScript?

esfera de rubik
fonte

Respostas:

2

Sim, pode ser realizado assim:

repeat
  set myAnswer to the text returned of (display dialog "Your question goes here." default answer "")
  if myAnswer is "" then
    beep
  else
    exit repeat
  end if
end repeat

Por favor, deixe-me saber se isso funciona para você.


Segunda versão que informa ao usuário qual é o erro:

repeat
  set myAnswer to the text returned of (display dialog "Your question goes here." default answer "")
  if myAnswer is "" then
    beep
    display alert "Please enter your answer to continue."
  else
    exit repeat
  end if
end repeat
oa-
fonte
Está muito perto. A única diferença é que eu posso pressionar o botão "OK" na sua versão; a caixa de diálogo será atualizada se eu pressionar "OK". Não há como realmente desativar um botão no AppleScript (como a ação "Solicitar texto" desativa "OK" quando o campo está vazio)?
Rubik's sphere
Não é possível desativar um botão em uma caixa de diálogo criada com AppleScript. Você pode conseguir isso com Swift, no entanto.
oa-
Obrigado. Você pode exibir uma mensagem adicional usando "exibir alerta" para informar ao usuário que é necessária uma resposta.
oa- 27/01
11
Boa ideia. Dessa forma, o usuário entende o que foi responsável por causar a atualização.
Rubik's sphere
Veja meu segundo acima.
oa-