AMIGA REVIEW obsah časopisu online!
  Domov     Software     Hry     Obaly     Download  

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

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )