1. Úvod

V tomto článku se blíže seznámíme s tím, co uživatel na NEXTSTEPu vidí jako první -- s jeho grafickým uživatelským rozhraním. Ukážeme si základní prvky GUI společné všem aplikacím NEXTSTEPu a zároveň se seznámíme s jejich standardním využitím. Operační systém NEXTSTEP patří mezi systémy s extrémně vysokou konzistencí mezi aplikacemi, takže uživatel nové aplikace obvykle již řadu jejích služeb důvěrně zná -- jsou totiž přesně stejné, jako odpovídající služby aplikací ostatních. To je důsledkem dvou faktů -- NEXTSTEP obsahuje velmi podrobnou 'příručku' pro programátory, ve které je popsáno jakým způsobem se mají aplikace chovat, které vlastnosti jsou závazné, které pouze doporučené a podobně. Druhým a ještě důležitějším faktorem je objektová podstata NEXTSTEPu spojená s tím, že pro všechny základní prvky grafického uživatelského rozhraní jsou v NEXTSTEPu připraveny hotové objekty. Programátor tyto objekty pouze použije na vhodném místě; tím je zajištěno na jedné straně standardní chování a vzhled aplikace a na straně druhé má programátor ušetřené množství práce.

V pozdějších dílech našeho seriálu, věnovaných programování, si skládání hotových objektů samozřejmě ukážeme podrobněji. Tentokrát se zaměříme na jejich vzhled a chování.



2. Uživatelské rozhraní NEXTSTEPu

Grafické uživatelské rozhraní NEXTSTEPu nezapře dědictví po Macintoshi, který byl až do zavedení NEXTSTEPu na trh známý jako operační systém s nejlepším grafickým uživatelským rozhraním vůbec. Komunikace uživatele se systémem je založena na myši jako základním vstupním zařízení, na oknech sloužících pro zobrazování dat a na ikonách a grafickém menu pro zadávání příkazů.

Oproti svům předchůdcům uživatelské rozhraní NEXTSTEPu ani nepřináší zásadně nové prvky; spíše dotahuje využití klasických ovladačů -- menu, ikona, okno a podobně -- do maximální možné dokonalosti. V následujících odstavcích se na ně postupně podíváme blíže a popíšeme si způsob, jakým jsou v NEXTSTEPu využity.



2.1. Myš

Myš je základním ovládacím prvkem NEXTSTEPu; prakticky všechny akce -- vyjma vkládání textu -- můžeme provádět pomocí myši. Pohybujeme-li myší po podložce, pohybuje se po obrazovce tzv. kurzor -- malý obrázek (obvykle šipka). Kurzor nemusí být vždy viditelný; některé aplikace jej mohou 'vypnout', aby nerušil např. při vkládání textu prostřednictvím klávesnice; kurzor se však vždy objeví pohneme-li myší.

S myší můžeme provádět tyto operace:
- posuneme myš po podložce tak, aby se kurzor dostal nad nějaký objekt na obrazovce -- říkáme, že jsme na objekt ukázali ('point');
- ukážeme-li na nějaký objekt, pak stiskneme tlačítko myši a ihned jej opět uvolníme, říkáme že jsme na objekt klepli ('click');
- na objekt můžeme klepnout rychle dvakrát za sebou; této akci budeme říkat poklepání nebo dvojité klepnutí ('doubleclick');
- stiskneme-li tlačítko myši nad nějakým objektem a držíme-li jej stisknuté, říkáme že jsme objekt stlačili ('push');
- stlačíme-li některý objekt a pak začneme pohybovat myší aniž bychom její tlačítko uvolnili, říkáme že objekt táhneme ('drag');
- odtáhneme-li jeden objekt nad druhý a tam uvolníme tlačítko myši, znamená to často pokyn druhému objektu 'zpracuj nějak první objekt'. Této akci říkáme vhození ('drag&drop').

