Storm WIZARDPavel Čížek
Nedávno přišla firma HAAGE & PARTNER na trh s novým vývojovým prostředím StormC;
tím však její aktivity na poli vývojářských produktů pro Amigu neskončily. Vytváření uživatelského prostředí (GUI = Graphical User interface) na Amize
rozhodně není jednou z nejjednodušších součástí vývoje aplikací. Od systému 2.0
zde sice máme GadTools.library, která alespoň standardizuje uživatelské
rozhraní, při jeho tvorbě je však programátor odkázán sám na sebe nebo některý z
sharewarových produktů příkladem může být GadToolsBox, Designer či (Edit.
Společným rysem těchto programů je to, že si myší „nakreslíte“ uživatelské
rozhraní a necháte si vygenerovat zdrojový kód. který by bylo nutné jinak psát
ručně. Přitom některé z těchto produktů umožňují vytvořit GUI závislé na
velikosti fontu, jiné zase dovolí requestery zvětšovat a zmenšovat. Souhrnně
řečeno - není ideální, ale lepší něco než nic.
Situaci se snažili řešit někteří autoři pomocí sharewarových knihoven, které by
usnadnili proces tvorby GUI a zároveň doplnili systém o ovládací prvky používané
v moderních operačních systémech. Mezi nejznámější patří MUI a BGUI – obě
knihovny nabízejí podobné možnosti, první však poskytuje za cenu větších
paměťových nároků maximální možnosti v oblasti konfigurace ze strany uživatele,
druhá jmenovaná knihovna se naopak orientuje na maximální rychlost, kompaktnost
a úsporu paměti.
V této situaci se zde objevuje demoverze (v době, kdy čtete tento článek je již
k dispozici i plně funkční verze) komerčního produktu pro návrh a tvorbu
uživatelského rozhraní - Storm WIZARD. Podívejme se, jak konkurence schopný je
tento komerční produkt formy HAAGE & PARTNER a zda se opravdu vyplatí investovat
100 DM do nákupu tohoto produktu. Registrační poplatky sharewarových produktů v
této oblasti jsou přibližně poloviční - to už samo o sobě napovídá, že cílem
firmy není finančně zruinovat programátory (obzvláště sharewarové), nýbrž učinit
produkt cenově dostupný. Seznámení
Jaká je tedy filozofie práce a vytváření GUI se Storm WIZARDem? Od výše
zmíněných produktů se odlišuje především tím, že definice uživatelského rozhraní
je stále uložena v externím souboru, z něhož si program využívající dané
rozhraní nahraje za běhu potřebná data. Podobně tomu je například ve Windows,
ale i na Macích - tam však tento soubor se zdroji či prostředky (podle
platformy) může obsahovat i data, které nejsou přímo svázána s GUI, a navíc bývá
obvykle přilinkován v závěrečné části kompilace k hlavní části programu.
Podstata práce spočívá v tom, že s editorem GUI Storm WIZARDem -je dodávána
knihovna Wizard.library, která umožňuje programu pracovat s binárními daty
vytvořenými Storm WIZARDem. Pomocí funkcí této knihovny program nahraje potřebná
data, zobrazí okno s GUI, získává od ovládacích prvků informace atd.
Jaká je výhoda tohoto pojetí? Výhod je několik. Je zřejmé, že odpadá problém s
generováním zdrojového kódu - nejste tedy nuceni používat programovací jazyky
podporované daným nástrojem, ale můžete použít jakékoliv vývojářské prostředí.
Navíc není nutné po každá změně uživatelského rozhraní nutno provádět generování
kódu a následnou rekompilaci celého programu. Jistě není nutné dále rozvádět.
jak výhodné je takovéto oddělení vlastního programu a definice uživatelského
rozhraní.
Další rysy tohoto produktu vycházejí z toho, že data vlastně zpracovává sdílená
knihovna, která byla autory programu vytvořena - podobně jako je tomu u výše
zmíněného MUI či BGUI. Pro má Storm WIZARD, přesněji GUI jím vytvářené, mnoho
společného právě s MUI. Především není nutné se omezovat na ovládací prvky
podporované GadTools.library -jak za chvíli uvidíte, autoři toho využili
skutečně vrchovatě. Dalším typickým rysem je automatické přizpůsobování se
velikostí fontů a změně velikostí oken. S tím samozřejmě souvisí způsob návrhu
GUI - neurčují se nějakým způsobem relativizované souřadnice (jak je tomu
například v GadToolsBoxu či ve Windows), ale popíše se rozmístění objektů do
skupin vertikálních a horizontálních (popř. minimální velikost objektu) a
Wizard.library tlačítka a jiné objekty uživatelského rozhraní vhodně v okně
rozmístí. Pokud by tedy bylo třeba navrhnout jednoduché okno pro výběr souboru,
„sdělíte“ programuje chcete mít pod sebou seznam, textové pole (string gadget) a
pod tím (vedle sebe) čtyři tlačítku.
Lze tedy říci, že Storm WIZARD je založen na principech výrazně usnadňujících
návrh a tvorbu uživatelského rozhraní. Otázkou samozřejmě je, zda realizace
„nepokulhává“ za vlastní myšlenkou na to se podíváme nyní. Vlastnosti GUI
V této části bych se rád pozastavil u některých novinek charakteristických
obecně pro objekty uživatelského rozhraní vytvářené Storm WIZARDem (jak jsem již
poznamenal, nejedná se o objekty GadTools.library, ale o objekty definované ve
Wizard.library).
Základní výhodou je samozřejmě klávesové ovládání jednotlivých prvků
uživatelského rozhraní, o které se „to postará samo“. Kromě toho lze každému
objektu přiřadit nápovědu, která se zobrazí na liště obrazovky, pokud je myš
umístěna nad daným objektem. Základní podporu pro sledování pohybu myši nad
prvky GUI zavedl až systém 3.0. Storm WIZARD tuto podporu doplňuje i pro systém
2.x a navíc provádí automatické zobrazování nápovědy. Není to samozřejmě tak
efektní, jako bublinová nápověda v MUI 3.x, ale svou funkci splňuje více než
dobře. Každý objekt má navíc přiřazen konfigurační řetězec, který lze číst i
definovat - to umožňuje jednoduchou implementaci uživatelem definovaných menu či
tlačítek, jak ji (na Amize) známe z mnoha programů typu DOpus, GoldEd a dalších.
Dalším charakteristickým rysem je určování polohy jednotlivých objektů určuje se
rozmístění do vodorovných a svislých skupin. Kromě toho lze určovat minimální
rozměry objektů a výšku objektů relativně k výšce použitého fontu. Pokud je
umístěno více objektů v jedné skupině, je možné navíc určovat rozmístění
jednotlivých objektů pomocí specialitek jakými jsou údaje o procentuálním
množství volného místa na okrajích a mezi objekty či priorita objektu při
určování místa, které mu bude přiděleno. Pokud vám to nestačí, je možno
umísťovat relativní mezery ručně mezi kterékoliv dva objekty.
Jednou z velkých vymožeností jsou vzájemné vazby objektů. Objekty vhodného typu
lze mezi sebou svázat funkční vazbou. Například textovému poli přiřadíme text -
písmeno podtržené v tomto textu pak bude aktivovat příslušné textové pole; jiným
příkladem může být spojení seznamu a šoupátka, které jím bude pohybovat. Tato
spojení jsou používána a automaticky vytvářena i v GadTools.library. Kromě toho
však máte k dispozici „upozorňovací“ systém - na změnu stavu jistého objektu
může kterýkoliv jiný objekt libovolným způsobem zareagovat. Bude-li tedy
uživatel posouvat šoupátkem, může se zároveň v textovém poli průběžně zobrazovat
příslušná číselná hodnota nebo se může měnit stav jistého cyklovacího gadgetu. A
toto vše se děje automaticky, bez nutnosti speciální podpory programátora.
Analogie s MUI se opět nabízí.
Na závěr snad ještě drobnost - pro pohodlí uživatele může program využívající
Wizard.library aktuální stav GUI při ukončení programu (tj. velikost okna a s
ním související rozmístění ovládacích prvků) uložit zpět do souboru. Uživatelské rozhraní
Pozastavme se nyní u objektů, které můžete při tvorbě uživatelského rozhraní
využívat. Většinu z nich můžete vidět na obrázcích (a většinu z nich používá i
samotný Storm WIZARD). Samozřejmostí je možnost určit kromě velikosti objektů i
použitý font (je-li třeba použít jiný než standardní font obrazovky), popř.
vzhled rámečků, textů a mnoho dalšího.
Mezi základní objekty patří vertikální a horizontální skupiny. Ty jednak
sdružují objekty, které mají být umístěny pod sebou či vedle sebe. Navíc je
možno danou skupinu libovolně orámovat a přiřadit jí popisný text. Skupině lze
přiřadit i více popisných textů - pak vzniká několik skupin s totožnou polohou,
které se překrývají. Přepínat mezi nimi lze pomocí záložek; v případě
horizontální skupiny to jsou v podstatě „kartotéční lístky“ známé z Windows 95
či Final Writeru 4.0, v případě vertikálních skupin se výsledný vzhled podobá
sešitům z OS/2 Warp. Kromě oddělování skupin lze použít i oddělování linkou či
mezerou.
Klasická tlačítka již nemusí obsahovat pouze text, ale také libovolný obrázek ve
formátu IFF nebo také vektorový obrazec. Standardně jsou k dispozici „vektorové“
podoby tlačítka pro výběr souboru, adresáře či fontu. Není ovšem problém
definovat přímo v programu vlastní vektorový obrazec. S dalších objektů, které
nejsou běžně dostupné v systému Amigy lze jmenovat „popup“ gadgety -jedná se o
tlačítka, při jejichž stlačení se objeví seznam textů či sada obrázků, z nichž
si (podobně jako při volbě položky menu) vyberete požadovanou položku. I
klasické cyklovací gadgety jsou ve Storm WIZARDu tohoto typu - vzniklý efekt je
pak podobný jako při používání utilitky CycleToMenu. Mnozí také ocení rozšíření
možností klasického „ListView“ gadgetu - můžete definovat seznamy obsahující
více sloupců nebo libovolnou stromovou strukturu. Z mnoha dalších drobností bych
jmenoval například „kalendářní“ tlačítko či informační pole definované
libovolným formátovacím řetězcem jazyka C. Další poznámky
Mezi další drobnosti zpříjemňující život programátora na Amize patří
například editor requesterů - stačí nadefinovat text requesteru, příslušná
tlačítka a zavolat příslušnou funkci Wizard.library. Jaká že je to výhoda?
Requestery vypadají stejně jako klasické systémová, ale máte k dispozici
klávesové ovládání.
Zatím jsme se nezmínili o tvorbě menu. Zde nezbývá než konstatovat, že jsou
podporovány všechny možnosti systému OS 3.x. Kromě toho je opět doplněno
automatické zpracování a zobrazení nápovědy (stačí zadat její text) a i pro menu
je k dispozici konfigurační řetězec a s ním související možnosti. Závěr
Doposud zněla samá pozitiva. Jak již patrně z popisu a vlastní zkušenosti
vás uživatelů vyplynulo, platí „je to sice moc pěkné, ale každá sranda něco
stojí“. Stejně jako v případě již zmiňovaného MUI, nelze používání
komplikovanějších requesterů doporučit na holé A500 & spol. Pokud se jedná o
jednodušší okna, která nevyužívají dnes tak moderních záložek a tím vlastně
umísťují do okna vícenásobný requester, je rychlost dostačující. Pokud bych měl
provést srovnání s MUI, mohu říci, že při rozmisťování objektů v okně je mírně
rychlejší, vykreslení okna je však výrazně rychlejší v porovnání se
Wizard.library. MUI má však větší nároky a především komerční programátor by
neměl používat něco, co si musí uživatel navíc sám zaregistrovat (a zaplatit),
aby dosáhl plné funkčnosti. Jako obvykle dospíváme k tomu, že MUI je obecně
těžko hodnotitelný fenomén.
Vraťme se ale k Storm WIZARDu. Myslím si, že vlastní produkt mohu (i na základě
demoverze) vřele doporučit - obzvláště po odchytání některých dětských nemocí,
které se určitě v první verzi objeví. Navíc, pokud by se někdy objevila nová
verze Amiga OS, postačit vyměnit Wizard.library (která by v tom případě patrně
byla výrazně menší) a bude možné používat již vytvořené rozhraní. Hlavní
překážkou v tomto případě jsou samotní uživatelé. Vytvářené aplikace budou v
mnoha případech patrně spustitelné s 1 MB RAM na A500, ale ... Rychlost nebude
příliš slavná a u větších aplikací pro vážnou práci stejně nezbude příliš velký
prostor (to stejně platí již dnes).
Storm Wizard |
Hodnocení: 8,0 z 10 |
Autor:
Haage&Partner |
Cena: DM 98,- |
Typ: komerční |
+ |
celková koncepce, mnoho
nových ovládacích prvků, jednoduché programování |
- |
relativně pomalá
Wizard.library |
Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|