1 votos

¿Cómo crear un cuadro de diálogo de varios campos en AppleScript (para solicitar tiempo al usuario)?

Tengo una aplicación de Automator en la que me gustaría pedir al usuario que introduzca una hora a su elección.

Lo ideal sería que el cuadro de diálogo tuviera tres campos:

1) Campo horario

2) Campo de los minutos

3) Período (p.m. o a.m.)

Los campos uno y dos pueden ser introducidos por el usuario y hay dos puntos entre los dos campos. El campo tres es una simple lista desplegable y el usuario debe seleccionar una de las dos opciones.

También me gustaría que el AppleScript comprobara que el texto introducido en los campos de la hora y los minutos se ajusta a los estándares de la hora, y si no es así, se presenta un mensaje de error y el usuario debe introducir el texto de nuevo. (Es decir, el texto introducido en el primer campo debe ser un número de un solo dígito entre 1 y 12 y el texto introducido en el segundo campo debe ser un número de dos dígitos entre 00 y 60).

Sé que todo esto se puede lograr en tres cuadros de diálogo separados, pero realmente preferiría que todo se completara en un solo cuadro de diálogo (en aras de presentar al usuario una interfaz de usuario conveniente).

No soy muy competente en AppleScript, así que este proyecto es extremadamente ambicioso para mí. ¿Se puede lograr esto en AppleScript?

Si este comportamiento no es posible AppleScript, ¿alguien puede recomendar un lenguaje alternativo similar en el que este tipo de cuadro de diálogo es posible?

Gracias.

2voto

rubik's sphere Puntos 31

No se puede hacer en AppleScript.

Sin embargo, encontré esto solución donde el texto introducido en cada línea de un campo se interpreta como una respuesta independiente:

-- multiple input dialog

on run -- example
    set {firstName, lastName} to (inputItems for {"• First Name", "• Last Name"} with title given prompt:"Enter the following items separated by a carriage return:")
    display dialog "First Name:  \"" & firstName & "\"" & return & "Last Name:  \"" & lastName & "\""
end run

to inputItems for someItems given title:theTitle, prompt:thePrompt
    (*
    displays a dialog for multiple item entry - a carriage return is used between each input item
    for each item in someItems, a line of text is displayed in the dialog and a line is reserved for the input
        the number of items returned are padded or truncated to match the number of items in someItems
    to fit the size of the dialog, items should be limited in length (~30) and number (~15)  
        parameters -        someItems [list/integer]: a list or count of items to get from the dialog
                        theTitle [boolean/text]: use a default or the given dialog title
                        thePrompt [boolean/text]: use a default or the given prompt text
        returns [list]:     a list of the input items
    *)
    if thePrompt is in {true, false} then -- "with" or "without" prompt
        if thePrompt then
            set thePrompt to "Input the following items:" & return & return -- default
        else
            set thePrompt to ""
        end if
    else -- fix up the prompt a bit
        set thePrompt to thePrompt & return & return
    end if

    if theTitle is in {true, false} then if theTitle then -- "with" or "without" title
        set theTitle to "Multiple Input Dialog" -- default
    else
        set theTitle to ""
    end if

    if class of someItems is integer then -- no item list
        set {theCount, someItems} to {someItems, ""}
        if thePrompt is not "" then set thePrompt to text 1 thru -2 of thePrompt
    else
        set theCount to (count someItems)
    end if
    if theCount is less than 1 then error "inputItems handler:  empty input list"
    set {theItems, theInput} to {{}, {}}

    repeat theCount times -- set the number of lines in the input
        set the end of theInput to ""
    end repeat
    set {tempTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, return}
    set {someItems, theInput} to {someItems as text, theInput as text}
    set AppleScript's text item delimiters to tempTID

    set theInput to paragraphs of text returned of (display dialog thePrompt & someItems with title theTitle default answer theInput)

    repeat with anItem from 1 to theCount -- pad/truncate entered items
        try
            set the end of theItems to (item anItem of theInput)
        on error
            set the end of theItems to ""
        end try
    end repeat
    return theItems
end inputItems

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