Myš má nejčastěji dvě nebo tři tlačítka; NEXTSTEP s nimi zachází takto:
- prostřední tlačítko se na nic nevyužívá;
- levé i pravé tlačítko standardně funguje stejně -- chceme-li např. klepnout na objekt, je lhostejné které tlačítko k tomu použijeme. To je proto, že NEXTSTEP je připraven k portu i na systémy, jejichž myš má pouze jediné tlačítko;
- levému nebo pravému tlačítku však můžeme -- chceme-li -- přiřadit speciální funkci 'otevření menu' (prostřednictvím aplikace Preferences); pak samozřejmě pro ovládání objektů musíme používat druhé tlačítko:

Obecně (ale nikoli bez výjimek) platí:
- klepnutím můžeme objekt označit pro další zpracování. Pokud byl již předtím jiný objekt označen, odznačí se;
- přidržíme-li před klepnutím klávesu Alt, označí se všechny objekty mezi dříve označeným objektem a objektem, na který jsme klepli :

- přidržíme-li před klepnutím klávesu Shift, vybraný objekt se označí aniž by se případné dříve označené objekty odznačily. Klepneme-li s klávesou Shift na objekt, který již je označen, odznačí se:

- poklepáním objekty otevíráme nebo spouštíme;
- tažením objekty přemísťujeme;
- někdy můžeme tažením objekty i označovat -- v takovém případě se označí všechny objekty, přes které táhneme. Obvykle tomu tak bývá zahájíme-li tažení ve chvíli kdy kurzor neukazuje na žádný objekt. Tento režim je typický hlavně pro práci s grafickými objekty:



2.2. Klávesnice

Klávesnice je v NEXTSTEPu především zařízením pro vkládání textu. Můžeme ji do jisté míry využít i pro ovládání programů, ale její možnosti jsou omezeny -- existují příkazy, které lze provést pouze myší a ne prostřednictvím klávesnice. Poznamenejme, že ve většině případů to je spíše úmyslné omezení. Dobrým příkladem může být klasické okénko 'alertu':

zatímco volbu Save lze vyvolat stisknutím klávesy Enter (jak ukazuje ikonka zalomené šipky), můžeme volbu Don't Save provést pouze pomocí myši. Díky tomu je daleko menší pravděpodobnost, že ji vybereme omylem (a připravíme se tak o nově napsaný text).

Klávesy lze rozdělit na několik skupin:
- NEXTSTEP umožňuje vyvolat některé příkazy prostřednictvím tzv. klávesových alternativ. To jsou kombinace určené klávesy s přepínačem Command (na počítačích třídy IBM PC slouží jako Command standardně levá klávesa Alt);
- klávesy Insert, Delete, ..., PageDown mají v NEXTSTEPu jiný význam, než jaký jim přiřazuje MS DOS -- můžeme jimi např. ovládat hlasitost zvukového výstupu nebo jas obrazovky (umožňuje-li to použitý grafický adaptér);
- klávesa F1 slouží pro vyvoláni kontextové nápovědy -- přidržíme-li tuto klávesu, změní se kurzor na malý otazník; klepneme-li nyní na některý objekt, zobrazí NEXTSTEP nápovědu k tomuto objektu.

Chceme-li, můžeme rozložení kláves téměř libovolně změnit pomocí standardní aplikace Keyboard. Na obrázku např. vidíme definici francouzské klávesnice: v levém horním rohu okna je seznam klávesnic (tj. fyzických rozložení kláves) které jsou k dispozici na různých architekturách, na kterých NEXTSTEP pracuje, v dolní části je přiřazení znaků jednotlivým klávesám (které můžeme snadno měnit pomocí myši) a vpravo nahoře je definice označené klávesy (na našem obrázku klávesy Esc).



2.3. Menu

Každá aplikace má skupinu příkazů, kterými aplikaci můžeme ovládat -- tzv. menu. Vždy je viditelné menu právě aktivní aplikace; v NEXTSTEPu si však můžeme zvolit libovolné umístění menu na obrazovce nebo mimo ni -- chceme-li tedy, menu nemusí být vůbec viditelné a my máme více volného místa pro okna.. Jméno aktivní aplikace vidíme v titulku -- nejvyšším černém řádku menu. Příkladem může být menu standardního systémového editoru Edit:

