10 votos

Espera hasta que una ventana existe en Applescript?

Estoy tratando de trabajar con la siguiente secuencia de comandos y el repeat until exists window "Print"bucle nunca se devuelve true (yo nunca escuche el pitido 3). Es esta la forma correcta de esperar por una ventana a aparecer?

Yo estoy usando la Accesibilidad Inspector y este es el nombre correcto del cuadro de diálogo imprimir de la ventana.

# Saves current document open in EverNote as PDF
#
activate application "Evernote"
tell application "System Events"
    tell process "EverNote"
        # Open the print dialog
        beep 1
        keystroke "p" using command down

        # Wait until the Print dialog opens before proceeding
        repeat until exists window "Print"
        end repeat

        # Expand the "PDF" menu button (must be expanded before the menu is referencable)
        beep 3

        click menu button "PDF" of window "Print"
        # Wait until the Menu button menu is created before proceeding
        repeat until exists menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print"
        end repeat
        # Select the "Save as PDF" menu item
        click menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print"

        # Wait until the Save dialog opens before proceeding
        repeat until exists window "Save"
        end repeat

        # Paste the contents of the clipboard in and Save
        # This is sorta hack; Probably best to leave the 'Save As" dialog open and let the user finish it off but I have a special purpose
        if (get (the clipboard) is not "") then
            set value of text field 1 of window "Save" to get (the clipboard) & ".pdf"
        end if
        click button "Save" of window "Save"

    end tell
end tell

10voto

Hersheezy Puntos 236

Me parece que han solucionado el principal problema de la "espera" ventana de edición. Al parecer anidada "dice" no son tan buenas, así que lo resuelto por especificar el proceso que posee un determinado elemento de interfaz de usuario:

repeat until window "Print" of process "Evernote" exists

No ha resuelto poner la fecha actual en el campo nombre de archivo de "Guardar" de la hoja, pero mañana es otro día! Aquí está el guion completo:

activate application "Evernote"
tell application "System Events"

    # Open the print dialog
    keystroke "p" using command down

    # Wait until the Print dialog opens before proceeding
    repeat until window "Print" of process "Evernote" exists
    end repeat

    click menu button "PDF" of window "Print" of process "Evernote"

    # Wait until the Menu button menu is created before proceeding
    repeat until exists menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print" of process "Evernote"
    end repeat

    # Select the "Save as PDF" menu item
    click menu item "Save as PDF…" of menu 1 of menu button "PDF" of window "Print" of process "Evernote"

    # Wait until the Save dialog opens before proceeding
    repeat until exists window "Save" of process "Evernote"
    end repeat

    set theDate to current date

    #tell (current date) to get (it's month as integer) & "-" & day & "-" & (it's year as integer)
    #set the clipboard to result as text

    #set myDate to result as text
    #set the clipboard to "dog" as text
    #if (get (the clipboard) is not "") then
    #set value of text field 1 of sheet "Save" of process "Evernote" to get (the clipboard) & ".pdf"
    #end if

    set value of text field of sheet "Save" of process "Evernote" to "dog" & ".pdf"
    # Paste the contents of the clipboard in and Save
    # This is sorta hack; Probably best to leave the 'Save As" dialog open and let the user finish it off but I have a special purpose

    # click button "Save" of window "Save" of process "Evernote"


end tell

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X