Jak se dělá GUI?Pavel Čížek
S GUI se určitě všichni při práci s počítačem setkáváme velice často, dokonce
téměř neustále (alespoň na Amize). Ze nevíte, co to je?
GUI je zkratka pro Graphical User Interface = grafické uživatelské rozhraní
(někdo by raději použil interface = meziksichtík). Zkratka GUI tedy zahrnuje
všechny grafické prvky, které se vám na obrazovce objevují každou chvíli a které
slouží ke komunikaci mezi vámi = uživatelem a programem vlastním. Tyto prvky se
ovládají myší, popř. i z klávesnice, a umožňují uživateli snadné a rychlé
ovládání té či oné aplikace. Patří mezi ně např. menu, různá tlačítka, šoupátka
(jak nazvat česky scroller?), seznamy, pole pro vstup textů a čísel (string
gadgety) a mnoho dalšího.
Otázkou zůstává, jak takové uživatelské rozhraní pro program vytvořit. Jistě si
dovedete představit mnoho komplikovaných i jednodušších cest. Na to, co nám
nabízí v této oblasti Amiga, se nyní podíváme podrobněji.
Cesta tradiční
Klasickou a nejobecnější metodou je napsání části programu pro vytvoření GUI
přímo programátorem. V nejhorším případě to může být včetně ovládání
jednotlivých prvků (tj. musíte napsat např. funkci pro zobrazení tlačítka,
stisknutého tlačítka atd.). Je zřejmé, že tato cesta je zajisté velmi pracná (i
když v MS-DOSu vám nic jiného nezbývá, pokud nepřivyknete Borlanským
kompilátorům a TurboVision). Na Amize máte již od prvních verzí systému k
dispozici funkce pro vytváření a likvidaci ovládacích prvků - řeknete systému,
jak má daný ovládací prve vypadat a jak se má chovat, a dál se o něj nestaráte.
Příslušné operace při aktivaci uživatelem obstará systém a vám jenom pošle
zprávu, že s objektem někdo manipuloval.
Je to jednodušší, ale... I tento druhý způsob je dost pracný (představte si, že
budete pro každý prvek muset zadat kromě vzhledu jeho rozměry a pozici v bodech
...). Další nevýhodou je jistá nestandardnost uživatelského rozhraní každý
programátor považuje za estetické a funkční něco jiného a tak může vzniknout
jistý chaos; ovládací prvky se chovají sice stejně, ale podoba veškerá žádná. S
nástupem systému 2.0 byla snaha tuto situaci řešit - vznikla GadTools.library.
Tato knihovna má předdefinované různé objekty uživatelského rozhraní, které sama
vytváří standardním způsobem; to zaručuje jednotnost vzhledu i jednodušší tvorbu
GUI. Navíc s nástupem OS 2.0 byly do systému zavedeny základy objektově
orientovaného systému pro Intuition (tzv. BOOPSI). To umožňuje např. využívání
ovládacích prvků již někým vytvořených (samozřejmě podle jistých pravidel) apod.
Příkladem může být např. "barevné kolo", které známe z programu pro nastavení
palety barev u OS 3.0 a výše. Tak lze téměř neomezeně rozšiřovat systém. Stále
tím však není vyřešen problém zadávání souřadnic přímo do programu apod.
Pomocné knihovny
Z výše zmíněných důvodů začaly vznikat sdílené knihovny funkcí, které mají
tvorbu uživatelského prostředí ještě více usnadnit. Tyto knihovny zjednodušují
definici ovládacích prvků a často provádějí i umísťování jednotlivých objektů v
závislosti na velikostí okna i aktuálního fontu. Programátor pak pouze knihovně
sdělí např. "chci mít pod sebou dvě políčka pro vstup čísel a vedle toho
tlačítko OK a tlačítko CANCEL". Konkrétní umístění v okně i velikostí objektů
pak určí knihovna. Příkladem je může být gtlayout.library či GuiTools.library.
Některé knihovny pak ještě nabízejí navíc nové BOOPSI objekty (např.
BGUI.library, o níž se ještě později zmíním), které nejsou v systému, jako popup
menu nebo různé vektorové obrázky.
Stavitelé GUI
Stavitelé GUI (neboli GUI buildery) jsou programy, které slouží k tvorbě
uživatelského prostředí jednoduchou a interaktivní cestou. Princip spočívá v
tom, že si na obrazovce vytvoříte a sestavíte požadované ovládací prvky (v
podstatě si je nakreslíte myší), vyzkoušíte si je a pak si necháte vygenerovat
příslušný kód ve zvoleném programovacím jazyce (neboť zde nejsou tzv. zdroje či
prostředky jako ve Windows či v MacOS - tato varianta s generováním zdrojového
kódu však umožňuje programům na Tvorbu GUI téměř neomezeně rozšiřovat svoje
možnosti, neboť nejsou ničím omezovány). Je to velice pohodlné, ale musí se
dodržet jedna podmínka - do vytvořeného kódu by se nemělo zasahovat, aby bylo
možné ho znovu vygenerovat při jakékoli změně ve vašich plánech aniž by se vám
ztratila již jednou vykonaná práce. Podívejme se nyní na některé sharewarové
produkty, které patří do této kategorie (existují sice i komerční, ale s těmi se
asi nepotkáte a málokdo bude potřebovat víc než zde zmíněné produkty mohou
nabídnout). Důležité upozornění - většina kvalitních programů pro tvorbu GUI
pracuje a generuje kód pro OS 2.0 a výše.
Jedním z nejstarších a nejznámějších programů této kategorie je GadToolsBox,
jehož autorem je Jan van den Baard. Jedná se o giftware. Tento program striktně
podporuje GadTools.library + systém 2.0 a vychází přesně z jeho možností.
Poslední verze, která je mi známa, je verze 2.0 z konce roku 1993 - je otázka
zda se vývoj zastavil či ne. GadToolsBox umožňuje tvorbu aplikací obsahujících
standardní ovládací prvky jako tlačítka (buttons), zatržítka (check boxes),
cyklovací tlačítka (cycle gadgets), seznamy (list boxes), šoupátka (scrollers) a
mnoho dalších včetně menu (pouze textového). Vytvořené objekty může snadno
přesouvat, měnit jejich velikost, kopírovat, všelijak zarovnávat manipulace s
objekty je na velmi dobré úrovni. Můžete také přidávat různé rámečky, texty
apod. Měnit lze i všechny atributy oken a obrazovek.
GadToolsBox umožňuje pracovat na více projektech. Kód můžete nechat vygenerovat
pro Céčko, Assembler či Modulu. Kromě rutin a dat pro vytvoření a zrušení
ovládacích prvků může tento program vygenerovat smyčku pro zpracování zpráv od
vytvořených objektů a prázdná těla funkcí, která stačí vyplnit příkazy pro akce
odpovídající aktivaci příslušného objektu. Dokonce můžete nechat generovat kód,
který nastaví velikostí ovládacích prvků a okna podle velikostí aktuálního
fontu. Jedinou nevýhodou tohoto programu je v podstatě striktní podpora možností
systému 2.0, nic víc nemáte k dispozici.
Další z programů, o nichž bych se rád zmínil je Designer, jehož autorem je lan
OConnor. Je podstatně novější (konec roku 1994) a v řadě ohledů předčí již
zmíněný GadToolsBox - je to ale skutečný shareware a příslušný poplatek činí asi
30 dolarů. Hned v úvodu bych měl poznamenat, že Designer umí importovat projekty
vytvořené v GadToolsBoxu. V čem je tedy lepší či výkonnější? Co se týče vlastní
Korby GUI, je snazší na ovládání díky speciálnímu oknu s nástroji, které máte
stále k dispozici. Mnozí jistě ocení také všude přítomnou
nápovědu. Další výhodou je plná podpora systému 2.1 a 3.0. Můžete tedy využívat
nové možnosti ovládacích prvků a především plné podpory lokalizace. Vhod přijde
také podpora gadgetů, která GadTools.library nepodporuje. Kromě různých rámečků
a textů umožňuje vkládat i jakékoliv neHAMové obrázky a používat je i přímo v
ovládacích prvcích. Navíc je zde možnost používat libovolné již existující
BOOPSI objekty. Za zmínku stojí i možnost vytvoření menu z různých fontů,
obsahující obrázky apod. Výhodný je důsledně asynchronní design. Můžete pracovat
zároveň na více projektech i na více prvcích téhož projektu.
I zde je mnoho možností při generování zdrojového kódu. Ten může být vygenerován
pro Céčko, Assembler či Pascal. Kromě toho, co umí GadToolsBox můžete navíc
nechat vygenerovat např. celý program včetně funkce main(), který lze
zkompilovat a spustit. Je zde podpora lokalizace - můžete vygenerovat nejenom
zdrojový kód programu, ale i soubory pro CatComp. Můžete si nechat vygenerovat i
funkce pro otvírání a zavírání zvolených knihoven a mnoho dalšího.
Poslední produkt, který bych vám rád představil, je VisualArts - autor je Danny
Y. Wong. Tento program má poněkud odlišnou koncepci. VisualArts jsou spíše
prostředím pro vývoj celé aplikace, resp. celé její části. Všechny prvky, s
nimiž se setkáte, lze považovat za objekty (např. ovládací prvky, seznamy, okna
nebo funkce v jazyce C) a lze s nimi různým způsobem manipulovat. Co se týče
vlastní tvorby GUI (vlastního editoru), máte i zde k dispozici vyspělé nástroje
pro manipulaci s již vytvořenými prvky stejně jako u předchozích produktů. Vhod
přijde lišta s nástroji a Undo. Kromě- standardních ovládacích prvků zde má
vývojář k dispozici např. PopUp menu a může používat již existující BOOPSI
objekty. Navíc jsou zde připraveny nejrůznější kreslicí nástroje - můžete
kreslit čáry, obdélníky, elipsy (vše s libovolnými vzory), umísťovat obrázky
apod. Jiným způsobem je zde pojato i přizpůsobování objektů změnám velikostí
oken - každému prvku můžete nastavit, zda se jeho poloha a/nebo velikost má
měnit s velikostí okna nebo zůstávat konstantní.
Co z VisualArts tvoří komplexní program je schopnost každému objektu přiřadit
kromě jeho charakteristických vlastností také tzv. skript. Skript je v podstatě
Funkce napsaná jazyce C (může být vygenerována přímo VisualArts). Editor pro
tvorbu skriptů lze vyvolat přímo z prostředí VisualArts. Tvorba programu pak
vypadá tak, že definujete několik skriptů, přiřadíte je nakresleným ovládacím
prvkům a necháte si vygenerovat celý výsledný program, který stačí zkompilovat a
spustit. Kromě toho dostanete k dispozici řadu "vestavěných" funkcí, které vám
umožní triviálním způsobem používat ARexx, řečové zařízení a mnoho dalšího ... I
toto je shareware v ceně kolem 30 dolarů!
GUI knihovny a BOOPSI
O různých knihovnách pro podporu a snazší tvorbu GUI jsem se již zmiňoval.
Vzniklo jich poměrně dost - nemůže se ale o uživatele chtít, aby ke každému
programu měl jinou GUI knihovnu. Skutečně se to neděje, neboť většinu z nich
nikdo nepoužívá. Chtěl bych se ale zmínit o projektu, který se prosadil a který
spadá do obou předchozích kategorií.
MUI - Magic User Interface (snadno domyslíte význam), je projekt kompletně
postavený na BOOPSI objektech. Má několik základních rysů. Je založen na
knihovně umožňující používat všechny ovládací (BOOPSI) prvky, které se v průběhu
vývoje počítačů ukázaly jako perspektivní (tlačítka, seznamy, popup menu,
"kartotéční lístky" a v podstatě cokoliv, co jste kde mohli vidět). Navíc
poskytuje podporu aplikačních ikon, oken, commodities.library a ARexxu, vzájemné
komunikace objektů a mnoho dalšího. Přímé použití programátorem je velmi
jednoduché. Od verze 2.2 (?) se navíc dodává pro tento systém také GUI builder,
což dále usnadňuje vývoj. Dalším rysem je, že programátor sice určuje, jaké
ovládací prvky v aplikaci budou, ale jejich vzhled, klávesnicové ovládání a
mnoho dalšího určuje sám uživatel pomocí konfiguračního editoru - dokonce je
možné mít pro každou aplikaci různá nastavení.
Za vše se však musí něčím zaplatit. Tento systém asi těžko budete provozovat bez
hardisku nebo s 1 MB paměti (ne že by to nebylo možné, ale nechtěl bych s tím
pak pracovat). Na disku navíc vzniká (u nižších verzí) spousta všude rozházených
souborů. Na MC 68000 příliš velkou rychlost také nevykouzlíte. Nicméně při
patřičném vybavení je výsledný efekt dokonalý.
Proto byla dokončena již zmíněná BGUI.library (autor stejný jako u GadToolsBoxu
- BGUI vznikla původně jako pokus, autor si chtěl vyzkoušet programování BOOPSI
objektů), která je také založená na BOOPSI a nabízí programátorovi podobné
(téměř stejné) možnosti i přístup při programování. Navíc velice elegantním
způsobem umožňuje použití commodities systému, ASL requesterů a mnoho dalšího.
Schází zde však rozsáhlé možnosti konfigurace uživatelem (to pro mnohé ale není
vada!). Díky tomu tato knihovna nabízí řadu výhod oproti MUI. Vše potřebné se
nalézá v jediném souboru - BGUI.library, který má pouze 100 KB (raději ani
nebudu porovnávat s MUI). Rychlost je dobrá i případě těch nejpomalejších modelů
Amigy (to nejpomalejších neznamená nepoužitelných jako u PC!). Tato knihovna je
volně přístupná autorům freeware a PD programů, pro shareware a komerční
programátory je nutná registrace a souhlas autora.
Závěr
Jak vidíte, nabídka v této oblasti je velice široká a každý si určitě má z
čeho vybrat. Výhoda používání nových knihoven spočívá v jednoduchosti kódu a
jeho malé délce. Navíc poskytují často řadu rozšiřujících funkcí. Programy na
tvorbu GUI mají naopak tu výhodu, že vycházejí z možností systému a uživatel
nebude potřebovat žádné dodatečné knihovny. Navíc řada z těchto programů je
schopna užívat externí objekty. A co zbývá nakonec? Popřát autorům tohoto
softwaru co ne větší podporu uživatelů, aby mohli pokračovat v započaté práci. 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
|