Vertikální menu má proti klasickému horizontálnímu dlouhou řadu významných výhod; jen stručně:
- můžeme jej přemísťovat po obrazovce podle libosti;
- můžeme jej celé skrýt (a vyvolávat prostředtnictvím pravého tlačítka myši dynamicky);
- obsahuje v titulku jméno právě aktivní aplikace;
- přirozeně podporuje odtrhávací menu (viz níže);
- již v menu nejvyšší úrovně mohou být přímo příkazy, a ne jen submenu.

Menu obsahuje tři typy položek:
- obyčejná položka okamžitě vyvolá nějakou akci (např. Hide);
- položka ukončená třemi tečkami otevře panel (např. Print...);
- položka označená malým trojúhelníčkem otevře další menu -- tzv. podmenu.
Libovolná položka menu může být zobrazena šedým písmem namísto černého -- to znamená, že tato položka momentálně není k dispozici. Ergonomové firmy NeXT zjistili, že je při běžné práci výhodnější mít vždy stejné menu (ve kterém se tedy snadno orientujeme), než zobrazovat nad každým objektem jiné menu ve kterém musíme teprve pracně hledat požadovaný příkaz; aplikace NEXTSTEPu tedy většinou strukturu menu příliš nemění. Výjimkou je položka Windows, která vždy obsahuje seznam otevřených oken aplikace (a mění se tedy dynamicky podle toho jaká okna jsme otevřeli nebo zavřeli).

Z menu můžeme vybírat dvěma způsoby -- 'jako v GEMu' nebo 'jako na Macintoshi':
- klepneme-li myší na libovolnou položku menu, provede se odpovídající akce. Jestliže takto otevřeme podmenu, zůstane otevřené dokud jej nezavřeme dalším klepnutím na položku která jej otevřela:

- táhneme-li myš nad menu, provede se položka, nad kterou klávesu myši uvolníme. Jestliže takto otevřeme podmenu, uzavře se automaticky jakmile jej opustíme nebo jakmile z něj vybereme některý příkaz. Pokud jsme v aplikaci Preferences přiřadili některému tlačítku myši funkci 'otevření menu', můžeme druhý způsob práce s menu tímto tlačítkem vyvolat kdykoli a kdekoli.

Menu můžeme tažením za jeho titulek přemístit na libovolné jiné místo na obrazovce. Nemusíme se bát, že bychom si menu zakryli např. některým oknem -- menu je vždy viditelné v popředí a všechny ostatní objekty jsou až 'za ním'. Každá aplikace si pamatuje umístění 'svého' menu a bude jej udržovat i při dalším spuštění.

Otevřeme-li klepnutím klávesy podmenu, můžeme jej tažením za jeho titulek 'odtrhnout' od hlavního menu a umístit samostatně na libovolné místo na obrazovce. Chceme-li pak samostatné podmenu zavřít, klepneme na tzv. uzávěr -- malý křížek v jeho pravém horním rohu. Můžeme tak mít často používané příkazy neustále na obrazovce, připravené k aktivaci jediným klepnutím. Chceme-li, můžeme takto umístit na obrazovce všechny části hierarchického systému menu; podívejme se na kompletní systém menu aplikace Edit (pouze podmenu Services, kterých je příliš mnoho, jsou narovnána 'přes sebe'):

Některé příkazy z menu mohou mít přiřazeny klávesové alternativy -- již je známe jako kombinace kláves, jejichž stisknutí vyvolá akci stejně, jako kdybychom myší vybrali odpovídající položku z menu. Alternativy se vždy používají v kombinaci s klávesou Command, a jsou zobrazeny u pravého okraje menu -- kombinace Command-p např. vyvolá příkaz Print, kombinace Command-h ukryje všechna okna aplikace příkazem Hide. Je-li příkazová klávesa zobrazena jako velké písmeno, je zapotřebí zároveň přidržet klávesu Shift -- chceme-li tedy například uložit dokument pod novým jménem, můžeme vyvolat příkaz Save As kombinací Command-Shift-S.

