Hlavní navigace

Xdialog

27. 1. 2005
Doba čtení: 3 minuty

Sdílet

Pokud píšete interativní programy v shellu a zároveň používáte grafické prostředí X Window System, možná byste uvítali možnost, jak uživatelům zpříjemnit jejich ovládání pomocí GUI. Právě pro vás je určen program Xdialog, který do vašich shellových skriptů může velmi jednoduše přinést žádanou eleganci ovládání.

V úvodu jsem uvedl typický příklad použití, ale je samozřejmě možné Xdialog použít i z libovolného jiného jazyka, který umožňuje spouštění příkazů operačního systému, např. z Perlu nebo i z C. Tam, kde by pro tvorbu GUI bylo zapotřebí zvládnout poměrně obsáhlé množství funkcí a volání knihoven, lze pomocí Xdialog vytvořit jednoduché GUI velmi snadno během pár minut.

Samozřejmě, že takto lze vytvářet jen jednoduché dialogy, nikoliv komplexní formuláře. A tak typickými aplikacemi, kde lze Xdialog s výhodou využít, jsou právě skripty obalující řádkové unixové utility. Skripty pro instalaci programů, montování svazků, playmidi, xanim, qiv, ping, whois, nslookup, ppp připojení, vypalování…

Pro instalaci a provoz Xdialog je nutné mít k dispozici X11 a GTK knihovny. Existují binární balíčky rpm, dále je Xdialog součástí Debianu (ostatně co není). Při instalaci ze zdrojových textů není třeba mít strach z nějakých záludností, instalace sestává ze stažení, rozbalení a obligátní trojkombinace „./configure && make && make install“.

Pokud máme úspěšně nainstalováno, můžeme se pustit do testování. Jednoduché oznámení zajistíme příkazem:

Xdialog --msgbox 'Oznámení' 0 0

oznam.png

Parametr --msgbox patří mezi parametry určující vzhled a chování dialogu, má uveden pouze text pro zobrazení, výška a šířka se určí automaticky. Dvě nuly na konci určují umístění dialogového okna na střed obrazovky.

Jiný jednoduchý příklad:

Xdialog --no-buttons --infobox 'Počkej... (5s)' 0 0 5000

cekani.png

Jedná se o luxusnější variantu příkazu sleep – počká 5 sekund a ukončí se; doba čekání se určuje v ms na konci příkazu.

Zdlouhavé čekání na pomalé počítače je jednou z nejotravnějších činností každého uživatele. Pomocí progressbaru lze alespoň orientačně sdělovat, kolik kafe stačíme ještě vypít :-). Trochu nevýhodné je, že musíme Xdialogu sdělit předem počet opakování, to je to číslo 6 úplně na konci, můžeme použít nějaký výpočet pomocí expanze shellu, třeba `find ./ | wc -l`. Pak již stačí při každém opakovnání poslat na stdin ‚.‘. Místo sleep v příkladu lze samozřejmě uvádět smysluplnější příkaz:

( for i in 1 2 3 4 5 6; do; sleep 2s; echo .; done) | \
   Xdialog --progress 'Probíhá zdlouhavá činnost...' 0 0 6

progress.png

Nejen výstupy jsou potřeba, ale i vstupy jsou důležité. Jednoduchý inputbox je opravdu snadný. Zadaný řetězec jde do proměnné a tlačítka lze kontrolovat pomocí návratové hodnoty:

XY=`Xdialog --stdout --inputbox 'Vstup:' 0 0`; echo $XY

vstup.png

Základní rozhodování lze taktéž realizovat snadno:

(Xdialog --yesno 'Ano nebo Ne?' 0 0 && echo ano) || echo ne

yesno.png

Ještě se podíváme na velmi častou akci – určení cílového nebo zdrojového souboru:

Xdialog --stdout --fselect "$HOME/*.txt" 0 0 || echo nic

filedialog.png

Další možnosti už zde představovat nebudu a zájemci se mohou podívat na stránku „Xdialog v2.1.2 documen­tation“ , kde je mnoho příkladů. Jen telegraficky pro představu uvedu, že tam najdete různé listboxy včetně stromových struktur, posuvníky, checkboxy, spinboxy, samozřejmě dialogy pro výběry souborů a adresářů a dokonce i takové prvky, jako je kalendář nebo výběr barvy.

Předchozí volby použité v příkladech a určené typem dialogu jsou doprovázeny též obecnými nastaveními, kde je možno nastavit titulek okna, třídu okna, možnost jeho uzavření. Uvnitř dialogů je možné požadovat zobrazení ikony, potlačení různých tlačítek, pípání a další možnosti. Dále je možno zvolit, zda se obsah vstupu vypíše na standardní výstup, nebo na standardní chybový výstup, jaký bude oddělovač, pokud vystupuje více hodnot atd.

CS24_early

Na stránkách programu lze nalézt množství přehledné dokumentace včetně mnoha příkladů a není nutné mít obavu z nějakých složitostí, Xdialog se používá opravdu velmi jednoduše.

Závěrem nelze než popřát mnoho uživatelsky přítulných scriptů. Xdialog je jednoduše použitelný program, který má za cíl zprostředkovat ve scriptech dialogové rozhraní. Neumí nic víc než právě toto, a umí to dobře.

Byl pro vás článek přínosný?

Autor článku