Existe um aplicativo de "escolha" do tipo GUI para o OS X? (semelhante ao choice.com para PC)

3

Estou executando um script de terminal e realmente gostaria de enviar opções de opções para o OS X GUI, semelhante a como choice.com funciona para Windows / DOS, mas uma versão GUI.

Eu sei que posso usar o comando choose from list do applescript, mas eu preferiria um aplicativo mais nativo porque acho que ele seria executado mais rapidamente, além de ser mais estável e mais direto para a interface.

Instalei o Platypus e gosto de como ele tem a opção de enviar dados para uma janela de GUI, mas gostaria de ter a funcionalidade de passar os dados de volta para o script a partir de uma janela como essa.

Um cenário de exemplo pode ser uma maneira fácil de selecionar em uma lista de pastas. Isto é o que parece quando eu faço isso com o Applescript:

setlistOfNamesto{}tellapplication"Finder"
    set filelist to every window
    repeat with currentFile in filelist
        set currentFileName to (POSIX path of (target of currentFile as alias)) as string
        copy currentFileName to the end of listOfNames
    end repeat
end tell
set mySelection to choose from list listOfNames

No entanto, eu realmente prefiro não usar o Applescript.

Recursos

Até que eu possa encontrar (ou construir) o aplicativo perfeito para fazer isso, talvez precise usar o Applescript. Vou listar alguns recursos que encontrei:

Uma maneira inteligente de fazer o applescript com várias linhas a partir do terminal:

Código aqui :

#!/bin/sh
# filename: find_me 
# usage from Terminal prompt: find_me "Last First"

osascript -e "set the_name to \"$1\"" -e 'on find_me (the_name)
   tell application "Address Book"
     set the_people to every person
     repeat with this_name in the_people
          if name of this_name contains the_name then 
             set result to name of this_name & "\n" 
             repeat with e_info in emails of this_name
               set result to result & value of e_info & " "
             end repeat
               set result to result & "\n"
             repeat with p_info in phones of this_name
               set result to result & value of p_info & " "
             end repeat 
             return result
         end if
     end repeat
   end tell
end find_me' -e 'find_me(the_name)'

Também digno de nota a partir dessa página: "o osascript ainda não fornece nenhuma maneira de passar argumentos para o script"

"Mas há uma solução alternativa:"

call osascript -e 'set thename to '$1 -e 'load script "/path/to/script"' -e 'look_up_name(thename)'

E minha contribuição, uma maneira de forçar o diálogo a estar em foco:

#!/bin/sh
osascript -e "set front_app_name to short name of (info for (path to frontmost application))
    set listOfNames to {"a", "b", "c"}
    tell application front_app_name to choose from list listOfNames"

Também é bom notar que você pode usar vários comandos -e para passar várias strings para serem executadas.

    
por cwd 28.06.2011 / 21:03

3 respostas

2

CocoaDialog

/Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog dropdown --title "Titlebar" --text "Prompt" --items A B --button1 OK --button2 Cancel

    
por 29.06.2011 / 13:30
1

Como Daniel Beck diz nos comentários: o AppleScript é sua melhor opção. É tão "nativo" quanto qualquer outra coisa (Cocoa, Carbon), se não mais (Python, Perl, tcl / tk, etc.).

    
por 28.06.2011 / 21:49
1

Esta não é uma resposta "não AppleScript", mas há uma maneira melhor de obter argumentos em um AppleScript:

osascript -e '
  on run(args)
    ... choose from list args ...
  end
' 1 2 3

Isso evita problemas de citação, então você pode passar strings arbitrárias (não esqueça de "$quote" das variáveis do seu shell!)

    
por 28.06.2011 / 23:44

Tags