Prostřednictvím aplikace Preferences můžeme definovat vlastní klávesové alternativy pro libovolné příkazy -- na obrázku např. vidíme uživatelsky nadefinovanou kombinaci Command-u pro příkaz Underline a kombinaci Command-Shift-W pro příkaz Window (v levé části okna, označené 'Menu location', je zároveň vidět nastavení standardní polohy menu na obrazovce -- zde v levém horním rohu):

NEXTSTEP definuje řadu standardních příkazů, které nalezneme v menu libovolné aplikace na stejném místě a které musí i stejně fungovat (např. kombinace Command-s vždy a ve všech aplikacích odpovídá příkazu Save). Programátoři (i případní zájemci z řad uživatelů) mají podrobný seznam těchto standardů shrnut v dokumentaci, která je standardní součástí NEXTSTEPu.



2.4. Okna a panely

Většina informací je v NEXTSTEPu prezentována prostřednictvím oken a panelů. Okna obsahují základní informaci -- např. dokument, který právě píšeme je zobrazen v okně. Panely slouží nejčastěji pro další zpracovávání informace, zobrazené v okně -- vlastní panel tedy má příkaz pro vyhledávání a záměnu textu, příkaz pro změnu použitého písma, příkaz pro změnu barvy a podobně. Příkladem může být obrázek:

Na něm vidíme jedno okno (UNTITLED.rtf) a dva panely -- korektor pravopisu a vyhledávací panel. Funkční rozdíly mezi okny a panely jsou minimální; snad jediný výrazný rozdíl spočívá v tom, že NEXTSTEP běžně zobrazuje okna všech běžících aplikací, ale panely pouze právě aktivní aplikace, takže uživatel má na obrazovce lepší přehled.

Okna i panely obsahují obvykle řadu společných ovládacích prvků:
- u horního okraje je titulek. Ten určuje co okno nebo panel obsahuje. Chceme-li okno nebo panel přesunout na jiné místo na obrazovce, můžeme táhnout myší jeho titulek;
- černý titulek reprezentuje tzv. aktivní okno -- okno nebo panel, které má černý titulek, bude reagovat na klávesnici;
- tmavě šedý titulek má hlavní okno, není-li zároveň aktivním oknem. Je-li aktivní (s černým titulkem) některý panel, budou se jeho služby vztahovat k hlavnímu oknu (s tmavě šedým titulkem);
- světle šedý titulek mají všechny ostatní okna i panely:

Zde jsou dvě okna (neúplné 01_GUI.rtfd a UNTITLED.rtf) a panel pro výběr písma. Černý titulek má panel; to znamená, že mu momentálně 'patří' klávesnice a můžeme do něj zapsat požadovanou velikost písma. Podle tmavě šedého titulku poznáme, že panel sám 'patří' oknu 01_GUI.rtfd, takže změníme-li jeho pomocí písmo, bude se změna týkat tohoto okna (a nikoli okna UNTITLED).
- v levém horním rohu okna nebo panelu bývá ovladač miniaturizace. Klepneme-li na tento ovladač, okno nebo panel se zmenší na pouhou ikonu a umístí se k dolnímu okraji obrazovky (odsud Microsoft okoukal taskbar; bohužel, nepřemýšlel přitom dostatečně, takže taskbar není zdaleka tak pohodlný jako ikony NEXTSTEPu). Ikonu okna můžeme kdykoli zvětšit na plný rozměr pouhým poklepáním; obrázek ukazuje ikonu, reprezentující okno 01_GUI.rtfd.:

