Hlavní navigace

Xdialog

Martin Lebeda 27. 1. 2005

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.

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.

Našli jste v článku chybu?

1. 2. 2005 10:21

uživatel si přál zůstat v anonymitě
Hm, a nevite nekdo o nejakem konvertoru grafika > ascii ?
A rejpalove at si nechaji reci o googlu, ptam se tu, neb je lepsi se zeptat znalcu, nez ztracet cas necim 10x nalezenym. Navic je to tu snad komunitni sajta, ne? Tak proc nevznest dotazek ... ?!

29. 1. 2005 15:07

Pert (neregistrovaný)

No a ja nejsem zvyklej na mym oblibenym portalu na takovy lidi, ktery ustavicne rejpaj.

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Ohrozí Freedom TV přechodové sítě?

Ohrozí Freedom TV přechodové sítě?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí