Gdzie jest udokumentowane użycie pola kombi z zenity?

11

Odkryłem przypadkiem, że można wyświetlić pole kombi z zenity (testowana wersja: 2.32.1). Zobacz następujący kod:

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

Wynik ilustrują 3 następujące obrazy:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Mam dwa pytania na ten temat:

  1. Czy istnieje dokumentacja na temat tej funkcji? Nic nie znalazłem w dokumentacji zenity .

  2. Dlaczego pierwsza wartość mojej tablicy nie pojawia się w polu kombi? W powyższym przykładzie moja tablica jest (a b c d e)i wyświetla się tylko pole kombi b c d e.

    Aby obejść ten problem, dodaję na przykład wartość w mojej tablicy (0 a b c d e).

jep
źródło

Odpowiedzi:

5

Pierwszy element tablicy zostaje pochłonięty przez --text. Po rozwinięciu twoja linia zenitiy wygląda następująco:

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

Najpierw ustaw tekst na a, a następnie zastąp go „Wstaw swój wybór”. A pozostałe argumenty stają się wyborem.

Co chcesz to:

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
źródło
4

Jest to faktycznie udokumentowane (może nie w momencie, gdy pytanie zostało wysłane, nie sprawdziłem), nie w instrukcji, ale w 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

W związku z tym:

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

Myślę, że chcesz użyć --text-entrydo tablicy wartości, a nie --text( odniesienia ). Za pomocą:

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

Widzę domyślną wartość pola rozwijanego wypełnionego pierwszą wartością tablicy i wszystkie dostępne wartości.

pwlars
źródło
Dziękuję za odpowiedź. Ciekawe, że instrukcja nie odnosi się do pola kombi.
jep