- v pravém horním rohu naopak bývá tzv. uzávěr okna nebo panelu. Klepneme-li na něj myší, okno nebo panel se zavře. Uzávěr má obvykle vzhled ležatého křížku; ten někdy může mít prázdný střed -- takové okno (nebo panel) obsahuje nějaká data, která nejsou uložena na disk. Na předminulém obrázlku např. můžeme srovnat uzávěr panelu s písmy s 'neuloženým' uzávěrem okna UNTITLED.rtfd;
- u dolního okraje okna nebo panelu bývá často úzká lišta (vidíme ji opět na předminulém obrázku). Táhneme-li myší její střední část, můžeme měnit výšku okna nebo panelu; táhneme-li vodorovně některý z jejích okrajů, můžeme měnit šířku okna. Táhneme-li některý z jejích okrajů šikmo, můžeme měnit šířku i výšku okna zároveň;
- klepneme-li myší kamkoli do okna nebo panelu, aktivujeme jej: okno se přemístí do popředí a stane se aktivním. U některých oken může zároveň klepnutí vyvolat akci (nikdy to však nebude akce nevratná); chceme-li mít jistotu že klepnutí žádnou akci nevyvolá, klepneme na titulek okna;
- přidržíme-li klávesu Alt a klepneme na titulek některého okna nebo panelu, přemístí se okno do popředí. Aktivní a hlavní okno nebo panel se při této akci nemění. Držíme-li klávesu Alt, můžeme neaktivní okno tažením i přemísťovat po obrazovce;
- přidržíme-li klávesu Command a klepneme na titulek některého okna nebo panelu, přemístí se okno do pozadí. Aktivní a hlavní okno nebo panel se při této akci nemění.



2.5. Ikony

Ikony v NEXTSTEPu stejně jako ve většině ostatních grafických prostředí slouží především ke grafické reprezentaci objektů. Typická ikona NEXTSTEPu je po grafické stránce velmi kvalitní, se stínováním zajišťujícím třírozměrné efekty a s využitím antialiasingu pro získání dojmu vyššího rozlišení. Sadu ikon, reprezentujících aplikace NEXTSTEPu, vidíme na obrázku:

V okně File Viewer jsou ikony reprezentující disky, soubory a adresáře, u dolního okraje obrazovky jsou ikony reprezentující spuštěné aplikace a miniaturizovaná okna a v okně editoru v popředí vidíme několik ikon vložených volně do textu (první tři reprezentují objektové vazby na odpovídající soubory, čtvrtá je prostě snímek okénka s ikonou v levém dolním rohu obrazovky).



2.6. Práce s textem

Pracujeme-li s textem, používáme v NEXTSTEPu vždy stejnou sadu operací; složitější aplikace pouze tuto sadu rozšiřují o další možnosti, ale základy jsou stejné v textovém poli panelu jako v okně DTP systému.

Základy práce s textem:
- stisknutí některé klávesy samozřejmě vloží do textu odpovídající znak;
- vložené znaky můžeme mazat 'odzadu' klávesou Backspace; mazání 'odpředu' klávesou Delete není vždy k dispozici;
- text se vkládá vždy na místo, kde je textový kurzor ('insertion point'). Ten není totožný s kurzorem myši -- textový kurzor je blikající svislá čárka mezi některými dvěma znaky (nebo před prvním znakem nebo za posledním znakem);
- textový kurzor můžeme kamkoli do textu umístit klepnutím; můžeme jej také přemisťovat pomocí kurzorových šipek.

Práce s bloky textu:
- textový kurzor můžeme tažením myší roztáhnout na tzv. blok -- kurzor pak nebliká, ale všechny znaky, které jsou uvnitř bloku, jsou zobrazeny na podkladu jiné barvy než zbytek textu. Říkáme, že jsme tyto znaky označili;
- vložíme-li nějaký text ve chvíli kdy má kurzor podobu bloku, budou všechny označené znaky (tj. znaky uvnitř bloku) před vložením nového textu smazány;
- blok můžeme také smazat klávesou Backspace nebo příkazem Delete z menu Edit;
- chceme-li označit nějaké slovo, poklepeme na něj. Jestliže po druhém klepnutí tlačítko myši neuvolníme ale namísto toho táhneme, můžeme text označovat slovo po slově;
- trojím klepnutím označíme celý řádek (nebo odstavec). Jestliže po třetím klepnutí tlačítko myši neuvolníme ale namísto toho táhneme, můžeme text označovat řádek po řádku. Speciálně tato možnost mi, pokud někdy vyjímečně něco dělám ve Windoze, velmi chybí; kdo nikdy neměl k diposici pohodlný a standardní způsob pro označení celého řádku programu si ani nedovede řpedstavit, o kolik hůře se pracuje bez něj. Už jen to, že vývojová prostředí pod Wokny to neumí, zpomaluje vývoj aplikací pod Windoze nejméně o pět procent -- a spíš o deset.

Pro přenášení textu mezi různými místy dokumentu nebo mezi různými dokumenty můžeme použít tzv. schránku ('pasteboard'). To je vyhrazená oblast, která může (mimo jiné) obsahovat libovolný úsek textu. Pro práci se schránkou slouží příkazy z menu Edit
- příkazem Cut přemístíme označený text do schránky;
- příkazem Copy označený text do schránky zkopírujeme;
- příkazem Paste vložíme text ze schránky na místo kurzoru.
NEXTSTEP při práci se schránkou vždy bere v úvahu byl-li původní text celým slovem nebo ne; v prvním případě korektně zpracuje mezery. Označíme-li tedy slovo uprostřed věty, odstraníme jej příkazem Cut a vložíme na jiné místo příkazem Paste, upraví NEXTSTEP mezery automaticky (jinak by na místě odebrání slova zůstaly mezery dvě, na místě vložení slova by jedna mezera chyběla).



2.7. Soubory a adresáře

NEXTSTEP využívá standardní systém souborů a adresářů UNIX a nabízí tedy uživatelům všechny jeho výhody (mezi které patří mj. neomezená délka jména souboru nebo adresáře, bezproblémové používání českých písmen a/nebo interpunkčních znamének -- včetně '?' nebo '*' -- nebo možnost využívat UNIXové 'linky').

Modifikace UNIXového systému souborů, kterou NEXTSTEP využívá, přináší navíc některé služby, které v běžném UNIXu nebývají k dispozici:
- promyšlená strategie alokace místa na disku prakticky odstraňuje fragmentaci;
- na každém disku je k dispozici 'recyklovač' -- místo, do kterého se odkládají smazané soubory a odkud je možné je opět obnovit;
- na úrovni GUI jsou k dispozici tzv. pseudosoubory. Pseudosoubor ('package') není ničím jiným než obyčejným adresářem; NEXTSTEP jej však v GUI prezentuje jako jediný soubor. Typicky se jedná o adresáře, které reprezentují jediný nerozborný celek -- pseudosouborem je např. každá aplikace (obsahující řadu pomocných souborů) nebo každý font (obsahující vlastní font, metriku a bitové fonty pro malé velikosti). Na výřezu na obrázku vidíme jak aplikaci Concurrence.app, zobrazenou jako běžný soubor (v okně v pozadí), tak i její poměrně složitou vnitřní strukturu (v okně v popředí):



2.8. Služby

Systém tzv. služeb ('Services') zajišťuje spolupráci mezi aplikacemi na datovém základě -- aplikace, které zpracovávají stejná data, mohou prostřednictvím služeb spolupracovat. Umožňuje-li tedy například aplikace Mail odeslání textu elektronickou poštou, budeme mít její nabídku k dispozici kdykoli budeme zpracovávat text. Aplikace Grab dokáže snímat data z obrazovky a nabízet je ve formátu TIFF; pracujeme-li s libovolnou aplikací která dokáže přijmout formát TIFF, můžeme si z ní prostřednictvím aplikace Grab vyžádat sejmutí obrazovky. Aplikace, která službu nabízí, nemusí běžet -- NEXTSTEP ji automaticky spustí je-li to zapotřebí.

