Como faço para criar notificações do Growl para o FCE?


0

Eu encontrei este script online em algum lugar e estou tentando fazer com que ele verifique constantemente se o Final Cut Express está renderizando e quando termina a renderização, ele exibe uma notificação Growl.

EDIT: minha pergunta é: como faço para obter o script constantemente verificar para ver se o FCE está renderizando e uma vez que é feito renderização, exibir uma notificação? O script funciona para exibir a notificação, agora como faço para que funcione corretamente?

EDIT: eu tentei usar um manipulador ocioso. Não funcionou, mas talvez eu não esteja usando o manipulador ocioso corretamente.

Aqui está o código do script:

tell application "System Events"
    tell application process "Final Cut Express HD"
        set windowList to get name of every window
    end tell
end tell


if windowList contains missing value then
end if

tell application "GrowlHelperApp" -- ** the daemon that is behind the scenes
    -- Make a list of all the notification types that this script will ever send: 
    -- ** They really mean "ever" or you'll have to reregister.
    set the allNotificationsList to {"Render Complete"}
    -- , "Another Test Notification"} 
    --** Enable another notification

    -- Make a list of the notifications that will be enabled by default. 
    -- ** We'll see shortly that a note must be enabled and the user can disable it.
    -- Notifications not enabled by default can be enabled later in the 'Applications' tab of the growl prefpane.
    set the enabledNotificationsList to {"Render Complete"} -- ** just one turned on, the other not.

    -- Register our script with growl.
    -- You can optionally (as here) set a default icon for this script's notifications.
    -- ** Theoretically, you only have to register once, but there is absolutely no harm in doing
    -- it every time the script runs, i.e., leaving this line in your script.
    register as application "Final Cut Render Complete Script" all notifications allNotificationsList default notifications enabledNotificationsList icon of application "Final Cut Express HD"

    --  Send a Notification...
    -- This one will appear because it was enabled by default.
    notify with name "Render Complete" title "Render Complete" description "Your Render has Finished." application name "Final Cut Render Complete Script"

    -- This one will not appear -- it wasn't enabled by default so the user has to turn it on in the 'Applications' tab of the Growl prefpane to see it.
    -- Take out the comments to enable it.
    --notify with name "Another Test Notification" title "Another Test Notification  " description "Alas  you won't see me until you enable me yourself..." application name "Final Cut Render Complete Script"
end tell

Ainda bem que pude ajudar, pois acabei de ganhar o privilégio de recontar posts.
Steve Moser

Sim ... eu não posso criar tags ainda. :-(
daviesgeek

Qual é a questão? O roteiro não funciona?
Joel Spolsky

O script funciona, mas apenas uma vez. Eu corro isso e ele retorna o status do script. Eu quero que ele esteja constantemente checando para ver se o FCE está renderizando e quando terminar, exibir uma notificação Growl. Eu tentei um manipulador ocioso, mas não funcionou direito.
daviesgeek

1
O terceiro comentário neste tópico no cocoaforge (por "stib") ( cocoaforge.com/viewtopic.php?f=6&t=20460 ) tem uma variação do seu script que usa um manipulador ocioso. Ele até comentou o roteiro para explicar por que cada parte está lá e o que está fazendo. Já faz algum tempo desde que usei o script dele, mas, se bem me lembro, ele funcionou bem e foi bem fácil modificá-lo para funcionar com a maioria dos outros aplicativos.
joelseph

Respostas:


1

Você salvou o script com o manipulador ocioso como um arquivo .app com a caixa de seleção "Stay Open" selecionada na caixa de diálogo Salvar?

Isso é necessário para que o código dentro do manipulador ocioso seja executado "em ocioso", senão ele não será executado. Salve dessa maneira e tente novamente.

Você está verificando windowList por valor ausente. Isso soa como uma condição em que nenhuma janela do FCE está aberta. Se você quiser que o bloco onde você está executando o script Growl, ele deve estar dentro da instrução if, e não depois.

Além disso, dependendo da versão do Growl que você está usando, ele pode responder a um dos "Growl" (v1.3 +) ou "GrowlHelperApp" (v & lt; 1.3), mas não o outro. Para preparar seu script para o futuro, substitua

tell application "GrowlHelperApp

com o seguinte:

tell application id "com.Growl.GrowlHelperApp"

Todas as versões do Growl respondem a isso.

O bloco de código que você aciona o Growl parece que você modificou o exemplo deles e, pelos seus comentários, parece que está funcionando bem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.