¿Dónde se documenta el uso del cuadro combinado con Zenity?

11

Descubrí por casualidad que era posible mostrar un cuadro combinado con zenity (versión probada: 2.32.1). Ver el siguiente código:

#!/bin/bash
array=(a b c d e)
value=$(zenity --entry --title "Window title" --text "${array[@]}" --text "Insert your choice.")

El resultado se ilustra con las siguientes 3 imágenes:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Tengo dos preguntas al respecto:

  1. ¿Existe alguna documentación sobre esta funcionalidad? No encontré nada en la documentación de zenity .

  2. ¿Por qué el primer valor de mi matriz no aparece en el cuadro combinado? En el ejemplo anterior, mi matriz es (a b c d e)y solo se muestra el cuadro combinado b c d e.

    Como solución alternativa, agrego un valor en mi matriz, por ejemplo (0 a b c d e).

jep
fuente

Respuestas:

5

El primer elemento de la matriz se come --text. Después de la expansión, su línea zenitiy se ve así:

zenity --entry --title "Window title" --text a b c d e --text "Insert your choice."
# Which zenity treats equivalent to
zenity --entry --title "Window title" --text a --text "Insert your choice." b c d e

Entonces, primero establece el texto en a, luego lo anula con "Insertar su elección". Y los argumentos restantes se convierten en las elecciones.

Lo que quieres es:

zenity --entry --title "Window title" --text "Insert your choice." a b c d e
# Hence:
zenity --entry --title "Window title" --text "Insert your choice." "${array[@]}"
geirha
fuente
4

Esto está realmente documentado (tal vez no en el momento en que se publicó la pregunta, no se verificó), no en el manual sino en zenity --help-forms :

$ LANG=en_US zenity --help-forms
Usage:
  zenity [OPTION...]

Forms dialog options
  --forms                                           Display forms dialog
  --add-entry=Field name                            Add a new Entry in forms dialog
  --add-password=Field name                         Add a new Password Entry in forms dialog
  --add-calendar=Calendar field name                Add a new Calendar in forms dialog
  --add-list=List field and header name             Add a new List in forms dialog
  --list-values=List of values separated by |       List of values for List
  --column-values=List of values separated by |     List of values for columns
  --add-combo=Combo box field name                  Add a new combo box in forms dialog
  --combo-values=List of values separated by |      List of values for combo box
  --show-header                                     Show the columns header
  --text=TEXT                                       Set the dialog text
  --separator=SEPARATOR                             Set output separator character
  --forms-date-format=PATTERN                       Set the format for the returned date

Por lo tanto:

zenity --forms --title "Window title" --text "Combo name" --add-combo "Insert your choice." --combo-values "a|b|c|d|e"
Skippy le Grand Gourou
fuente
3

Creo que desea usar --text-entrypara la matriz de valores, no --text( referencia ). Utilizando:

#!/bin/bash
array=(a b c d e)
value=$(zenity --entry --title "Window title" --entry-text "${array[@]}" --text "Insert your choice.")

Veo el valor predeterminado del cuadro desplegable precargado con el primer valor de la matriz y todos los valores disponibles.

Pwlars
fuente
Gracias por la respuesta. Es curioso que el manual no se refiera al cuadro combinado.
jep