|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
Perl (100) - Curses - použití hotových widgetůModul Curses::UI je objektově-orientovanou nadstavbou pro Curses a umí vytvářet textová uživatelská rozhraní rychleji a lépe, než jsme toho byli schopni dosud.
Curses::UI je objektově orientovaný modul, který poskytuje rozhraní pro práci s Curses. Psaní aplikací pomocí Curses::UI je daleko rychlejší. To především díky tomu, že zde již máme předprogramované komponenty (widgety), ze kterých se programy skládají. Modul je třeba nainstalovat obvyklým způsobem.
Vytvoření objektuPro inicializaci Curses::UI módu je třeba začít těmito dvěma řádky. Vytvoříme objekt typu Curses::UI.
Odteď již můžeme používat nadefinované widgety. Ještě předtím si ale zmiňme alespoň dva parametry konstruktoru. Prvním je -color_support => 1, který zapíná podporu barev. Pak je zde parametr -language (hodnota pro češtinu je czech - to znamená, že se použije překlad v modulu Curses::UI::Language::czech), avšak ten není zmíněn v dokumentaci.
my $cui = new Curses::UI(-color_support => 1);
Abychom předali řízení programu objektu, zavoláme na konci metodu mainloop.
$cui->mainloop;
Dnes si představíme několik widgetů z Curses::UI a příště je použijeme k napsání textového editoru. DialogyZačněme zobrazováním dialogových oken. Díky metodě dialog je zobrazování velmi jednoduché a rychlé - stejně tak jako u všech dalších widgetů, které budou následovat. Existuje několik druhů dialogových oken. Nejjednodušším použitím je informativní dialog, kterému předáme pouze řetězec. Chceme-li dialog s otázkou, je třeba definovat několik parametrů. Předně to je -message, což je samotná otázka. Dále jsou to tlačítka a jejich hodnoty. Jako tlačítka lze použít hodnoty yes, no a cancel. Texty tlačítek ale nakonec budou zobrazeny ve vybraném jazyce. Návratovou hodnotou metody dialog je jedna z hodnot parametru -values podle toho, které tlačítko bylo stisknuto. Tento příklad ilustruje práci s dialogy.
Vytvořili jsme dva dialogy. Na obrázku můžeme vidět, jak bude v takovém případě vypadat program. Existuje ještě další typ dialogu, který se používá u hlášek pro varování o chybách. Zde ovšem už používáme metodu error.
MenuNezbytnou součástí většiny složitějších aplikací je menu. Pro něj zde máme definován widget Curses::UI::Menubar. Umí všechny základní vlastnosti menu včetně vytváření submenu. Pro přidání widgetu se se používá metoda add, která má řadu parametrů. Prvními dvěmi hodnotami jsou ID a jméno widgetu - tedy v případě menu je to Menubar. Dále můžeme přidat parametry -fg a -bg pro barvu textu a pozadí. Nejdůležitějším parametrem však je -menu, kterému předáváme složitou datovou strukturu. Nebudeme si ji blíže rozebírat, protože by to mělo být zřejmé z následujícího příkladu.
Nyní přidáme menu widget do aplikace
Jedna z položek vykonává po vybrání podprogram exit_dialog, který musíme dopsat.
Po stisku této položky a potvrzení se program ukončí. Vazby a klávesové zkratkyFunkcí set_binding můžeme navázat k podprogramům klávesové zkratky. set_binding má tento tvar volání.
$cui->set_binding(\&podprogram, klávesová_zkratka);
Konkrétní příkaz pro svázání zkratky Ctrl-o s voláním podprogramu open_file může vypadat třeba takto.
$cui->set_binding(\&open_file, "\\cO");
Velice často se jako úvodní parametr používají anonymní podprogramy. Následující příkaz sváže stisk tabulátoru s přesunem kurzoru na menu.
$cui->set_binding(sub {$menu->focus();}, "\t");
Metodu focus, která přesune kurzor do příslušného widgetu, lze díky dědičnosti volat i nad většinou ostatních widgetů, které si dnes budeme představovat nebo které naleznete v dokumentaci k Curses::UI. OknaMimo menu musí být všechny labely v okně. Pro vytváření dalších widgetů je tedy třeba nejprve vytvořit jim okno.
my $okno = $cui->add("okno1", "Window");
A poté tomuto oknu přiřadíme widget.
my $widget = $okno->add(...);
LabelPro nápis kamkoliv na obrazovku slouží widget Label, kterému stačí předat text a souřadnice v aktuálním okně.
TexteditorDalším widgetem, se kterým se seznámíme, a který budeme ještě potřebovat, je Texteditor, v němž může uživatel editovat text.
Prohlížeč adresářové strukturyAby mohl uživatel vybírat soubory z adresářové struktury, máme zde widget filebrowser. Ten ještě dále můžeme dělit na openfilebrowser a savefilebrowser. Parametrem widgetu filebrowser je cesta, ve které má výběr začínat.
KalendářPro zobrazení kalendáře zde je widget Calendar. Parametr -date specifikuje úvodní datum, na které má být kalendář nastaven.
RadiobuttonyJeště uveďme použití widgetu Radiobuttonbox. Pomocí nich může uživatel vybírat jednu z definovaných voleb. K podobným účelům lze užít též Listbox.
ProgressbarNa závěr si uveďmě widget Progressbar. Ten obvykle uvádí, kolik procent něčeho je hotovo. Příklad progressbaru, který 20 sekund čeká, je zde.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |