Co to je
KDialog a Zenity jsou programy, které na základě předaných parametrů zobrazí určitý výstup Qt, resp. v GTK okně. Jediné dva rozdíly mezi Zenity a KDialog je jejich syntaxe a knihovny, na kterých jsou založené. Uživatelé Gnome se budou pravděpodobně naklánět ke Zenity a uživatelé KDE ke KDialogu.
Výstup obou programů jsou dialogy, které známe i z jiných aplikací. Žádné složitější dialogy nebo naše vlastní vytvářet nejdou. Vždy jsme limitovaní na použití těch připravených.
Jak se to používá
Prakticky oba programy se používají stejným způsobem. Při spouštění zadáváme parametry jednomu z programů. Pak ho spustíme a on nám naservíruje požadovaný dialog případně s vyplněnými hodnotami. Po potvrzení hodnot program vytiskne na standardní výstup hodnoty, které jsme zadali.
Zenity
V případě Zenity máme k dispozici následující možnosti:
--calendar Dialog kalendáře
--entry Dialog vstupu textu
--error Dialog chyby
--info Dialog informací
--file-selection Dialog výběru souborů
--list Dialog seznamu
--notification Dialog s upozorněním (jako tray ikonka)
--progress Dialog indikace průběhu
--question Dialog otázky
--warning Dialog varování
--scale Dialog měřítka
--text-info Dialog textových informací
Každý z těchto dialogů má parametry, které v případě například kalendáře zjistíme pomocí:
cx@godie ~ $ zenity --help-calendar
Použití:
zenity [PŘEPÍNAČ...]
Přepínače kalendáře
--calendar Zobrazit dialog kalendáře
--text=TEXT Nastavit text dialogu
--day=DEN Nastavit den kalendáře
--month=MĚSÍC Nastavit měsíc kalendáře
--year=ROK Nastavit rok kalendáře
--date-format=VZOREK Nastavit formát vráceného data
Zenity je plně lokalizované do češtiny, takže by použití nemělo dělat problémy ani uživatelům méně zdatným v angličtině.
Když už jsme nakousli kalendář, tak si ho také vytvoříme s použitím většiny parametrů.
zenity --calendar \
--text="Ahoj světe" \
--day=30 --month=10 \
--year=2008 \
--date-format="%d.%m.%Y"
Dalším příkladem bude získání nějaké informace od uživatele. To se dělá přes dialog entry. Nápověda získaná s parametrem vypadá takto:
cx@godie ~ $ zenity --help-entry
Použití:
zenity [PŘEPÍNAČ...]
Přepínače vstupu textu
--entry Zobrazit dialog vstupu textu
--text=TEXT Nastavit text dialogu
--entry-text=TEXT Nastavit text vstupu
--hide-text=TEXT Skrýt text vstupu
V tomto příkladě si ukážeme i další parametry, které se dají získat z manuálových stránek. Jedná se o obecné parametry a v nápovědě k dialogům je nenajdeme. Tyto parametry jsou 4:
--title=HODNOTA Titulek okna
--window-icon=HODNOTA Ikonka okna
--width=HODNOTA Šířka
--height=HODNOTA Výška
A teď přejdeme ke zmiňovanému příkladu.
zenity --entry \
--text="Zenity?" \
--entry-text="Sem něco napíšeme" \
--title="Otázkový dialog" \
--width=300 \
--height=100
Další informace o Zenity jsou dostupné v manuálových stránkách. Ty už bohužel nejsou lokalizované.
KDialog
Jak jsem již psal, KDialog je součástí balíku KDE a ve své funkci je Zenity velmi podobný. Obsahuje ale mnohem více připravených dialogů. V mém Gentoo není lokalizovaný do češtiny. V jiných distribucích tomu může být jinak. Jeho používání je malinko méně pohodlné, protože si musíme pamatovat pořadí jednotlivých parametrů.
Přeložená nápověda s většinou možností vypadá takto:
--yesno <text> Ano/ne dialog
--yesnocancel <text> Ano/ne/storno dialog
--warningyesno <text> Ano/ne dialog s varováním
--warningcontinuecancel <text> Pokračovat/storno dialog s varováním
--warningyesnocancel <text> Ano/ne/storno dialog s varováním
--sorry <text> Dialog s omluvou
--error <text> Dialog s chybou
--msgbox <text> Dialog se zprávou
--inputbox <text> <init> Dialog s jednořádkovým polem pro vstup od uživatele
--password <text> Dialog s heslem
--textbox <file> [width] [height] Dialog, který načítá obsah ze souboru
--textinputbox <text> <init> [width] [height] Dialog pro získání informací od uživatele
--combobox <text> [tag item] [tag item] ... Dialog s comboboxem
--menu <text> [tag item] [tag item] ... Dialog s menu
--checklist <text> [tag item status] ... Dialog s výběrem možností z nichž vybrat můžeme všechny
--radiolist <text> [tag item status] ... Dialog s výběrem možností z nichž vybrat můžeme jen jednu
--passivepopup <text> <timeout> Dialog s textem, který po uplynutí timeoutu zmizí
--getopenfilename [startDir] [filter] Dialog pro otevření souboru
--getsavefilename [startDir] [filter] Dialog pro uložení souboru
--getexistingdirectory [startDir] Dialog pro výběr adresáře
--getopenurl [startDir] [filter] Dialog pro otevření URL
--getsaveurl [startDir] [filter] Dialog pro uložení URL
--geticon [group] [context] Dialog pro výběr ikony
--progressbar <text> [totalsteps] Progressbar dialog
--title <text> Titulek okna
--default <text> Výchozí hodnota
Vidíme, že možnosti KDialogu jsou opravdu větší než u Zenity. KDialogu na rozdíl od Zenity chybí také dialog s kalendářem.
Jako příklad si vyzkoušíme –checklist. Ten zobrazí seznam položek a vybrané vrátí na standardní výstup.
kdialog --title "Zkouška checklistu" \
--checklist "Text checklistu" \
1 "Položka 1" \
off 2 "Položka 2" \
off 3 "Položka 3" \
off
Jednotlivé položky se číslují a jako oddělovač se používá klíčové slovo „off“, které také musí být uvedeno na konci.
Závěr
Zarytým uživatelům příkazové řádky toto řešení vyhovovat nebude, ale jistě si najde své příznivce například u různých instalačních skriptů. Také skripty na nastavování sítě například na notebooku mohou ožít s použitím Zenity nebo KDialogu.