Všechny služby, které lze použít nad daty v aktivním okně, nalezneme v nabídce Services. Seznam služeb samozřejmě závisí na tom, jaké aplikace máme k dispozici (a na tom, které služby jsme deaktivovali prostřednictvím aplikace Preferences); aktuální seznam služeb na mém počítači vypadá takto:



2.9. Ovladače

Všechny aplikace NEXTSTEPu jsou řízeny prostřednictvím standardní sady ovladačů. Ti, kdo mají praxi s nějakým grafickým uživatelským prostředím většinu z nich budou znát; ukážeme si je proto jen rychle prostřednictvím obrázku a pak se podrobněji podíváme na některé méně běžné ovladače.

Základním ovládacím prvkem NEXTSTEPu je bezpochyby menu, se kterým jsme se podrobně seznámili v samostatném odstavci. Většinu ostatních standardních ovladačů vidíme na obrázku:

Význam většiny grafických ovladačů snad je zřejmý; samostatnou zmínku by snad stálo za to věnovat následujícím:
- tlačítko samozřejmě v NEXTSTEPu slouží především pro vyvolání nějaké akce; NEXTSTEP však podporuje i dvoustavová tlačítka, která nahrazují přepínač grafickým vyjádřením. Dvoustavové tlačítko je -- jako většina grafických prvků ve srovnání s textem -- o něco srozumitelnější, než čistě textový přepínač; je proto poměrně často využíváno. Jako příklad si ukážeme obrázek okna Websterova slovníku, v jehož pravém horním rohu jsou dvě dvoustavová tlačítka použita, a indikují, že slovník (dictionary) je aktivován, ale thesaurus uzavřen:

- nabídku alternativ označuje anglická literatura jako pop-up menu, nabídku příkazů jako pull-down menu. Rozdíl mezi nimi spočívá v tom, že 'titulkem' nabídky alternativ je vždy naposledy zvolená alternativa, zatímco nabídka příkazů má titulek pevný a neměnný. Obě otevřou menu, analogické hlavnímu menu aplikace (položky tohoto menu mohou mít i vlastní klávesové alternativy):

- úplnou novinkou pro uživatele jiných grafických rozhraní pravděpodobně bude 'barevná studánka' -- její vnitřek může sloužit jako východisko i cíl předání barvy mechanismem drag&drop (táhneme-li tedy např. myší z vnitřku 'studánky' nad označený text, text se obarví); klepneme-li myší na její okraj, objeví se panel pro určení barvy -- několik jeho základních podob (ale zdaleka ne všechny) vidíme na obrázcích (rozšiřitelná sada 'čtverečků' dole slouží uživateli jako paměť na barvy, které používá častěji):

Samostatnou zmínku věnujeme posuvníku ('slider', 'scrollbar'), který je v NEXTSTEPu řešen trochu jiným způsobem, než ve většině ostatních prostředí. Domnívám se však, že pro všechny 'zvláštnosti' NEXTSTEPu existuje velmi rozumný důvod -- podívejme se nejprve na okénko s posuvníkem:

