Onde está documentado o uso de caixas de combinação com o zenity?

11

Descobri por acaso que era possível exibir uma caixa de combinação com zenity (versão testada: 2.32.1). Veja o seguinte código:

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

O resultado é ilustrado com as 3 imagens a seguir:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Eu tenho duas perguntas sobre isso:

  1. Existe uma documentação sobre essa funcionalidade? Não encontrei nada na documentação do zenity .

  2. Por que o primeiro valor da minha matriz não aparece na caixa de combinação? No exemplo acima, minha matriz é (a b c d e)e a caixa de combinação é exibida apenas b c d e.

    Como solução alternativa, adiciono um valor à minha matriz, por exemplo (0 a b c d e).

jep
fonte

Respostas:

5

O primeiro elemento da matriz é consumido --text. Após a expansão, sua linha zenitiy se parece com:

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

Então, primeiro defina o texto para ae substitua-o por "Inserir sua escolha". E os argumentos restantes se tornam as escolhas.

O que você quer é:

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
fonte
4

Isso está realmente documentado (talvez não no momento em que a pergunta foi publicada, não foi verificada), não no manual, mas em 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

Portanto:

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

Eu acho que você deseja usar --text-entrypara a matriz de valores, não --text( referência ). Usando:

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

Vejo o valor padrão da caixa suspensa pré-preenchido com o primeiro valor da matriz e todos os valores disponíveis.

pwlars
fonte
Obrigado pela resposta. É curioso que o manual não se refira à caixa de combinação.
jep