- samozřejmostí ve Windoze dosud nikoli samozřejmou je, že relativní velikost táhla ('thumb') vůči posuvníku odpovídá relativní velikosti zobrazené plochy okna vůči celému zobrazovanému prostoru;
- jak vidíme, posuvník je umístěn u levého okraje okna. To není snaha být originální za každou cenu; uvědomme si, že při běžné práci s počítačem se nám poměrně často stane, že některé okno není celé na obrazovce. V naprosté většině takových případů je mimo obrazovku pravý okraj okna (protože jsme Evropané a ne Arabové a píšeme zleva); kdyby byl posuvník zde, nemohli bychom takové okno ovládat. Dalším důvodem je prostá ergonomie: je-li slider u levého (tj. vedoucího) okraje textu, vnímáme pozici textu v okně současně s čtením. Je-li však na druhé straně, musíme se na ni vždy extra podívat;
- tlačítka se šipkami 'o řádek nahoru' a 'o řádek dolů' nejsou na opačných stranách posuvníku, ale jsou na jedné straně hned vedle sebe. I to je promyšlené -- posunujeme-li obsah okna po řádcích, stačí pro změnu směru posunu přemístit myš o několik pixelů. Přejedeme-li tedy při postupu po řádcích požadované místo o několik řádků, vrátíme se k němu daleko dříve, než se uživatel 'klasického' GUI vůbec strefí myší na opačný ovladač;
- statické obrázky nemohou doložit to, že táhneme-li myší táhlo, posunuje se obsah okna plynule -- o šikovnosti tohoto mechanismu při prohledávání textu ve srovnání s 'klasickým' přístupem kdy se obsah okna překreslil až po uvolnění táhla snad není zapotřebí diskutovat. Pro jemné dohledání navíc NEXTSTEP posunuje obsah asi třikrát pomaleji, držíme-li při posunování stisknutou klávesu Alt;
- chceme-li naopak rychle přemístit kurzor 'asi tak do čtvritny dokumentu', klepneme prostě myší na odpovídající místo posuvníku, a táhlo se na něj okamžitě přemístí. I to je samozřejmě daleko jednodušší a rychlejší akce, než přetažení táhla na požadované místo v klasickém GUI. Jestliže navíc po klepnutí neuvolníme klávesu myši, můžeme ihned tažením (s plynulým posuvem obsahu okna) dohledat požadované místo v dokumentu;
- k dispozici máme i posun po stránkách (přesněji řečeno po oknech): slouží k němu tytéž šipky, které používáme pro řádkový posun, přidržíme-li klávesu Alt. Díky tomu, že šipky leží bezprostředně vedle sebe, neztrácíme opět 'návratovou' výhodu: přejedeme-li požadované místo o jednu-dvě stránky, můžeme se vrátit okamžitě a pohodlně zpět, aniž bychom museli myš 'zaměřovat' na jiný ovladač.

Posledním prvkem grafického uživatelského rozhraní NEXTSTEPu, kterému se zde budeme podrobně věnovat, je tzv. víceúrovňová tabulka ('browser'). Jedná se o velmi univerzální grafický objekt, který nabízí kompletní služby 'seznamů' ('List') z jiných grafických prostředí je-li využita jen jedna z jeho úrovní, a luxusní přístup k hierarchicky řazeným údajům využijeme-li jej ve více úrovních. Se službami víceúrovňové tabulky se blíže seznámíme v pozdějších článcích, věnovaných programátorům; prozatím si ukážeme několik obrázků ilustrujících schopnosti víceúrovňové tabulky:

První ukazuje 'obyčejnou' jednoúrovňovou tabulku, obsahující nalezené soubory ve vyhledávacím okně; schopnost tabulky dpolnit každý řádek ikonou ilustruje další:

Konečně to, co jiný systém než NEXTSTEP dosud nenabízí -- totiž víceúrovňovou tabulku -- vidíme například na přehledném systému souborů a adresářů ve standardním 'save' panelu:



3. Na závěr

Nebudeme samozřejmě podrobně popisovat další, méně běžné prvky uživatelského rozhraní NEXTSTEPu ani jejich standardní chování (ostatně, v rámci Softwarových novin by to ani nešlo -- kompletní popis z on-line dokumentace, obsahující i doporučení pro programátory, zabírá více než 4.5MB). Pro stručné seznámení s grafickým rozhraním NEXTSTEPu by tento článek měl bohatě stačit; zájemce o podrobnosti si vždy může pořídit přímo NEXTSTEP (akademická verze je velmi levná) a studovat jej in natura.

V příštím článku se podíváme na to, co s uživatelským rozhraním velmi úzce souvisí: standardní aplikace NEXTSTEPu, a především Workspace Manager, který slouží v NEXTSTEPu jako standardní grafický interpret uživatelských příkazů.



(další článek)


Copyright (c) Ondra Čada