# Integrované vývojové prostředí

Kvalitní řešení jakéhokoli problému předpokládá (téměř vždy) jisté počáteční promyšlení, spořádání požadavků a postupné vytřídění možných realizačních cest. To je samozřejmé. Tíha takového startovního promýšlení padá na autora projektu a nikdo jej této práce nemůže zbavit. Koneckonců by to byla i škoda, neboť tato fáze řešení projektu bývá velmi kreativní a zábavná. Každý začátek však má svůj konec, kreativita mizí a nastupuje běžná rutinní konstrukce vlastního řešení projektu.

Při opakovaných činnostech lidský mozek pracuje automaticky a nemyslí příliš na to, co zrovna dělá. Je dosti snadné ho vyrušit, přičemž je zřejmé, že každé takové vytržení z rytmu práce snižuje její efektivitu. Je proto důležité pokusit se práci a používané nástroje rozumně uspořádat, aby jejich použití nebylo kostrbaté. Nástroje a postupy zkrátka musejí "padnout do ruky" a musejí pracovat očekávaným způsobem.

Právě takové nástroje, které padnou do ruky a které poskytují při vývoji aplikace očekávané služby, vytvářejí ve svém souhrnu Integrované vývojové prostředí. Pokrývají celou škálu operací, které autor může použít, ať již to jsou operace jednoduché, dostupné jednou kombinací kláves, nebo operace komplexnější, provádějící patřičně komplexnější úpravy. Právě snadnost ovládání a přehlednost uspořádání byly hlavním cílem návrhu vývojového prostředí, a skutečně, nástroje na pracovní ploše nezavazejí a přitom jsou kdykoli snadno dostupné.

### Dvojí tvář aplikace

Úvodní kapitoly ukázaly, jak v systému Control Web vyřešíte některé typové průmyslové automatizační úlohy. Ve většině případů jste pracovali s průvodci, paletami, případně inspektory jednotlivých přístrojů — tedy s nástroji grafickými. Takový způsob práce je pro Control Web charakteristický. Důležitý je však i druhý způsob práce v textovém režimu, který Control Web také komplexně podporuje a který grafický návrh dokonale doplňuje.

### Dvojcestné programování

Oběma způsobům (grafickému i textovému programování) dohromady se říká jednoduše dvojcestné programování. Každou aplikaci je možné podle potřeby vytvářet chvíli graficky, chvíli textově. Přechod mezi jednotlivými režimy práce (nazývaný překlápění, dnes již těžko kdo rozeznává, jak a kdy toto pojmenování vzniklo) je snadný a není nijak omezen ani velikostí aplikace ani fází jejího vývoje. Popsaná dualita přístupů k tvorbě úlohy vám umožňuje podle momentální potřeby vybrat přesně takový postup, který nejlépe vyhovuje.

Překlápění aplikace

Z popisu dvojcestného programování vyplývá, že aplikace systému Control Web může existovat ve dvou nezávislých podobách, jedné grafické (binární) a druhé textové.

### Zdrojový tvar aplikace

Protože jsou textová i grafická podoba aplikace navzájem zástupné, bylo nutné jednu z nich "povýšit" a vytvořit základní tvar, který bude sloužit pro ukládání a zálohování. Rozhodnutí bylo celkem snadné, neboť textový soubor umožňuje snadnou manipulaci a je udržovatelný nejrůznějšími prostředky (navíc je tak starý jako počítače samy a tudíž je již zaručeně prověřen). Zdrojový tvar aplikace je proto textový. Automaticky je tím dána vysoká bezpečnost a robustnost skladování aplikací. Například při havárii disku (to si sice nikdo neepřeje, ale i takové věci se stávají, a ne zrovna zřídka) se často daří zachránit kusy dat, přičemž ty textové se dají velmi snadno rozeznat a případně rekonstruovat. Textová podoba aplikace je tedy jediná, kterou Control Web používá pro ukládání.

Změny způsobu práce vyžadují analogické změny podoby aplikace. Control Web přechody mezi režimy jednoduše rozlišuje na překlad (přechod z podoby textové do grafické) a na generování (přechod z podoby grafické do textové), přičemž překlad i generování obyčejně probíhají skrytě schovány do jiných operací — například otevření (nebo uložení) souboru v grafickém režimu automaticky vyvolá překlad (nebo generování) aplikace. Samozřejmě, kdykoli je možné dle vlastního uvážení režim práce změnit ručně.

Překlad a generování

## Překlad a generování

V předchozím odstavci bylo nastíněno, co generování a překlad v systému Control Web znamenají. Obě akce probíhají dosti často a bude užitečné, abychom se na ně podívali poněkud podrobněji. Nejprve budou popsány jednotlivé druhy překladů (celkem jsou tři) a posléze v dalším odstavci i generování.

### O překladu obecně

Textový soubor může obsahovat libovolný text, například soukromé poznámky nebo instalační informace — zkrátka co si do něj kdo zapíše. Control Web zdaleka nemůže všem takovým textům rozumět, vyzná se pouze v těch, které splňují pravidla pro zápis jeho aplikace. Ne každý text je vhodný a nutně funkční. Musí proto existovat mechanizmus, kterým se bezpečně rozliší, jestli vybraný textový soubor systému vyhovuje či nikoli. Takovým mechanizmem je překlad.

Překlad kontroluje formální správnost textu a vytváří podle něj binární podobu aplikace. Již bylo řečeno, že text nemusí vždy vyhovovat a nemusí být vždy přeložitelný. Pokus o překlad takového textu skončí s velkou pravděpodobností chybou. Systém Control Web místo chyby označí a nabídne informace o nedostatcích textu. Ty je možné opravit (nic jiného nezbývá...) a další následný překlad již může proběhnout až do konce.

Na tomto místě stojí za zmínku jedna skutečnost, která není na první pohled úplně zřejmá. Proč překlad skončí vždy i na sebemenší chybičce i přesto, že by Control Web snadno mohl chybu sám opravit? Proč se automaticky do zdrojového textu nedoplní chybějící znak (třeba středník)?

Pokušení automaticky opravovat takové chyby je docela velké. Nicméně první hlubší náhled a zamyšlení začne odhalovat velké potíže. Například jen pouhá záměna slov "automaticky opravovat" za "ignorovat" (a je to skutečně totéž) signalizuje, že je něco v nepořádku. Princip je jasný — počítač je pouhý stroj, který jen hloupě vykonává zadané úlohy. Control Web je program a je nesrovnatelně chytřejší než samotný prázdný počítač, avšak opět pouze vykonává uživatelské programy — aplikace. Nemá žádnou vlastní inteligenci, nedokáže rozlišit, jestli středník v textu skutečně jenom chybí, nebo jestli je celý text (ačkoli jde částečně přeložit!) zmatený a středníkem by se nic nespravilo. U opravy každé chyby proto musí asistovat člověk, protože jedině ten rozezná, co je opravdu špatně.

### Překlad po částech — inkrementální překlad

Nepříjemné je, když se překlad kvůli chybě zastaví asi tak 200 řádků před koncem zdrojového textu. Po opravě nezbývá nic jiného, než celý text přeložit znova od začátku. Zdrojový text ale bývá dlouhý a než se celý přeloží... Naštěstí s tímto zádrhelem Control Web počítá a elegantně jej řeší. Při překladu Control Web postupuje po jednotlivých přístrojích (po maličkých blocích) a každý již jednou správně přeložený přístroj si zapamatuje. Pokud se vyskytne chyba, překládá Control Web po jejím opravení jen dosud nepřeložené přístroje. Překlad tedy probíhá po částech — inkrementálně. Vývojové prostředí nabízí pro řízení inkrementálního překladu všechny možnosti — překlad je vždy možné spustit od začátku, je možné pokračovat v překladu od místa chyby dále a také je možné překlad jednoduše ukončit. Detailní ovládání překladu po částech a chování vývojového prostředí je popsáno níže.

### Jednoduchý překlad

Před několika odstavci bylo naznačeno, že existují celkem tři varianty překladu. Rozdíl mezi nimi spočívá v míře kontroly zdrojového textu. Čím pečlivěji se text kontroluje, tím déle to trvá. Je užitečné mít k dispozici prostředky, které aplikaci zkontrolují jen nahrubo, ale zato rychle. Navíc, během vývoje aplikace často nastávají situace, kdy kompletní překlad není možný. Existence pouze jedné kompletní varianty překladu by potom úplně znemožnila práci v grafickém editoru, neboť by nebylo možné se do něj dostat, aplikace by nebyla schopna překladu do grafické podoby. Varianty překladu seřazené podle míry kontroly aplikace jsou následující: jednoduchý překlad (nejmenší kontrola), překlad pro překlopení (téměř úplná kontrola) a překlad pro spuštění (úplná kontrola).

Nejjednodušší varianta je jednoduchý překlad. Jednoduchý překlad je nejméně náročný na prostředky systému a je nejrychlejší. Kontroluje se při něm pouze syntaktická správnost aplikace (je-li aplikace formálně správně zapsaná). To znamená, že aplikace přeložitelná jednoduchým překladem vyhovuje následujícím požadavkům:

- všechny třídy přístrojů existují, systém zná jejich knihovny
- přístroje se dokážou správně načíst, jejich parametry a těla jsou v pořádku (blíže viz Přehled virtuálních přístrojů)
- datové elementy mají korektní inicializační hodnoty, kanály odpovídají svým ovladačům (blíže viz Datové elementy a výrazy)
- všechny výrazy obsahují známé funkce a používají pouze známé datové elementy

Jednoduchý překlad neprovádí následující operace:

- nezavádějí se ovladače
- nepřekládají se ani se nespouštějí vzdálené moduly
- nekontroluje se umístění datových souborů, soubory nemusejí existovat
- ikony a obrázky se nenahrávají do paměti
- nekontroluje správnost volání procedur (viz kapitola Programování a procedury)
- nekontrolují se datové typy elementů z jiných modulů (viz kapitola Modulární a distribuované aplikace)

Přehled vlastností jednoduchého překladu ukazuje, že je především nenáročný na paměť počítače. Největší spotřebu mají tradičně obrázky a ikony, a ty se při tomto překladu vůbec nedostanou ke slovu. Ve vývojovém prostředí je jednoduchý překlad dostupný buď prostřednictvím menu "Aplikace/Překlad aplikace", nebo stiskem tlačítka v liště s nástroji:

Spuštění překladu aplikace

Jednoduchý překlad je také jediný, který může probíhat po částech (viz překlad po částech). To je logické, neboť právě pro odstraňování syntaktických chyb rychlý a efektivní jednoduchý překlad dokonale vyhoví.

### Překlad pro překlopení

Překlad pro překlopení musí zajistit více. V grafickém režimu aplikace vypadá stejně jako za běhu, takže zobrazuje všechny obrázky i ikony. Překlad proto musí zkontrolovat datové soubory (jestli se dají načíst a jestli existují) a podle potřeby je případně zavést do paměti. Tím překlad pro překlopení zároveň poskytuje ve srovnání s jednoduchým překladem snadnou možnost ověřit minimální paměťovou spotřebu aplikace. Souhrn vlastností překladu pro překlopení je následující:

- aplikace vyhovuje všem požadavkům jednoduchého překladu
- všechny v aplikaci známé datové soubory jsou ověřeny, přičemž všechny soubory nutné pro zobrazení aplikace jsou zavedeny do paměti

Při překlopení se neprovádějí operace:

- nezavádějí se ovladače
- nepřekládají se ani se nespouštějí vzdálené moduly
- nekontroluje správnost volání procedur (viz Programování a procedury)
- nekontrolují se datové typy elementů z jiných modulů kapitola (blíže Modulární a distribuované aplikace)

Překlad pro překlopení se užívá pro přechod z textového do grafického režimu. Vývojové prostředí jej provádí automaticky, skrytě, a proto není možné vyvolat tento překlad sám o sobě ručně (i když překlápění je zpravidla ručním uživatelským zásahem...).

### Překlad pro spuštení — spuštění aplikace

Překlad pro spuštění kontroluje všechno. Běžící aplikace musí být stoprocentně správná — správná syntakticky i sémanticky na úrovni objektů systému Control Web (bohužel, žádný překlad nedokáže zaručit správnost dalších (vyšších) sémantických úrovní — návrhu, konstrukce a vzájemné spolupráce aplikačních objektů; co autor špatně navrhne, to také špatně běží). Překlad pro spuštění musí zajistit správné napojení na okolí (na jiné moduly a ovladače) i správné napojení vnitřních procedur. Dohromady se provádějí všechny následující kontroly:

- všechno, co bylo uvedeno při překladu pro překlopení
- navazují se procedury
- kontroluje se přítomnost vzdálených modulů, spouštějí se vzdálené systémy Control Web
- kontrolují se datové typy elementů z jiných modulů (viz Datové elementy a Modulární a distribuované aplikace)
- zavádějí se a spouštějí se všechny ovladače

Překlad pro spuštění se provede vždy při spuštění aplikace (to je koneckonců zřejmé). Ve vývojovém prostředí se aplikace spouští buď z menu "Aplikace/Spustit aplikaci", nebo z lišty s nástroji klikem myši na tlačítko:

Spuštění aplikace

Identický mechanizmus používá při spouštění aplikace Control Web Runtime (podrobný popis viz kapitola Control Web Runtime). Jediná odlišnost v Control Web Runtime spočívá pouze v automatickém spuštění aplikace.

### Generování

Překlad dokáže textovou podobu aplikace převést na grafickou, generování provádí pravý opak — z existující grafické (binární) podoby vytvoří zdrojový text. Operace to je zřejmá, nicméně existuje několik skutečností, které je dobré vysvětlit. Grafická podoba je zcela samostatná, přesně odpovídá strukturami běžící aplikaci a obsahuje všechny objekty bez vazby na zdrojový text. To znamená, že neobsahuje mimo známá data přístrojů navíc žádnou textovou informaci. Celý zdrojový text při generování vzniká jako nový, přičemž se postupně z binárních podob jednotlivých objektů skládá až do konečné velikosti. Přímým důsledkem tohoto faktu je skutečnost, že nově vygenerovaný text nemusí být zcela identický s textem původním existujícím před překlopením.

To je v určitých případech výhoda a v určitých situacích zase nevýhoda. Generování zápis textu například optimalizuje:

- standardně se vypisují jen parametry, které se svou hodnotou liší od přednastavených (default) hodnot
- výrazy se upravují do standardní podoby se shodným oddělením závorek a funkcí
- shodně se odsazují zápisy parametrů přístrojů (mimo těla procedur)

Důležitý fakt je, že všechny tyto (automatické) změny textu jsou pouze formální a nijak neovlivňují chování či funkci aplikace — slouží pouze ke zpřehlednění zápisu.

Možnost vnitřně zasáhnout do generování textu aplikace je výhodou systému Control Web důležitou především pro udržení kompatibility (což je vlastně jinak pojmenovaná ochrana investic). Překlad dokáže přijmout více zápisů aplikace než by nutně musel — přijímá jednak podoby kompatibilní s předchozími verzemi a jednak podobu aktuální — a generování potom text vytvoří podle pravidel právě aktuálních. Případné změny zápisu aplikace mezi generacemi systémů Control Web nebo Control Panel proto nijak neohrožují již hotové, případně rozpracované projekty. Překlopení do grafické podoby zpracuje jakýkoli text (správný podle pravidel některé z verzí) a následné překlopení zpět do textu již vytvoří aplikaci novou — upravenou. Jak již bylo řečeno, upravenou bezpečně zcela bez vlivu na její funkci.

Další skrytá skutečnost svázaná se vznikem nového textu se týká komentářů. Textová podoba umožňuje zapsat kdekoli do aplikace komentáře (popis je níže v této kapitole)). Překlad komentáře ignoruje, takže do nich můžete zapsat jakýkoli text (poznámku, či vysvětlení). To je jistě užitečné, ale aplikace v grafické podobě žádné komentáře nemá, a nijak není možné zjistit, co by se při generování do textu mělo na místo bývalé poznámky vypsat. Při překlopení podob z textové do grafické a zpět proto komentáře mizí. Informace a poznámky, které se do komentářů zapisují však mají svůj smysl, a proto Control Web podporuje zápis krátkých poznámek přímo k přístrojům. Poznámka přístroje

`rem = 'text poznámky'`

je jeho parametrem, a proto se při překlopení neztrácí. Dalším místem, kde se dají komentáře zapsat bez nebezpečí ztráty, jsou těla procedur (viz kapitola Programování a procedury). Procedury obsahují zápis algoritmu, které každý člověk zapisuje podle svých zvyklostí. Nebylo by asi vhodné generovat procedury celé znovu, to by se potom autor nemusel ve svém algoritmu vůbec vyznat. Proto jsou těla procedur i v grafické podobě uchována jako text a jako text se i generují. Pokud se do procedury zapíše komentář, bude zachován stejně jako celé tělo procedury.

## Snadno a rychle — grafický editor

Většinu času při vývoji aplikace strávíte právě v grafickém editoru. Slovo "grafický" je povědomé a je přímočaře spojeno s kreslením. Do určité míry to platí i v systému Control Web, avšak význam je mírně posunut — "grafický" znamená spíše "přehledný", "snadno ovladatelný" nebo třeba "dosažitelný pomocí jednoho kliku tlačítka myši". V grafickém editoru snadno uvidíte základní vazby mezi objekty, uvidíte okamžitě jak systém aplikaci časuje a také srozumitelně uvidíte jak a s jakými daty aplikace pracuje. K tomu všemu navíc dostáváte nabídku průvodců, které vám pomohou na začátku vývoje aplikace připravit hlavní funkční bloky (průvodce můžete použít kdykoli, nejenom na začátku, ale právě při zahájení prací bývá průvodce neocenitelný).

Grafický editor sestává z několika logicky rozdělených částí. Jedna bez druhé by byla nesmyslná a nefunkční, ale pro účel popisu je moudré celý grafický editor rozdělit a seznámit vás s jednotlivými částmi postupně. Komunikaci s reálným světem, použitá data, vnitřní údaje a nastavení parametrů aplikace shrnují Datové inspektory (o napojení na reálné okolí jste četli v kapitole Jak napojit aplikaci na reálný svět, další podrobnosti zjistíte v kapitolách Datové elementy a výrazy a Komunikace, ovladače a kanály). Nabídka přístrojů spolu s jejich základním popisem (například procedur) — to je Paleta přístrojů. Prostor pro vizuální návrh a řízení běhu aplikace pokrývá hlavní část vývojového prostředí — vlastní Grafický editor. Každý objekt rychle změníte a upravíte v Inspektoru přístroje. No a nakonec je připraveno několik pomocných nástrojů a již zmíněné průvodce, které jsou ovšem popsány v jednotlivých předchozích kapitolách.

### O datových inspektorech obecně

Datové inspektory mají vyhrazenu ve vývojovém prostředí jednu hlavní vodorovnou záložku.

Záložka datových inspektorů

Otevření záložky je snadné, stačí do ní kliknout levým tlačítkem myši. Datové inspektory shrnují všechno co se týká dat aplikace. Druhů dat (datových kategorií) zná systém Control Web několik (viz kapitola Datové elementy a výrazy), a právě tyto kategorie jsou zobrazeny ve svislých záložkách v pravé části datových inspektorů.

Svislé záložky datových inspektorů

Přesněji, svislé záložky kopírují aplikační bloky, které jsou dobře vidět ve zdrojovém textu. Na počátku je vybraná první záložka "Adresáře" (kdykoli podle potřeby vyberte klikem levého tlačítka myši záložku jinou).

Všechny datové inspektory mají víceméně shodný vzhled. Vždy obsahují tabulku s hodnotami, a pokud je třeba (například v záložce "Proměnné" navíc i malý seznam s dalšími možnostmi. Každá tabulka v každém řádku obsahuje jednu konkrétní položku (například proměnnou), která má několik svých parametrů (u proměnné například jméno nebo typ). Parametry tvoří sloupce tabulky. Tabulky najdete v systému Control Web i na jiných místech, přičemž popisované vlastnosti a pravidla platí samozřejmě i pro ně.

Všimněte si, že poslední řádek každé tabulky (pokud není poslední řádek vidět, vyrolujte tabulku pomocí rolovací lišty) začíná hvězdičkou.

Řádek s hvězdičkou

Control Web hvězdičkou naznačuje, že do takového řádku můžete zapsat (přidat) novou položku. Klikem levého tlačítka myši vyberete první políčko nového řádku a zapíšete potřebné údaje. Sloupce tabulky (jednotlivé parametry) přitom určují, co se do políčka může zapsat. Například, pokud je možné zapsat jednu z několika předem známých variant, nabídne systém seznam variant a vy už jen vyberete tu pravou. Nebo parametr může obsahovat číslo, a tehdy systém nabídne pro zadání čísla numerický řádek (count box). Pokud data vyplníte a potvrdíte klávesou <Enter>, editace automaticky přeskočí do dalšího políčka. Další políčko pochopitelně můžete vybrat také myší, opět stačí pouze kliknout.

Velmi jednoduše se po tabulce můžete pohybovat také pomocí kombinací kláves <Alt>+<šipky>. Označení políčka bude sledovat pohyby šipek bez ohledu na to, jestli zrovna nějaká data editujete nebo nikoli.

Popsaný způsob práce vyhovuje nejenom na řádku s hvězdičkou — stejným postupem upravíte jakákoli data v kterékoli jiné tabulce. Občas je potřeba řádek s položkou odstranit, případně řádky rozsunout a položku vložit. Tyto operace nejsou v tabulce přímočaré a jsou proto dostupné prostřednictvím tlačítek v liště s nástroji. Obě tlačítka (pro smazání i vložení) vypadají následovně:

Tím byly popsány základní (obecné) editační možnosti tabulek, a zbývá jen konkrétně přiblížit jednotlivé kategorie datových inspektorů. Záložka "Login", tedy definice a správa uživatelů, již byla popsána v kapitole Jak definovat uživatele aplikace a jejich přístupová práva, naopak záložky "Import" a "Programy" budou popsány v samostatných kapitolách až ve druhé části manuálu (jsou to témata, která potřebují více vysvětlení).

#### Záložka "Adresáře"

"Adresáře" jsou první záložkou, kterou po přepnutí do datových inspektorů uvidíte. Aplikace systému Control Web zpravidla využívá celou řadu samostatných datových souborů (například pozadí obrazovek, ikony tlačítek) nebo soubory sama vytváří (to jsou zase například databáze nebo protokoly). Všechny soubory přitom musí být aplikaci dostupné. Aplikace musí vědět, kam pro který soubor sáhnout (podrobněji je všechno popsáno v kapitole Soubory systému Control Web. Soubory musí být buď na stejném místě, kde je aplikace sama, nebo — a právě to "nebo" podchycuje sekce (záložka) "Adresáře" — v jiných popsaných adresářích.

Soubory se od sebe odlišují jménem. Mechanizmus hledání souborů v adresářích používá konvenci zástupných znaků "*" a "?" (wildcards) operačního systému Windows, takže například řetězec "ce???.jp?" pokryje jména souborů 'cesta.jpg' nebo 'cenik.jpe'. Řetězec se zástupnými znaky se jmenuje maska a právě takové masky patří do prvního sloupce tabulky adresářů. Do sloupce druhého (jak již jistě tušíte) potom patří adresář, ve kterém má aplikace soubory vyhovující konkrétní masce hledat. Masek a adresářů může být libovolný počet, což jednoduše umožňuje podle potřeby rozmístit jednotlivé druhy souborů do různých míst.

#### Záložka "Systém"

Control Web poskytuje velmi širokou paletu možností, jak ovlivnit a přesně určit chování aplikace. Jsou to nastavení, která se týkají aplikace jako celku a která ovlivňují chování všech přístrojů najednou. Například to je ovlivnění komunikací a startu aplikace nebo činnosti systému zpráv (Log Window). Přesný význam všech položek v tabulce "Systém" je popsán v kapitole Nastavení parametrů aplikace a samozřejmě dále v jednotlivých kapitolách v celé dokumentaci v místech, kde parametr ovlivňuje vysvětlované chování systému. Důležitý je fakt, že standardní počáteční nastavení vyhovuje ve většině případů, a proto není nutné je jakkoli měnit. Nicméně, může se stát, že například omylem některý parametr změníte a budete se chtít svých změn vzdát. Není nic jednoduššího, v liště s nástroji je pro tento případ přichystáno tlačítko

Nastavení počátečních hodnot

které všechny hodnoty sekce "Systém" vrátí do původních přednastavených hodnot.

#### Záložka "Konstanty"

Konstanta je veličina určitého typu, jejíž hodnotu není možné změnit. Zůstává konstantní. Některé konstanty jsou v systému Control Web obsaženy vždy, například Ludolfovo číslo nebo rozměry obrazovky. Možná se vám zdá divné k čemu že je konstanta dobrá, když za chodu aplikace nejde změnit. Konstanty se dají použít na většině míst, které potřebují pevnou hodnotu — typické je použití např. v parametru timer přístrojů. Zavedete-li si například konstantu perioda = 10;, můžete zapisovat do přístrojů timer = perioda; a kdykoli později dosáhnete změny časování více přístrojů (najednou) pouhou změnou jedné jediné konstanty.

Z předchozího odstavce vyplynulo, že konstanta má jméno, typ a nějakou hodnotu. Typ konstanty se určuje automaticky ze zápisu její hodnoty a není proto nutné ho nějak definovat (je implicitní). Jako jméno konstanty vyhoví jakýkoli identifikátor.

Pohlédnete-li do tabulky konstant, uvidíte jméno, hodnotu, a navíc ještě poznámku. To je parametr, který potkáte i u dalších typů datových elementů, a vždy bude mít jeden jediný význam — text, který můžete ke každému prvku připojit, aby vám připomněl, co konkrétní konstanta (datový element) znamená. K naší konstantě perioda = 10; by asi bylo vhodné připsat jako poznámku třeba "perioda časování grafů teplot" nebo "perioda zápisu do archívu tlaku páry". Více ke konstantám (i k datovým typům) najdete v kapitole Datové elementy a výrazy.

#### Záložka "Proměnné"

Bez proměnných by to nešlo. Název napovídá, že to jsou veličiny, jejichž hodnota se může za chodu aplikace libovolně měnit v mezích předurčených datovým typem. Na rozdíl od konstant, kde typ vyplývá přímo z její hodnoty, musí proměnná svůj typ znát předem. V systému Control Web existují čtyři základní typy dat — logická hodnota (boolean), řetězec znaků (string), blok paměti (buffer) a číslo. Číslo jsem nechal nakonec, neboť číselných typů je více. Základní jsou typy real — desetinné číslo a typ cardinal — celé číslo bez znaménka (o typech detailně v kapitole Datové elementy a výrazy). Každá proměnná v principu slouží k uchování hodnot, které jsou nutné pro běh a nejsou k dosažení v reálném světě. Většina proměnných proto skrývá nějaký vnitřní stav aplikace.

Proměnné logické, číselné a řetězcové navíc mohou tvořit pole — oblasti dat vymezené dvěma čísly spodním a horním indexem. Použití polí je výhodné všude tam, kde se používá několik veličin se stejným logickým významem. Například vezměme padesát nádrží s měřeným obsahem kapaliny. Můžete vyrobit padesát samostatných proměnných (každá z nich se bude muset nějak unikátně jmenovat) nebo můžete vyrobit jedno pole s indexy od 1 do 50. Pole vyhrává jako mnohem přehlednější varianta.

Pole a skalár

Trošku odlišný je datový typ buffer. Je to speciální datový typ, který vyžaduje speciální zacházení. Typické je použití bufferů při číslicovém zpracování signálů (DSP). V systému Control Web je možné DSP realizovat pomocí doplňkových aplikací a přístrojů. V běžných aplikacích (takových je 99.99 %) buffery nepotkáte. Na druhou stranu, vyskytne-li se potřeba nějakou takovou aplikaci vyrobit, není to v systému Control Web žádný problém.

Sloupce tabulky s proměnnými věrně kopírují všechny doposud známé parametry. Rozlišení mezi poli, buffery a jednoduchými proměnnými zajišťuje seznam v levé části, přičemž po výběru kategorie v seznamu se zobrazí patřičná tabulka.

Proměnná je za chodu aplikace libovolně nastavitelná a po startu aplikace je nutné připravit ji do nějakého známého stavu, neboť nedefinované hodnoty by mohly způsobit výpočetní (a následně i funkční) chyby. K definici počáteční (iniciální) hodnoty proměnné slouží parametr (sloupec tabulky) "počáteční hodnota". Počáteční hodnota je do proměnné zapsána v okamžiku jejího vzniku a všechny přístroje se při svém startu mohou spolehnout, že z proměnné nepřečtou nic jiného.

#### Záložka "Ovladače"

Ovladačům a napojení na reálný svět se věnuje kapitola Jak napojit aplikaci na reálný svět. Stejně tak je podrobně komunikacím zasvěcena kapitola Komunikace, ovladače a kanály. Abychom si však rozuměli, nebude na škodu uvést několik obecných informací o ovladačích i zde. Ovladač je samostatný kus programu, který rozumí "svému" zařízení (průmyslovému automatu, měřicí kartě, nebo něčemu úplně jinému) a který se "svým" zařízením dokáže komunikovat. Jeho základním úkolem je zprostředkovat komunikaci mezi univerzálním systémem Control Web a specifickým zařízením. Vytvořit ovladač je celkem jednoduché, kapitola Komunikace, ovladače a kanály to obšírně popisuje. Z pohledu systému Control Web je ovladač "svorkovnice", do které se z aplikace zasouvají "jednotlivé vodiče" — kanály. Všechny ovladače to umějí stejně a aplikace sama se dále vůbec nemusí starat, s čím vlastně komunikuje. Ovladači tak zůstává jediný úkol — domluvit se se svým zařízením.

Ovladač je samostatná komponenta a bez správné instalace nepracuje. Všechny ovladače se dodávají jako hotové balíky, které automaticky při své instalaci zařídí vše potřebné. Jenom drobné upozornění — některé ovladače používají programovou podporu výrobce hardware. Instalaci takového ovladače je obyčejně nutné začít instalací programové podpory výrobce a teprve poté je možné pokračovat s instalací vlastního ovladače pro Control Web.

Většina ovladačů vyžaduje předem nějaké pomocné parametry a nastavení (například nastavení sériových kanálů). Parametry se mohou ovladač od ovladače lišit (a také liší) a navíc, pro různé podmínky se může nastavení parametrů dosti lišit i u jednoho ovladače (třeba DDE ovladač). Souhrnný název pro konfigurační soubory ovladačů je parametrický soubor. Měl by mít kvůli přehlednosti příponu '.par'. Parametrický soubor musíte správně naplnit — některé ovladače na to mají vlastní nástroje; vždy je potom parametrický soubor popsán v dokumentaci ovladače.

Součástí definice ovladače je ještě jeden soubor, který slouží hlavně systému Control Web. Píše se v něm, jaké možné kanály ovladač dokáže zpracovat. Control Web tuto informaci používá při překladu kanálů pro kontrolu směrů a typů. Soubor se jmenuje mapový, má příponu '.dmf' a obyčejně se dodává přímo s ovladačem. Většinou není nutné do souboru nijak zasahovat. Podrobnější popis DMF souborů najdete v kapitole Soubory systému Control Web.

Shrne-li se to všechno dohromady, vznikne definice ovladače přesně zapadající do sloupců tabulky ovladačů — jméno, druh ovladače (jeho DLL), mapový soubor, parametrický soubor. Toť vše.

#### Záložka "Kanály"

Dovnitř aplikace se skutečné měřené veličiny a ovládané prvky promítají jako kanály. Kanály mají něco společného s proměnnými, jejich hodnota se může za běhu měnit, avšak příčina změny hodnoty je u kanálů diametrálně odlišná. Hodnotu proměnné dokáže změnit pouze aplikace sama, naopak kanály se mění nezávisle. Povaha kanálů také vyžaduje poněkud odlišný přístup k jejich hodnotám. Hodnota kanálu není nic pevného, před každým použitím kanálu musí systém zajistit, aby se do aplikace dostala správná hodnota z technologie. Kanály je třeba měřit. Control Web měření zajišťuje automaticky. Není žádný problém komunikaci a měření řídit ručně, ale obyčejně to není nutné.

Kanály mají směr. Proměnná nic takového nepotřebuje, jak zápis, tak čtení není u proměnné nijak omezeno. U kanálu je nutné zvolit, jestli je čten jako vstup, nebo jestli je do něj zapisováno jako do výstupu. Je to logické, považte, jestli byste dokázali zápisem do teploměru upravit teplotu pece. Oba směry, vstupní i výstupní pokrývají všechny rozumné možnosti komunikace. Kanál může být i obousměrný. Takový kanál se nebrání zápisu a zároveň se při čtení měří. V obousměrných kanálech je však zašito čertovo kopýtko, které může v určitých případech způsobovat překryvy čtení a zápisů (přesně je mechanizmus překryvů vysvětlen v kapitole Časování aplikace reálného času). Většinou taková situace nenastává, ale je bezpečnější a přehlednější hned od počátku navrhnout komunikace jen s kanály vstupními a výstupními. Přinejmenším se tak zbavíte nutnosti obousměrné kanály do detailu promyslet.

Kapitolou sama pro sebe je komunikace — viz Komunikace, ovladače a kanály. U kanálů se jí přímo dotýká parametr timeout. Ve velmi hrubém přiblížení je možné tento parametr vysvětlit jako nejdelší povolenou dobu čekání na dokončení komunikace kanálu. Parametr není povinný a nemusíte jej zadávat. Kanál bez určeného parametru timeout přejímá buď nastavení globálního systémového parametru input_timeout, je-li vstupní nebo obousměrný, anebo parametru output_timeout, je-li výstupní. Zmíněná kapitola o komunikacích oba parametry podrobně vysvětluje.

Teď pozor. Jak již víte, může aplikace pracovat v reálném čase nebo může být řízená daty (viz Podrobněji o časování, aplikacích reálného času a datově řízených aplikacích, Časování aplikace reálného času a Běh datově řízené aplikace). V datovém režimu nemá parametr timeout žádný význam. Místo něj se u kanálu definuje doporučená perioda měření, tedy jak často se hodnota kanálu bude přenášet z technologie do aplikace. Také tuto hodnotu nemusíte zadávat a systém v takovém případě kanál měří dle vlastního uvážení podle potřeb aplikace. Je užitečné doporučenou periodu definovat, neboť jistě víte, jak rychle má smysl kanál měřit. Můžete tak systému pomoci v rozhodování, jak často kanál měřit.

Poslední nepopsané parametry kanálu jsou číslo kanálu a jméno ovladače. Jméno přímo obsahuje již nějaký definovaný ovladač (viz popis záložky "Ovladače") a číslo spojuje konkrétní kanál s určitým místem "svorkovnice" ovladače. Ovladač samozřejmě ví, co které místo na "svorkovnici" obsahuje. Typicky bývá rozložení "svorkovnic" ovladače zapsáno v jeho parametrickém souboru. Číslo kanálu je tedy především informace pro ovladač. Aby ovladač dostával z aplikace požadavky se správnými čísly, musíte v aplikaci sladit čísla kanálů s parametrickým souborem ovladače.

Stejně jako proměnné se mohou číselné, logické a řetězcové kanály seskupovat do polí a stejně jako u proměnných mohou existovat kanály typu buffer. Ovšem, kanál je pevně spjat s ovladačem, a pokud ovladač datový typ buffer nepodporuje, není možné takový kanál vytvořit. Informace o vlastnostech ovladače je vždy součástí jeho dokumentace a tam je také možné se o podpoře dat typu buffer dočíst.

### Paleta přístrojů

Grafický editor nutně potřebuje jakési prvotní skladiště, ze kterého by bylo možné do aplikace snadno přidat nové objekty. Skladiště grafického editoru je Paleta přístrojů. Obsahuje všechny dostupné přístroje, které je možné myší přetahovat přímo do grafického editoru. Paleta navíc ke každému přístroji zobrazuje jeho procedury. Paletu přístrojů otevřete buď příkazem menu "Aplikace/Přístroje..." nebo klikem na tlačítko v liště s nástroji:

Paleta přístrojů

Okno s paletou je jednoduché. Záložky v pravé části obsahují všechny dostupné přístrojové knihovny, tak jak je Control Web při svém startu detekoval. První záložka shrnuje všechny přístroje bez ohledu na příslušnost ke knihovně. Jistě snadno zjistíte, že výběr záložky automaticky vymění obsah hlavní části okna — vlastní palety přístrojů. Každý přístroj je popsán jménem své třídy a pokud nad jeho ikonou pohnete myší, objeví se v bublině jeho stručný popis. Vzhled plochy s přístroji dále upravují tlačítka v liště s nástroji:

Nástroje palety přístrojů

S těmito nástroji ikony přístrojů v obou osách přiblížíte (nebo vzdálíte), vypnete jim textové popisky a případně změníte jejich základní velikost (paleta zobrazuje ikony 40×40 bodů nebo 20×20 bodů).

Spodní část okna palety se záložkami "Paleta", "Nativní procedury" a "Událostní procedury" plní několik funkcí najednou. Vyberte nějaký přístroj v horní paletě a hned uvidíte, jak se záložky naplnily daty. Záložky "Nativní procedury" a "Událostní procedury" obsahují (jak koneckonců napovídá jejich název) všechny vlastní procedury, které přístroj má, a také všechny procedury, které přístroj sám volá. Pečlivý popis procedur poskytuje kapitola Programování a procedury. Všechny přístroje nemusejí nutně mít procedury a tehdy zůstane seznam v patřičné záložce prázdný (nenaplněný).

Oddělení ploch záložek a palety s ikonami není pevně dané a podle potřeby můžete myší zvětšit (nebo zmenšit) jednu část v neprospěch druhé. Dvojitý stisk tlačítka myši (dvojklik) do oddělovací lišty navíc skryje celou spodní část se záložkami a umožní roztažení palety s ikonami přes celou plochu okna. Lišta zůstane na spodním okraji okna a kdykoli později ji můžete vytáhnout zpět a plochu opět rozdělit.

Zkuste kliknout na některou proceduru pravým tlačítkem myši. Objeví se menu,

Menu procedury

které obsahuje položku "Kopírovat" a které slouží ke zkopírování vybrané procedury do schránky. Text ze schránky potom můžete vložit třeba do textu přístroje v Inspektoru přístroje. Pokud raději používáte horké klávesy, vězte, že vybranou proceduru do schránky zkopírujete také běžnou kombinací kláves <Ctrl>+<C>.

Některé přístroje (zejména ty, které něco zobrazují, nebo ty, které tvoří schémata) nabízejí ukázku svého budoucího vzhledu (případně "ukázku" nějakého svého důležitého parametru). Takové ukázky zahrnuje ve spodní lístkovnici první záložka "Paleta". Klikněte například na ikonu přístroje knee,

Ikona přístroje knee

a jeho paleta

Paleta přístroje knee

vyberte záložku "Paleta" a uvidíte výše umístěný obrázek. Své ukázky nabízí také mnoho jiných přístrojů.

#### Přetahování přístrojů do grafického editoru

Mezi oblíbené triky grafického uživatelského rozhraní patří přetahování myší (drag and drop). Je to nabíledni, neboť přetahování a upouštění nejrůznějších objektů je velmi přirozené. Paleta přístrojů přetahování myší kompletně podporuje — přetahovat můžete jak ikony přístrojů z hlavní plochy palety, tak ukázky vzhledů a dokonce lze přetahovat i jednotlivé procedury. Stačí jen kliknout myší, přetáhnout objekt na vybrané místo a tlačítko myši zase pustit.

Přetahování ikon a ukázek je téměř shodné, malý rozdíl spočívá pouze v tom, že nový přístroj vytažený z ukázek bude vypadat stejně jako vybraná ukázka. Tím se také vysvětluje, proč vlastně ukázky existují — s jejich pomocí velmi snadno určíte hlavní rysy nového přístroje. Ikony a ukázky se přetahují někam do plochy grafického editoru. Nový přístroj vznikne vždy v místě, kde jej upustíte. Grafický editor vám pomáhá, všimněte si, že v ploše se vzhledem červenou přerušovanou čarou rámuje nového vlastníka (panel nebo pozadí) a v plochách se stromy zvýrazňuje položku, do které se nový přístroj zařadí (o panelech viz kapitola Vzhled aplikace a o časovačích viz kapitola Časování aplikace reálného času).

Rámování vlastníka napomáhá rozlišit, kam se přístroj vloží. Následující obrázky ukazují dvě situace — přístroj nad pozadím s orámovaným pozadím a přístroj nad panelem s orámovaným panelem:

Rámování pozadí a panelu

Pokud při přetahování myší jezdíte sem a tam, vždy se orámuje ten správný vlastník. Když s aplikací začínáte, není problém přístroj umístit přesně tam, kam potřebujete. Panelů je málo a vždy někde najdete kousek pozadí. Jak aplikaci zvětšíte, místa na ploše ubude a objeví se zádrhel, jak upustit nový přístroj na pozadí, když ho není nikde ani kousek vidět. Řešení je jednoduché, během přetahování je citlivá klávesa <Shift>, a když ji stisknete, tak se místo panelu pod kurzorem myši vždy vybere pozadí. Zkuste si to.

Popsaný způsob rámování budoucích vlastníků může pracovat naopak. Tak, že rámuje pozadí vždy a stisk klávesy <Shift> naopak zapíná rámování panelů podle pozice myši. Změna chování rámování se nastavuje v záložce "Systém" okna "Nastavení", které snadno otevřete z menu "Nástroje/Nastavení...". Volba se jmenuje "Zaregistrovat nový přístroj do panelu pod kurzorem myši", a standardně je vybraná.

Nastavení registrace do panelů

Právě jste se seznámili s prvním nastavením vývojového prostředí. Bude jich později přibývat. Zvyky uživatelů a přirozenost pro použití se obtížně normalizuje a zrovna vývojové prostředí by nemělo nutit jediný "ten správný způsob práce". Takže sem tam lze ledacos vypnout nebo zapnout a výběr té které pravé možnosti je pouze na vás. Pokud vás zajímá, co všechno můžete ve vývojovém prostředí upravit, tak vám doporučuji kapitolu Integrované vývojové prostředí — reference.

Nový přístroj nemusíte nutně vkládat do plochy se vzhledem, dobře poslouží jak strom viditelnosti, tak strom časování. Jakým způsobem jsou stromy organizovány bude popsáno v jedné z následujících podkapitol, nyní zůstaneme u přetahování, které s uspořádáním stromů přímo nesouvisí. Nový přístroj můžete upustit do stromu všude, kde vám to grafický editor dovolí. Pokud bude přístroj přijat, kreslí jeho řádek grafický editor ve stromu zvýrazněně:

Upuštění do stromu

Pravidla pro upuštění do stromu jsou jednoduchá. Přístroj se do stromu vloží vždy za označený řádek. Všimněte si, že mírně odlišně se chovají podstromy "Neviditelné" a "Nečasované". Přístroje můžete upustit pouze nad jejich kořenem a stromy si již samy přístroj zařadí do správné třídy.

Přístroje nemusíte přetahovat jenom z palety. Pravděpodobně budete při vývoji potřebovat občas některé přístroje ve stromech přehodit, nebo vložit (zaregistrovat) do jiného vlastníka. Vývojové prostředí umí přetahovat i ze stromů, přičemž přístroj můžete upustit opět do stromu nebo do plochy se vzhledem. Pro takové přetahování (ze stromů) platí stejná pravidla popsaná při přetahování z palety.

#### Přetahování procedur

Při popisu palety přístrojů jste se dozvěděli, že můžete jakoukoli proceduru zkopírovat do schránky a vložit ji na libovolné místo do textového editoru (buď přímo do editoru vývojového prostředí, nebo do editoru v inspektoru přístroje). Stejného výsledku dosáhnete i přetažením. Stačí zvolenou proceduru uchopit a pustit ji ve vybraném textovém editoru. Text jména procedury se vloží na místo kurzoru myši.

#### Přetahování přístrojů do textového editoru

Poslední varianta přetahování dokáže z palety přístrojů ikonu nebo ukázku vložit přímo do hlavního textového editoru vývojového prostředí. Tento způsob přetažení je mírně speciální — jednak textový editor naznačuje, kam bude nový přístroj puštěn (podtrhuje řádek, kam se text přístroje umístí) a jednak se přístroj při vložení vypíše ve své maximální variantě (nabídne všechny svoje parametry). To je užitečné pro rychlé nahlédnutí na všechny parametry přístroje. Takto vložený přístroj ovšem nemůže vědět, jak si jej přejete nakonfigurovat, takže ponechává (skoro) všechny rozbalené parametry neurčené. Slovo "skoro" v závorkách má svůj význam. Jaký, to vysvětlí další podkapitola.

#### Přednastavené parametry

Každý nový přístroj, který vkládáte do své aplikace, projde při svém vzniku sledem určitých kroků. Prohlédněte si následující obrázek:

Vznik přístroje

Alokace, vytvoření objektu nového přístroje v paměti, je operace základní. Přístroj se při ní naplní inicializačními hodnotami a všechny jeho parametry jsou prázdné, přesněji naplněné výrobcem přístroje. V této fázi nelze nic ovlivnit. Podobně základní je i zařazení do struktur, nejedná se o nic jiného, než o správné zapojení přístroje do vlastníka, případně časovače tak, jak jste je zvolili při přetáhnutí přístroje.

O ukázkách bylo hodně napsáno u palety přístrojů. Bylo řečeno, že ukázka napovídá, jak přístroj může vypadat, a že nově vložený přístroj automaticky převezme vzhled ukázky. Tento mechanizmus je znázorněn ve schématu otázkou "je to ukázka?". Jako poslední neznámý krok zůstává plnění přednastavenými parametry.

Do každého přístroje můžete podle vašich požadavků vložit počáteční parametry. Podle schématu se takovými počátečními parametry (existují-li) nově vzniklý přístroj naplní ihned po svém vzniku. Definice není nijak omezena a přednastavit můžete jakýkoli parametr přístroje. Jak se parametry nastavují? Velmi jednoduše — v inspektoru přístroje, který otevřete klikem pravého tlačítka myši do ikony přístroje v paletě přístrojů. Inspektor vám umožní definovat co je třeba, přičemž po jeho uzavření již přístroj bude pracovat s předdefinovanými parametry. Jak pracovat s inspektorem přístroje popisuje poslední velká část této kapitoly — Inspektor přístroje.

Otevření inspektora pravým tlačítkem myši je bežné i jinde v grafickém editoru, stejně tak se s ním i jinde stejně pracuje. Rozdíl mezi oběma inspektory — jedním otevřeným nad paletou a druhým otevřeným nad existujícím přístrojem v aplikaci — je právě ten, že inspektor nad paletou ovlivňuje všechny nově vznikající přístroje (mimo přístrojů vzniklých podle ukázky) a inspektor otevřený nad přístrojem vždy jen jeden přístroj sám.

### Grafický editor

Nejzajímavější kus vývojového prostředí je nejspíš samotný grafický editor — plocha pro úpravy vzhledu a plochy se stromy přístrojů. Spolu s inspektorem přístroje jsou to dvě nejvíce zatížené části systému Control Web při vývoji aplikace.

Jak aplikace vypadá, je až překvapivě důležité. Lidská psychika pracuje již pár desítek tisíc let (skoro) stále stejně a první dojem a pocit z každého předmětu nebo výrobku jsou pro celkové posouzení nejdůležitější. A to i přesto, že první dojem zrovna není rozumný argument pro rozhodování. Někdy se sice podaří negativní dojem otočit kvalitou technického řešení nebo výmluvností prodejce, ale většinou to skončí stejně — co se nelíbí na první pohled už dále nezajímá.

Také s vaší aplikací budou pracovat lidé, a když se jim vaše dílo bude líbit, tak se jim s ním bude i dobře pracovat. Nehledě na skutečnost, že pár chaoticky rozmístěných ukazatelů a tlačítek nejspíše časem skončí chybou obsluhy. Vytvářet pohledné, ergonomické a funkční aplikace rozhodně není jednoduché, koneckonců, kolik třeba existuje knih jen o ergonomii barev. Manuál, který zrovna čtete, vám sice v této oblasti příliš neposlouží, ale je to přinejmenším námět k zamyšlení a zároveň připomenutí, že vývojové prostředí (i celý Control Web) je špičkovým a velmi efektivním nástrojem, ale také nic víc. Samotný nástroj bez invence a lidské práce ještě nikdy nic nevyrobil.

Grafický editor je rozdělen na dvě velké části — editor vzhledu aplikace (plochu se vzhledem, vizuální editor) a na stromy viditelnosti, časování a vybraného přístroje. Obě části od sebe odděluje lišta, kterou může libovolně upravovat jejich vzájemný poměr. Podobně jako v paletě přístrojů dvojklik na lištu jednu z ploch skryje — zde jsou skryty stromy přístrojů.

Všechny prvky grafického editoru reagují na klik pravým tlačítkem myši. Otevře se menu, které obsahuje seznam operací, které s vybraným objektem můžete provést. Jelikož vzhled menu závisí na místě otevření, nazývá se takové menu kontextové. Kontextové menu může být jednoduché (například jste již poznali kontextové menu v seznamu procedur palety přístrojů) i poměrně rozsáhlé:

Velké kontextové menu

Při popisu vlastností a možností grafického editoru bude kontextové menu připomínáno, i když ne všude. Operace, kterými je možné v různých místech přístroj upravit, jsou v menu přítomny vždy, a proto se popis bude soustředit hlavně na objasnění principu a osvětlení souvislostí. Přednost také bude dána popisu klávesových zkratek, které nejsou na první podhled zřejmé.

#### Souřadnice

Ve vizuálním editoru aplikace vypadá stejně jako za běhu. Běžící aplikace sice může cokoli zvětšit, schovat nebo přeskládat, ale to už je čistě její věc. Každý objekt — přístroj leží na určitém místě a zpravidla patří do nějakého vlastníka (již jste se například setkali s pozadím — background). Souřadnice přístroje se počítají od levého horního rohu jeho vlastníka. Přístroj se souřadnicemi x=0 a y=0 může ležet v levém horním rohu obrazovky, má-li za vlastníka background, nebo v levém horním rohu nějakého panelu, který je jeho vlastníkem. Situaci znázorňuje následující obrázek:

Souřadnice přístroje

Souřadnice x a y přístroje mohou být ovlivněny jeho oknem. Každý přístroj můžete do okna umístit velmi jednoduše, buď v textu zápisem klíčového slova window před jméno třídy přístroje, nebo v inspektoru přístroje jednoduchým stiskem tlačítka (viz popis inspektoru). Okno přístroj "obalí", takže absolutní pozice přístroje na obrazovce se nezmění. Opět ukázkový obrázek:

Souřadnice přístroje s oknem

Upozornění: souřadnice vybíracího rámečku zobrazované ve stavovém řádku vždy odpovídají fyzické velikosti rámečku, tedy vždy obsahují souřadnice okna přístroje. Přístroji samému se souřadnice přidáním okna nezmění, pouze vybírací rámeček kvůli orientaci ve vizuálním editoru vždy zobrazuje skutečné souřadnice.

V grafickém uživatelském rozhraní se okna (a jiné objekty) celkem bez problémů mohou překrývat. Jedno okno můžete umístit "nad" jiné a okno, které je "dole", zůstane skryté. Asi cítíte, že "nad" a "dole" nejsou ta pravá slova pro exaktní vyjádření. Celkem přirozeně se začalo postupem času používat označní z-souřadnice (z-order). Přístroje tedy mají svou z-souřadnici a ve vizuálním editoru se s ní operuje i přesto, že není v přístroji nijak explicitně zapsaná. Na z-souřadnici je třeba myslet hlavně u průhledných přístrojů nebo u přístrojů, které se nějak pohybují a mohly by se při svém posunu dostat "pod" nebo "nad" nějaký jiný přístroj.

#### Vybírací rámeček

Vložte do aplikace nějaký nový přístroj anebo otevřete nějakou existující aplikaci (například z ukázek). Pokud nejste v grafickém editoru, klikněte na záložku "Grafický editor" a přepněte se do něj. Dále myší klikněte do nějakého vhodného přístroje. Uvidíte, jak se přístroj orámuje červeným vybíracím rámečkem a jak se jeho vlastník orámuje červenou přerušovanou čarou, kterou již znáte z povídání o přetahování. Vzhled vybíracího rámečku je dvojí — některé přístroje neumožňují měnit svou velikosti a vybírací rámeček se kolem nich kreslí jednoduchou čarou, většina přístrojů je libovolně zvětšitelnám, a rámeček je proto po svém obvodu vybaven úchopovými body. S vybíracím rámečkem můžete libovolně pohybovat (potažením středového bodu) nebo měnit dle potřeb jeho velikost (potažením některého z krajních bodů). Přístroj ve vybíracím rámečku všechny změny přesně sleduje, takže pohybem vybíracího rámečku jednoduše upravujete samotný přístroj.

Zároveň s výběrem přístroje a jeho orámováním vybíracím rámečkem se naplnil daty vybraného přístroje stavový řádek. Důležitým údajem jsou souřadnice, kdykoli můžete rychle nahlédnout, jestli přístroj leží tam, kde má.

Zkuste myší chytit nějaký bod vybíracího rámečku a podržte jej. Vybírací rámeček za tohoto stavu aktivně reaguje na klávesy šipek a klávesu <Ctrl>. Vyzkoušejte si těmito klávesami vybírací rámeček ovládat. Zjistíte, že šipky pohybují rámečkem o jeden logický krok a šipky se stisknutou klávesou <Ctrl> pohybují rámečkem o deset logických kroků. Všechny takové pohyby nebo změny velikosti můžete samozřejmě sledovat ve stavovém řádku.

Asi jste si povšimli, že vybírací rámeček "skáče", nepohybuje se plynule a souřadnice se nemění po 1. Je to správně, neboť rámeček to má standardně přikázáno. Ve vizuálním editoru je nastaven rastr (standardně s krokem 5) a vybírací rámeček jej věrně sleduje. Do rastru se zarovnává jak pozice, tak i velikost rámečku, a je tedy jedno, jakým způsobem s ním operujete. Veškeré parametry rastru jsou nastavitelné, včetně zapnutí nebo vypnutí jeho zobrazování. Ještě než vás však provedu nastavením, pohovořím o vodicích čarách.

Rastr usnadňuje polohování objektů. K témuž slouží i vodicí čáry. Najeďte myší těsně k levému nebo hornímu okraji vizuálního editoru (kurzor myši se změní na nebo na a vytáhněte (klikem a tažením) vodicí čáru do vizuálního editoru (aktuální souřadnice vodicí čáry se průběžně zobrazuje ve stavovém řádku). Pokud nyní některou rovnoběžnou hranu vybíracího rámečku přisunete k vodicí čáře, vybírací rámeček k čáře přiskočí a přichytí se k ní. Vodicích čar se dá s výhodou použít například při polohování více objektů. Čar můžete vytáhnout kolik potřebujete a na všechny bude rámeček reagovat stejným způsobem. Nebudete-li již čáru potřebovat, zbavíte se jí odsunutím (vyvezením) před levý nebo nad horní okraj vizuálního editoru.

Rastr i vodicí čáry mají hodně společného a proto se společně nastavují i jejich vlastnosti. Pomocí menu "Nástroje/Nastavení..." otevřete okno "Nastavení" a vyberte v něm záložku "Vizuální editor". Větší část této záložky je věnována právě rastru a vodicím čarám.

Nastavení rastru a vodicích čar

Pro začátek můžete jak rastru tak čarám přiřadit vlastní barvu. Další tři řádky ovlivňují viditelnost, přičemž standardně jsou zobrazovány pouze vodicí čáry. Nastavení "Zobrazovat rastr a vodicí čáry nad aplikačními objekty" řídí vzájemnou polohu (chcete-li z-souřadnici) vrstvy přístrojů a vrstvy s rastrem a čarami. Vyzkoušejte, a uvidíte. Totéž platí o parametrech rastru v poslední části záložky. Vysvětlení snad zaslouží pouze "Počáteční posunutí rastru". Rastr s rozestupem 10 bude mít bez počátečního posunutí body na souřadnicích 0, 10, 20 a dále; s počátečním posunutím 5 padnou body rastru do souřadnic 5, 15, 25 a dále. Vzájemnou kombinací obou parametrů rozestupu a posunutí dokážete rastr zcela libovolně nastavit.

Nyní se přepněte do záložky "Vybírací rámeček". Záložka je bohatá, rastru a * vodicích čar se týkají jednak první čtyři nastavení a jednak "Citlivost příchytu vybíracího rámečku k vodicím čarám":

Nastavení příchytu vybíracího rámečku

Funkce nastavení je opět zřejmá, snad jen dodám, že "Citlivost příchytu" znamená největší vzdálenost (v obrazových bodech) od vodicí čáry, kdy se k ní vybírací rámeček ještě přichytí.

#### Označování přístrojů

Zatím jste do vybíracího rámečku zařazovali vždy jen jeden přístroj. Občas je užitečné (pokud například potřebujete přesunout více přístrojů "jen o kousek vedle") pracovat s více přístroji najednou. Základní způsob, jakým do rámečku zařadíte více přístrojů, je použití klávesy <Shift>, která má význam přidat. Vyberte nějaký přístroj, stiskněte a držte klávesu <Shift> a vyberte myší další přístroj. Okamžitě bude vybírací rámeček obsahovat přístroje dva. Kolik přístrojů momentálně rámeček obsahuje snadno zjistíte pohledem do stavového řádku — před souřadnicemi je závorka s aktuálním počtem objektů ve vybíracím rámečku. Klávesa <Shift> pracuje obousměrně, takže přístroj, který již v rámečku je, se při kliku vyřadí. Velmi snadno si to ověříte, stačí když budete držet klávesu <Shift> stisknutou a myší budete klikat stále do jednoho přístroje. Přístroj se bude střídavě zařazovat a vyřazovat.

Vybírání skupin přístrojů má jedno omezení. Všechny vybrané přístroje musí mít stejného vlastníka. Nemůžete proto vybrat najednou jeden přístroj na pozadí a druhý přístroj zaregistrovaný do nějakého panelu.

Právě uvedená vlastnost pomůže lépe osvětlit další způsob označení skupiny přístrojů. Tentokrát se do hry dostane klávesa <Alt>. Stiskněte a držte ji, a kdekoli na ploše vizuálního editoru klikněte a táhněte myší. Objeví se přerušovaný rámeček, kterým můžete po ploše editoru volně pohybovat. Jakmile pustíte tlačítko myši, vybere vizuální editor všechny přístroje, které se celou svou plochou vlezly do přerušovaného rámečku. Souvislost s předchozím odstavcem je následující: vybrány budou jen přístroje v jednom panelu, a navíc jen v panelu, který je v z-souřadnici nejvýše.

Aby toho nebylo málo, doplním klávesu <Ctrl>. Přerušovaný rámeček vybere při současně stisknuté klávese <Ctrl> přístroje, které byť jen částí své plochy protínají přerušovaný rámeček. Doporučuji vyzkoušet. Pokud při vybírání pomocí klávesy <Alt> (bez ohledu na klávesu <Ctrl>) použijete klávesu <Shift>, budete i tentokrát přístroje přidávat nebo ubírat naprosto shodně jako při samostatném přidávání jednoho přístroje.

Všechny funkce vybíracího rámečku, tedy přesun, zvětšování, zarovnávání do rastru i přichytávání k vodicím čarám pracují se skupinou objektů naprosto stejně jako s jedním přístrojem. Mírná odlišnost se týká změn velikosti, neboť skupina přístrojů se zvětšuje (zmenšuje) jako celek, a všechny označené přístroje se proto ve stejném poměru zvětšují (zmenšují) s ní.

#### Stromy s přístroji

Docela jiný pohled na aplikaci nabízí v grafickém editoru plocha se stromy. Označení "strom" se v informačních technologiích začalo používat pro všechny struktury, ve kterých je možné nalézt nějak hierarchicky uspořádané prvky. Podobnost se skutečným stromem se jasně ukáže, když takovou strukturu nakreslíte. Uvidíte, že každý strom má kořen (prvek, který nemá žádného vlastníka) a listy (prvky, které nemají žádné podřízené prvky). Všechny ostatní prvky stromu se nazývají uzly — uzel někam patří (do vlastníka) a sám slouží jako nadřazený prvek pro další vrstvu uzlů nebo listů. Z předchozích vět také můžete vytušit, že počítačový strom "roste" typicky shora dolů. Kořen bývá nejvýše a listy nejníže.

Stromy jsou oblíbené i z toho důvodu, že lidé pro svou lepší orientaci a pochopení okolní svět v mysli uspořádávají. Dělení na skupiny, podskupiny a ještě menší podskupiny je velmi přirozené a strom není nic jiného, než grafické zobrazení tohoto dělení. Důležité je především, že pokud už takové dělení existuje, obyčejně se jím samotným nezabýváte a pracujete jenom s některou jeho skupinou. Zbytek vás nezajímá. Hierarchizací a uspořádáním se potenciálně velký a nepřehledný problém zmenšuje na spoustu malých a jednoduchých částí.

Grafický editor systému Control Web používá stromy pro zobrazení dvou hlavních pohledů na aplikaci. Jeden pohled ukazuje strukturu viditelnosti (jak aplikace vypadá) a druhý strukturu časování (jak aplikace pracuje). Oběma pohledům analogicky odpovídají stromy viditelnosti a časování (je tam ještě třetí strom, ale ten má mírně jiné poslání).

Podíváte-li se do některého z těchto stromů, uvidíte, že oba mají dva kořeny. Jeden hlavní, který odpovídá pojmenování stromu, a druhý, který má přesně opačný význam.

Dva kořeny stromů

V obou stromech proto najdete všechny přístroje vaší aplikace — oba pohledy jsou úplné. Strom viditelnosti v kořeni obsahuje background — pozadí, v uzlech panely a v listech přístroje. Okamžitě vidíte, jak jsou přístroje do panelů zaregistrovány, jak budou na obrazovce vidět. Strom časování má v kořeni jádro, v uzlech časovače a v listech opět přístroje. Časování přístrojů v nejvyšší vrstvě je řízeno systémem a přístroje mají svůj periodický časový krok, časování přístrojů zaregistrovaných kdekoli mimo nejvyšší vrstvu řídí nadřazený časovač (o viditelnosti čtěte v kapitole Vzhled aplikace a o časování v kapitole Časování aplikace reálného času). Řazení přístrojů ve stromech není náhodné, strom viditelnosti přesně kopíruje z-souřadnici objektů, strom časování zase pořadí aktivací přístrojů časovačem. Jak uvidíte později, změnou pozice ve stromu dosáhnete změny chování nebo vzhledu aplikace.

Stromy kořenů s opačným významem mají odlišné uspořádání. Jednotlivé nejvyšší uzly odpovídají třídám přístrojů a v nich jsou podle abecedy seřazeny všechny odpovídající přístroje vyskytující se v aplikaci. Žádné další přesnější dělení není nutné, neboť například, je-li přístroj neviditelný, tak ve stromu viditelnosti do žádné jiné rozumnější kategorie nezapadá.

Práce se stromy neskrývá žádná úskalí. Jednotlivé uzly můžete klikem myši na znaménko nebo otevřít nebo zavřít, téhož dosáhnete dvojklikem na vybraný řádek. Pokud vybraný přístroj myší chytíte a přetáhnete, bude reagovat přesně podle předchozího popisu přetahování.

#### Strom s vybraným přístrojem

Třetí ze stromů v grafickém editoru obsahuje vždy jen jeden aktuálně vybraný přístroj. Přístroj tvoří kořen tohoto stromu, jednotlivé větve vždy obsahují pohled na určitou část funkce přístroje. Větve "Vstupy" a "Výstupy" ukazují globální proměnné a kanály, které přístroj čte nebo do kterých zapisuje. Další větve s procedurami obsahují po řadě procedury událostní (ty, které systém nebo přístroj samostatně volá při splnění určitých podmínek), uživatelské (procedury, které sami v přístroji definujete) a nativní (vlastní zabudované procedury přístroje). Procedury ze stromu je možné přetahovat do textového editoru podobně jako z palety přístrojů.

Tolik k obecným vlastnostem vizuálního editoru a stromů přístrojů. Další části kapitoly se již budou věnovat skutečným úpravám aplikace.

#### Vlastník přístroje a Z-souřadnice

Vizuální editor dokáže snadno určovat a udržovat vlastníky přístrojů — panely (více o vzhledu a panelech kapitola Vzhled aplikace), neboť ve vizuálním editoru přehledně vidíte, kde zrovna přístroj leží. Vyberete-li jej, objeví se vybírací rámeček a orámuje se jeho vlastník. To vše již bylo řečeno.

Co s vlastníky? Existují dvě základní (téměř opačné) operace — zařazení přístroje do panelu a naopak vyřazení přístroje z panelu (neboli zařazení do pozadí). Zařazovací klávesa <Ins> vždy nastavuje přístroji vlastníka, který leží pod levým horním rohem přístroje, opačnou akci provede kombinace kláves <Shift>+<Ins>. Ta vždy nastaví přístroji jako vlastníka pozadí (background). Okamžitě po vykonání některé z těchto operací se pochopitelně orámovaný vlastník překreslí, takže bezprostředně vidíte, co se vlastně stalo. Jeden příklad za všechny — pokud si přejete přístroj přemístit do jiného panelu, stačí jej vybrat, odregistrovat pomocí <Shift>+<Ins>, přesunout a zaregistrovat do nového panelu pomocí <Ins>.

Se z-souřadnicí jste se seznámili v odstavci Souřadnice. V systému Control Web je tato souřadnice prvotně určená pozicí přístroje ve zdrojovém textu, přičemž platí, že přístroj umístěný v textu výše bude "výše" také na obrazovce. Ve vizuálním editoru je možné pozice "výše" a "níže" ovlivnit pomocí kláves <PgUp>, <PgDown>, <Ctrl>+<PgUp> a <Ctrl>+<PgDown>. Platí, že klávesa <PgUp> (<PgDown>) posune přístroj v z-souřadnici o jeden přístroj nahoru (dolů). Přístroj tedy vyskočí nad (poklesne pod) přístroj, který byl v z-souřadnici bezprostředně nad ním (pod ním). Kombinace kláves navíc s <Ctrl> jsou mocnější a přístroj buď zcela vynoří na povrch (nad všechny ostatní přístroje) nebo zcela ponoří (pod všechny ostatní přístroje). Popsané operace vyvoláte také z kontextového menu, které můžete nad vybíracím rámečkem kdykoli otevřít, nebo z menu "Uspořádání".

Z-souřadnice je obecná a určení vzájemných vztahů přístrojů v různých panelech má teoretický smysl. Při úpravách ve vizuálním editoru je však (kvůli přehlednosti) pohyb přístrojů omezen na jeden jediný panel (vlastníka). Tak je třeba chápat i slova "nad či pod všechny ostatní přístroje" v předchozích větách. Vždy je myšleno "nad či pod všechny ostatní přístroje mající stejného vlastníka".

Změny vlastníků a z-souřadnic můžete provádět také ve stromu viditelnosti. Uzly stromu viditelnosti tvoří panely, takže pokud nějaký přístroj patří do větve pod určitým panelem, automaticky je tento panel jeho vlastníkem. Podobně z-souřadnice je dána pořadím přístroje v seznamu. Platí, že přístroj, který je "výše", je "výše" i v z-souřadnici (možná jste si již všimli, že změny vlastníků nebo z-souřadnic pomocí klávesových operací s vybíracím rámečkem posouvají i přístroje ve stromech). Jak vlastníka, tak z-souřadnici ve stromu změníte snadno přetažením přístroje. Záleží jen na místě, kde přístroj upustíte. Pokud jej přesunete pouze v jedné větvi stromu, změníte jen z-souřadnici. Pokud jej přesunete na vzdálenější místo (do jiné větve stromu), upravíte obojí — jak vlastníka, tak z-souřadnici. Jakákoli změna vlastníka nebo z-souřadnice se pochopitelně opět okamžitě viditelně promítá do vzhledu aplikace ve vizuálním editoru.

#### Uschování panelu

Aplikace s jedním až dvěma panely je na orientaci velmi snadná. Ve vizuálním editoru vidíte panely oba dva a bez potíží ihned víte, kam který přístroj umístit. Jakmile však počet panelů zvětšíte a začnete je do sebe skládat, zjistíte, že narůstá zmatek. Neustálé přehazování panelů v z-souřadnici by mohlo pomoci, ale není to příliš elegantní.

Vývojové prostředí nabízí uschování panelů. Libovolný panel během vývoje můžete skrývat a zobrazovat. Tyto úkony nijak neovlivní vzhled aplikace při běhu, je to čistě editační nástroj. Panel, který skryjete, pochopitelně není na ploše vizuálního editoru vidět, a nezavazí. Ostatní panely se tím automaticky odkryjí, načež s nimi můžete libovolně pracovat. Ideální je ponechat si na pracovní ploše vždy jen jeden panel, neboť to je nejpřehlednější.

Panel skryjete buď ve vybíracím rámečku nebo ve stromu viditelnosti. Vybírací rámeček reaguje na kombinaci kláves <Alt>+<M>, strom viditelnosti taktéž. Při skrývání nemusíte nutně vždy vybírat panel, stačí označit jakýkoli přístroj a příkaz pro skrytí schová jeho vlastníka. Skrytý panel zmizí z vizuálního editoru a zůstane pouze ve stromu viditelnosti. Fakt, že je panel skrytý, signalizuje jednak změněná (zešedlá) ikona před jeho jménem a jednak přeškrtnutá ikona oka na začátku řádku s panelem:

Skrytý panel

Zobrazení panelu obstará opět kombinace kláves <Alt>+<M>, samozřejmě poté, co nějaký skrytý panel ve stromu označíte. Panel se opět objeví a jeho ikony se vybarví (i ikona panelu i ikona s okem).

Stejného výsledku jako s klávesami dosáhnete z menu "Uspořádání/Skrýt panel" (případně "Uspořádání/Zobrazit panel"), případně z kontextového menu.

#### Okno přístroje

Již víte, že každý viditelný přístroj můžete umístit do okna. Jakým způsobem okno ovlivňuje souřadnice přístroje již bylo také řečeno (odstavec Souřadnice), takže zbývá pouze ukázat, jak okno kolem přístroje vyrobit (nebo ho naopak odstranit). Obyčejně se do oken umisťují panely, neboť s obrazovkou — panelem v okně může uživatel v běžící aplikaci sám manipulovat. Všechny přístroje však mohou mít okno, a proto grafický editor v tomto případě mezi přístroji žádné rozdíly nečiní.

Nejjednodušší způsob ovládání oken přístrojů je klávesová kombinace <Alt>+<W>. Kombinace pracuje jako přepínač, takže pokud již přístroj okno má, <Alt>+<W> jej odstraní. Příkaz pro vytvoření/odstranění okna je (stejně jako ostatní) k dosažení také v kontextovém menu nebo v hlavním menu "Uspořádání". Všechny varianty příkazu jsou aktivní jak ve vizuálním editoru, tak ve stromech přístrojů.

Další možnost ovlivnění okna kolem přístroje nabízí jeho inspektor, ale k tomu se propracujeme později.

#### Schránka, mazání a duplikace

Schránka v grafickém uživatelském rozhraní slouží k dočasnému uschování nějakých dat (aby je například bylo možné přenést mezi různými aplikacemi), ať už to jsou data textová nebo jakákoli jiná. Se schránkou se pracuje pomocí třech základních operací — vyříznutí, kopie a vložení, přičemž tyto operace pokrývají všechny myslitelné způsoby práce se schránkou. Příkazy pro tyto operace bývají ve všech aplikacích v menu "Úpravy" nebo "Editace", stejně tak skoro všechny aplikace podporují pro práci se schránkou standardní klávesové zkratky.

Control Web používá kombinace <Ctrl>+<C> pro zkopírování objektu do schránky, <Ctrl>+<X> pro vyříznutí objektu a jeho přemístění do schránky a <Ctrl>+<V> pro vložení objektu ze schránky. Tytéž možnosti naleznete také v každém kontextovém menu otevřeném nad přístrojem. Schránka se používá docela často, a lze ji proto ovládat také z nástrojové lišty:

Operace se schránkou

Tlačítka po řadě znamenají vyříznutí, kopii a vložení. Povšimněte si, že tlačítka reagují na momentální stav grafického editoru a povolují se pouze v situaci, kdy označíte nějaký vhodný přístroj (nebo skupinu přístrojů), nebo vhodného vlastníka.

Kopie a vyříznutí jsou podobné operace, obě plní schránku novými daty. V grafickém editoru pracujete s přístroji a právě přístroje jsou objekty, které můžete do schránky schovávat (a z ní do aplikace vkládat). Jednoduché přístroje (takové, které neumějí sdružovat jiné přístroje) se vkládají do schránky samostatně, panely a časovače (přístroje, které obyčejně zastřešují několik jiných přístrojů) se do schránky vkládají s celým svým podstromem. Schránka proto může obsahovat několik (i velmi mnoho) přístrojů najednou. Vnitřní formát schránky grafického editoru je textový, což znamená, že její obsah můžete vložit do jakéhokoli textového editoru (skutečně jakéhokoli, ne pouze editoru systému Control Web).

Vložení objektů ze schránky do aplikace je mírně složitější. Předem musíte rozmyslet, kam chcete objekty vložit. Jako cíl můžete vybrat pozadí, panel nebo časovač — vždy objekt, který dokáže sdružovat více přístrojů najednou. Grafický editor vám neumožní vložit data do žádného jiného objektu, což také signalizuje případným zakázáním položek menu a tlačítka v nástrojové liště.

Velmi užitečnou operací je mazání. Koneckonců, jeden z největších přínosů počítačů je, že existuje cesta zpět. Když něco špatně uříznete, tak už to nepřilepíte, když něco nevhodně naprogramujete, kdykoli můžete svou chybu napravit. Pro mazání je k dispozici klávesa <Del>, příkazy z menu a samozřejmě lišta s nástroji:

Smazání

Mazání postupně odstraňuje všechny označené přístroje, přičemž rámováním ukazuje, který přístroj je zrovna na řadě. Důležité je, že při smazání panelu nebo časovače najednou odstraníte i všechny podřízené přístroje (vývojové prostředí se sice ujišťuje, jestli to myslíte vážně, ale přesto je při mazání objektů užitečné jisté větší soustředění). Mazat objekty můžete jak ve stromech, tak ve vizuálním editoru.

Duplikace je nástroj, který jedním klikem do lišty s nástroji na tlačítko

Duplikace

vyrobí přesnou kopii označených objektů. Kopie jsou zcela identické s jednou možnou vyjímkou. Panely a časovače mají v systému unikátní jména, takže není možné, aby duplikovaný panel nebo časovač získal stejné jméno jako jeho vzor. Duplikát panelu a časovače proto bude mít jiné jméno (stejně to s panely a časovači dopadne, jak jste již možná všimli, i v případě operací kopie/vyříznutí a vložení). Duplikace přístrojů ve stromu je přímočará, duplikace ve vizuálním editoru nabízí navíc možnost přemístění duplikátu. Parametry přemístění najdete v záložce "Vybírací rámeček" známého okna "Nastavení", otevřeného z menu "Nástroje/Nastavení...":

Nastavení posunu duplikátu

Nastavení přemístění tedy ovlivňuje pouze vizuální editor, duplikace ve stromu objekty nikam neposouvá. Pokud budete uvedené parametry vhodně nastavovat, dokážete rychle rozmnožovat i velká množství objektů.

#### Vyhledávání přístrojů

V grafickém editoru můžete všechny přístroje vyhledat poměrně rychle ručně, obyčejně toho však bývá schopen pouze autor sám. Vyhledávání ulehčuje orientaci v aplikaci všem (nejen autorovi), například programátorům, kteří projekt po někom převzali a dále jej rozšiřují.

Vyhledání spustíte z nástrojové lišty tlačítkem

Vyhledání přístroje

nebo příkazem menu "Editace/Vyhledat" nebo kombinací kláves <Ctrl>+<F>. Control Web otevře následující okno:

Okno vyhledání

Do prvních třech editačních řádků (zpočátku naplněných hvězdičkou) se zadávají jména (respektive masky jmen) objektů, které se mají do vyhledávání zahrnout. Masky používají konvenci zástupných znaků systému Windows, takže znak * nahrazuje libovolný počet jakýchkoli znaků a znak ? nahrazuje jakýkoli jeden znak. Zadáte-li například jméno prg* a v maskách pro vlastníka a časovač ponecháte hvězdičky, bude systém hledat všechny přístroje, jejichž jméno začíná znaky prg. Nalezeny tedy budou například přístroje prgStart nebo prg_Kotel_1. Analogicky pracují masky vlastníka (tedy vlastnícího panelu) a časovače. Zadáte-li proto do masky časovače 0.* a ponecháte v masce přístroje prg*, vyhledá systém všechny přístroje s popsaným jménem časované systémem s periodou menší než 1 sekunda.

Vyhledávání můžete omezit na určitou skupinu přístrojů. K tomu v okně vyhledávání slouží pět tlačítek výběru a jedno tlačítko obyčejné (tlačítko "Třídy přístrojů"). Význam tlačítek výběru je zřejmý, každé z nich povoluje hledání v určité skupině přístrojů, přičemž tlačítka "Panely", "Časovače" a "Ostatní" ovlivňují vyhledávání nezávisle na zbylých tlačítcích "Neviditelné" a "Nečasované".

Zajímavá je možnost přímo určit, jaké třídy přístrojů se mají hledat. Po stistku tlačítka "Třídy přístrojů" se dialogové okno vyhledávání rozšíří

Okno vyhledání s třídami

a pomocí dvou seznamů všech a vybraných tříd umožní zúžit vyhledávání pouze na požadované třídy. Zařadíte-li do seznamu vyhledávaných tříd program a switch, bude systém prohledávat pouze programy a tlačítka, která vyhovují ostatním výše definovaným parametrům (maskám a volbám).

Jestliže v aplikaci požadovaný přístroj existuje, otevře Control Web další okno:

Nalezený přístroj

které jednak popisuje nalezený objekt (čtyři textové řádky "Třída", "Jméno", "Časovač" a "Vlastník"), jednak nabízí označení přístroje ve třech hlavních částech grafického editoru a jednak umožňuje pokračovat v hledání dalších přístrojů (tlačítko "Další").

#### Zarovnání

Zarovnání dokáže najednou uspořádat několik (i velmi mnoho) přístrojů. Zarovnání ovlivňuje pozice i velikosti přístrojů, což znamená, že je omezeno jen na vizuální editor. Okno zarovnání otevřete buď z menu "Uspořádání/Zarovnat...", nebo kombinací kláves <Alt>+<A>. Control Web otevře následující okno:

Okno zarovnání

První tři ovládací prvky přepínají základní způsoby zarovnání — vodorovné, svislé a velikostí. Výběr některého z těchto způsobů automaticky přepne vzhled okna a umožní tak zadat vlastní parametry zarovnání.

Nejjednodušší je zarovnání velikostí. Nabízené požadavky pokrývají všechny způsoby přizpůsobení velikosti, přičemž je navíc možné zapnout pomocí volby "Zarovnat velikosti objektů do rastru" přizpůsobení se rastru. Tehdy se velikost objektu bez ovlivnění jeho pozice upraví tak, aby spodní nebo pravá hranice ležela v rastru — to tedy znamená, že přístroj, který nemá pozici zarovnanou do rastru nebude nikam posunut a nebude mít do rastru zarovnanou ani velikost šířky (nebo výšky) i přesto, že jeho spodní nebo pravá hranice v rastu leží. Vlastní zarovnání objektů aplikace (v okně zarovnání jste zatím pouze prohlíželi případně vybírali způsoby zarovnání) se provede teprve až v okamžiku stisknutí tlačítka "Zarovnat". Jinými slovy, dokud tohoto tlačítka nepoužijete, neprovede se žádné zarovnání a v aplikaci se neprojeví žádná změna.

Poněkud komplikovanější může být zarovnání pozic. Vodorovné i svislé zarovnání pozic jsou principem identické, takže má smysl popsat jen jednu variantu — vodorovnou, přičemž variantu druhou, svislou, si jistě snadno odvodíte pouhým přehozením smyslu obou os x a y.

Základní způsoby vodorovného zarovnání — doprava, doleva a na střed — jsou jednoduché — všechny objekty ve vybíracím rámečku přeskočí na svá nová místa. Více propracovanější jsou varianty vyrovnávací, které dokážou více objektů rovnoměrně rozložit vedle sebe. Control Web nabízí tři způsoby vyrovnání:

- vyrovnání podle šířky vybíracího rámečku

Pokud vybírací rámeček obsahuje více přístrojů, je jeho velikost právě taková, aby obsáhl všechny vybrané přístroje. Vyrovnání podle šířky rámečku zachová tuto velikost a rovnoměrně rozdělí volné místo mezi přístroji. Následující obrázek vyrovnání

Vyrovnání podle šířky vybíracího rámečku

ukazuje, že požadavek zachování původní šířky rámečku může vynutit drobné odchylky (o velikosti 1 obrazového bodu) v rozestupech přístrojů. Vzdálenosti přístrojů při použití tohoto vyrovnání nemusejí být identické.

- vyrovnání se stejnými rozestupy

Tento způsob vyrovnání se také snaží zachovat šířku rámečku, ale dává přednost shodným rozestupům. Šířka vybíracího rámečku tedy nemusí být vždy zachována, přičemž, je-li při vyrovnání šířka změněna, dojde vždy k jejímu zmenšení. Situaci demonstruje následující obrázek:

Vyrovnání se stejnými rozestupy

- vyrovnání se zadanými rozestupy

Třetí varianta vyrovnání nebere šířku rámečku vůbec v potaz. Jediné vodítko pro vyrovnání je vámi zadaná velikost rozestupu. Rychle a přesně tak můžete rozvinout přístroje vedle sebe:

Vyrovnání se zadanými rozestupy

Všechny tři uvedené varianty vyrovnání pracují se skupinou přístrojů. Velmi záleží, v jakém postupném pořadí se budou přístroje při vyrovnání skládat. Podvědomě očekávaný výsledek vyrovnání může být zcela odlišný, neboť počítač (a algoritmus) nemají podvědomí. V zásadě je možné objekty při vodorovném vyrovnání skládat postupně podle rostoucí vodorovné nebo svislé souřadnice. Třetí nabízená varianta — automatická — pouze samostatně rozhodne, který způsob — postupně vodorovně nebo postupně svisle — se použije. Automatické rozhodnutí spočívá v porovnání výšky a šířky vybíracího rámečku: je-li rámeček širší než jeho výška, použije se postup vodorovný, naopak, je-li rámeček vyšší než jeho šířka, použije se postup svislý. Výsledek zarovnání skupiny přístrojů s volbami postupu vodorovného nebo svislého ukazuje následující obrázek:

Různé postupy vyrovnání

Podobně jako velikosti objektů je možné zarovnávat do rastru i jejich pozice. Zarovnání do rastru (jak pozic tak i velikostí) se vždy provádí až po předchozím vlastním zarovnání (nebo vyrovnání). To například znamená, že rozestupy objektů vyrovnaných se stejnými rozestupy se mohou při současném zarovnání pozic do rastru zcela lišit jeden od druhého, neboť zarovnání do rastru s vysokou pravděpodobností pravidelnost rozestupů poruší.

#### Křížové odkazy

Grafický editor systému Control Web nabízí pro vytvoření rychlého přehledu o aplikaci křížové odkazy. Dialogové okno pro určení vlastností generování křížových odkazů otevřete pomocí menu "Aplikace/Křížové odkazy...". Objeví se následující okno:

Křížové odkazy

Control Web poskytuje tři základní druhy křížových odkazů — stromy viditelnosti, stromy časování a přehledy přístrojů. Tomu také odpovídají tři základní tlačítka výběru. Pro vytvoření stromů viditelnosti a časování musíte zadat počáteční panel nebo časovač, který se stane kořenem generovaného stromu. Můžete tak vypisovat samostatné podstromy (viditelnosi i časování) bez ohledu na zbývající objekty.

Generování přehledu přístrojů vytváří místo stromů seznamy seřazené podle zvoleného kritéria. Navíc můžete seznam vytvořit jen z některých skupin přístrojů — například seznam pouze časovaných přístrojů obdržíte zrušením volby "Nečasované".

Vytvořené výsledné křížové odkazy se vždy zobrazí jako text v samostatném okně textového editoru. V záhlaví textu je stručně popsáno, jaké údaje jsou jeho součástí, zbytek textu obsahuje vlastní strom nebo seznam přístrojů.

## Inspektor přístroje

Inspektor přístroje je základní nástroj grafického editoru, který dokáže upravit jakýkoli parametr jakéhokoli vybraného přístroje. Pomocí inspektoru se definují lokální data přístrojů, jejich procedury, barvy, parametry, zkrátka úplně všechno, co ovlivňuje chování a vzhled přístroje. Inspektor přístroje je univerzální nástroj, který rozumí všem přístrojům. Přístroje jsou mnohdy značně rozdílné, což znamená, že jednotlivé detaily inspektora otevřeného nad různými třídami přístrojů se mohou lišit. V zásadě se však vždy bude lišit jen obsazení jednotlivých částí inspektora, který tak zůstává rámcem pro veškeré možnosti všech různých přístrojů.

Inspektor přístroje je nástroj, který se otevírá nad přístrojem. Princip jeho práce — úprava dat přístroje — vynucuje pevné svázání inspektora s jediným přístrojem, což znamená, že Control Web nepovolí otevření inspektora nad skupinou přístrojů. Otevření inspektora je snadné, klik pravým tlačítkem myši do vybíracího rámečku (nebo do stromu přístrojů) otevře kontextové menu, které vždy obsahuje jako poslední položku "Inspektor přístroje...":

Kontextové menu Inspektor přístroje...

Otevření kontextového menu je možné potlačit (viz kapitola Dílu 3 Integrované vývojové prostředí — reference, je proto možné, že inspektor otevřete samotným klikem pravého tlačítka myši.

Nově otevřený inspektor vždy obsahuje právě aktuální data přístroje. Data můžete dle libosti upravovat, přičemž veškeré vaše úpravy probíhají pouze uvnitř inspektora a neovlivňují vlastní editovaný přístroj. Editaci přístroje v inspektoru lze ukončit dvěma způsoby — buď použitím úprav nebo zrušením úprav. "Použití" zapíše údaje upravené v inspektoru do editovaného přístroje, zrušení jen zavře okno inspektoru a editovaný přístroj nijak neovlivní. Jakoukoli změnu dat přístroje je tedy v inspektoru nutné potvrdit (použitím), jinak se v přístroji žádná změna neprojeví.

Okno inspektoru může vypadat následovně:

Okno inspektoru přístroje

První tři tlačítka v liště s nástroji znamenají po řadě: současné použití a uzavření, samostatné použití (bez uzavření) a samostatné uzavření (bez použití úprav). Další tlačítka slouží k přepínání okna přístroje (je-li přístroj v okně, je tlačítko stisknuto) a k přepínání řazení datových elementů v editorech lokálních dat přístroje.

Vodorovné záložky inspektora kopírují základní (logické) bloky dat přístroje, přičemž každá záložka vždy obsahuje veškeré nástroje potřebné pro editaci konkrétního bloku.

#### Záložka "Parametry"

Každý přístroj, který je součástí aplikace, potřebuje pro svou správnou činnost nastavení určitých parametrů. Parametry ovlivňují vztahy přístroje s jeho okolím (například aplikací nebo jinými přístroji), ovlivňují vlastní činnost přístroje (například vzhled) a umožňují spojení přístroje a aplikačních dat. Parametry blíže určují a jemněji definují základní funkčnost přístroje, která vyplývá z přístroje samotného (tedy z toho, k čemu je přístroj určen).

Inspektor přístroje nabízí veškeré parametry přístroje přehledně uspořádané do svislých záložek. Na začátku seznamu jsou shromážděny parametry, které určují zařazení přístroje do struktur aplikace, například vlastník (owner) nebo časovač (timer), a parametry, které ovlivňují vzájemné vztahy aplikace a přístroje, například access pro definici přístupových práv nebo send_same_data pro ovlivnění zápisů do kanálů. Tato skupina parametrů je společná pro všechny přístroje, a pro odlišení je v záložkách označena černým terčíkem před názvem parametru:

Záložka s terčíkem

Ostatní parametry jsou terčíkem neoznačené a jsou specifické pro každou třídu přístrojů. Tyto parametry ovlivňují pouze přístroj sám a již nepopisují žádnou vazbu aplikace na přístroj. Množství přístrojových parametrů je velmi proměnlivé, a pokud přístroj patří mezi ty bohatší, může být obtížné rychle se v něm zorientovat. Každý přístroj zpravidla nabízí své parametry v určitém logickém pořadí, tak jak je ve většině případů typicky používán. Inspektor přístroje však dokáže přístrojové parametry řadit také abecedně, takže potom stejné parametry různých přístrojů nabízí na stejných (abecedně) místech. Přepínání řazení parametrů je dostupné v menu inspektoru "Volby/Řadit klíčová slova".

Volba "Řadit klíčová slova" poněkud do bloku popisu parametrů nezapadá. Je to tím, že jsem se zatím o klíčových slovech nijak nezmínil. Vztah parametrů přístroje a zdrojového textu jeho zápisu je jednoduchý — každý parametr přístroje v inspektoru přesně odpovídá jednomu klíčovému slovu doplněnému příslušným popisem vlastnosti. Textový zápis přístroje je v inspektoru přeložen do grafické podoby, která je mnohem intuitivnější. Zřetelný je zde také dříve zmíněný rozdíl oproti textovému zápisu, který obsahuje jen parametry s hodnotami odlišnými od přednastavených, od souhrnu parametrů v inspektoru, které jsou zobrazeny vždy všechny.

Parametry popisují nejrůznější vlastnosti přístrojů. Inspektor by měl příslušnou vlastnost pokud možno srozumitelně graficky vyjádřit, a také by měl nabídnout pro každý konkrétní parametr vhodný editační nástroj. Základní typy parametrů — například dvoustavové parametry zapnuto/vypnuto, parametry s výběrem několika možností, textové parametry nebo pozice s velikostí — jsou intuitivní a inspektor pro jejich editaci nabízí jednoduché základní ovládací prvky uživatelského rozhraní. Současně bývá většina těchto ovládacích prvků naplněna dostupnými variantami (například parametr driver_exception nabízí výběr ze všech ovladačů v aplikaci) a zpravidla stačí jedním klikem zvolit ze seznamu tu požadovanou. Složitější parametry (přesněji specifičtější) inspektor upravuje vlastními nástroji. Postupně tyto jednotlivé vlastní nástroje popíši.

#### Editace parametrů

- owner — vlastník přístroje

Vlastník přístroje určuje jeho viditelnost a logické seskupení. Přístroj může být na pozadí, v panelu, nebo nemusí být vidět vůbec. Všechny tyto varianty jsou shrnuty to jednoho výběrového seznamu, ze kterého jen stačí příslušného vlastníka zvolit:

Editace vlastníka

Zkuste otevřít inspektora nad nějakým panelem, a všimněte si, že seznam nikdy neobsahuje panely, které jsou editovanému panelu podřízeny (seznam neobsahuje ani "sám sebe"). Nebylo by totiž možné takového vlastníka nastavit. První položka seznamu obsahuje vlastníka "<none>", kterého je třeba zvolit, pokud má být přístroj neviditelný (žádný vlastník = neviditelný).

- timer — časování přístroje

Ve speciálních kapitolách o časování je tento parameter rozpitván do nejmenšího detailu. Souhrně (a stručně) je možné říci, že existují tři varianty časování — prostou periodou (relativní časování), periodou s posunutím (absolutní časování) a časovačem. Tomu odpovídají editační prvky:

Editace časovače

"Časovač nebo časový krok" obsahuje buď periodu časování (kterou samozřejmě může být i číselná konstanta) nebo jméno časovače. Výběrový seznam obsahuje všechny dostupné možnosti a tak opět stačí pouze jednu z nich vybrat. Výběrový seznam hodnotu zapsanou do svého editačního řádku nijak neomezuje, periodu časování proto můžete zvolit zcela libovolně i když není přímo součástí seznamu. Seznam obsahuje dvě speciální položky — "<none>" a infinite, příčemž první znamená nečasovaný přístroj a druhá nejdelší možnou periodu časování (prakticky má taková hodnota význam například pokud potřebujete, aby byl přístroj při startu rozběhnut a dále již nebyl časován, více v kapitole Časování aplikace reálného času).

Druhý výběrový seznam "Offset" obsahuje všechny dostupné číselné konstanty, variantu infinite a "<none>". Tento seznam je povolen jen v případě, vyberete-li jako časovač čísenou hodnotu — periodu. Volbou "<none>" způsobíte, že bude přístroj časován prostou periodou (relativně), volbou jakékoli jiné hodnoty dosáhnete časování absolutní (časování periodou s posunutím).

- expression, condition, blink a všechny ostatní parametry obsahující výraz (podrobně kapitola Datové elementy a výrazy)

Logický, číselný nebo řetězcový výraz je naprosto základní způsob, jak něco vypočítat, převést, rozdělit nebo vyhodnotit. Výraz je složen z datových elementů (proměnných, konstant a kanálů), operátorů (+, -, not, = a funkcí (sin, trunc, bitset, concat. Zápis výrazu je vázán pravidly, která jsou popsaná v kapitole Datové elementy a výrazy, inspektor pouze umožňuje výraz jednodušeji sestavit. Každý výraz je zapsán jako textový řetězec, přičemž inspektor použití řetězce jako výrazu signalizuje malou ikonou "a+b" umístěnou na pravé straně editačního řádku s výrazem:

Editace výrazu

Do ikony se dá kliknout, čímž se otevře okno "Editor výrazů":

Editor výrazů

Na první pohled je okno editoru složité, ale brzy uvidíte, že je tomu právě naopak. Editační řádek "Výraz" obsahuje textový řetězec s výrazem (stejný jako byl přímo v editačním řádku v záložce inspektoru). Pod ním jsou v řadě naskládána malá tlačítka s nejčastěji používanými operátory a znaky; řada končí tlačítkem

Tlačítko číselné klávesnice

Kliknutí do tototo tlačítka otevře pod myší malou číselnou klávesnici, ze které lze do výrazu přidávat čísla. Kliknutí vedle plochy klávesnice ji automaticky uzavře.

Zbývající část okna editoru zabírá nápovědná plocha s tabulkou a stromem možných kategorií výrazu. Strom obsahuje všechny skupiny dat, funkcí a operátorů, ze kterých je možné výraz sestavovat. Kliknutí do stromu způsobí naplnění tabulky patřičnými daty. Tabulky pro proměnné, konstanty a kanály jsou identické s tabulkami v datových inspektorech, rozdíl spočívá pouze v nemožnosti úprav. Ostatní tabulky (odpovídající ostatním položkám stromu) potom obsahují vždy seznam možných elementů výrazu a jejich základní popis. Práce se stromem a tabulkami je jednoduchá — jakýkoli vybraný řádek tabulky (odpovídající jednomu prvku výrazu) se po stisku tlačítka "Vložit" vloží na pozici kurzoru do editačního řádku s výrazem. Akce můžete dle potřeby opakovat, čímž postupně sestavíte celý výraz.

Na pravé straně řádku s výrazem jsou dvě tlačítka:

Kontrola a zrušení výrazu

která umožňují jednak najednou smazat celý výraz (druhé tlačítko) a jednak zapsaný výraz zkontrolovat — zkusmo přeložit. Inspektor přístroje sice provádí v okamžiku použití kontrolu všech učiněných úprav, ale to již může ztížit orientaci a přehlednost — nemusíte si pamatovat, co všechno a jak jste postupně zapsali do čtrnácti různých výrazů různých částí přístroje. Kontrola výrazu dostupná přímo v editoru výrazů je mnohem lepší, neboť můžete okamžitě zkontrolovat právě ten výraz, který máte zrovna promyšlen.

Hotový výraz do inspektoru přístroje zapíšete potvrzením úprav pomocí tlačítka "OK".

V přístrojích bývá často součastí zápisu výrazu i přímý zápis vypočítaného výsledku do nějakého datového elementu. Lze zapsat například expression = a + b nebo c = a + b. V prvé situaci přístroj pracuje s výsledkem součtu hodnot elementů a a b (například jej zobrazuje), ve druhé situaci je navíc výsledek součtu ihned po výpočtu zapsán do datového elementu c. Inspektor přístroje takovou možnost signalizuje přítomností dalších ovládacích prvků v záložce parametru:

Editace výrazu s výstupem

Výběrový řádek "Výstupní datový element" může obsahovat jméno libovolného datového elementu, který je shodného datového typu jako počítaný výraz (požadovaný typ výrazu bývá obyčejně určen přístrojem — například přístroj meter vyžaduje číselné výrazy). Inspektor požadovaný typ rozezná a podle něj také nabízí ve výběrovém seznamu veškeré vhodné dostupné elementy. V případě, že je zvolený výstupní datový element pole, musí být součástí jeho zadání i index, který určí jeho patřičný prvek. Zadání indexu umožňuje editační řádek "Indexový výraz". Všimněte si, že indexový výraz je opět výrazem, takže za běhu aplikace můžete upravovat prvek pole, do kterého bude přístroj výsledek výrazu zapisovat.

- font — definice fontu

Druh a vzhled písma jsou obyčejně součástí nějakých složitejších struktur, nicméně vlastní zadání fontu je vždy stejné. K určení písma slouží následující kombinace ovládacích prvků:

Definice písma

Řádek "Specifikace fontu" obsahuje aktuálně definovaný font. Napravo od tohoto řádku je malé tlačítko

Tlačítko výběru fontu

které otevírá standardní dialogové okno pro výběr fontu. Za zmínku stojí pouze malý (dvouřádkový) seznam s kódovou stránkou v pravé dolní části okna:

Výběr kódové stránky

Pokud pracujete v anglickém operačním systému (například verze US či PanEuro), nabízí se v tomto ovládacím prvku kódová stránka "Western". Pokud potřebujete (pravděpodobně ano) psát nápisy s českými znaky, je třeba v tomto seznamu vybrat kódovou stránku "Central European". V českých mutacích operačního systému se standardně nabízí stránka správná — "středoevropská".

Další ovládací prvky určují, jak bude font na obrazovce velký. Operační systém vnitřně pracuje s rozlišením obrazovky, které je možné takřka libovolně nastavit. Běžně se vyskytují rozlišení 96DPI (DPI = dots per inch = počet bodů na palec) odpovídající "malým" fontům a rozlišení 120DPI odpovídající "velkým" fontům. Může se přihodit, že vaši aplikaci vyvinete pro rozlišení 96DPI a zákazník najednou bude potřebovat rozlišení 120DPI. To okamžitě znamená, že vaše pracně rozmístěné popisky a přesně rozvrhnuté velikosti přístrojů přestanou dokonale vyhovovat a všechny texty přetečou svou původně zamýšlenou plochu. Definice pevného rozlišení písma tento problém odstraňuje. Můžete zvolit libovolné vlastní rozlišení, dvě popsaná základní systém nabízí okamžitě. Všimněte si, že Control Web při zapnutí pevného rozlišení přepočítá velikost písma (je uvedena v řádku "Specifikace fontu") tak, aby zůstala zachována jeho absolutní velikost (velikost v obrazových bodech).

Ilustrační obrázek DPI fontů

- receivers — definice příjemců zpráv přístroje

Každý přístroj může poslat zprávu jinému přístroji. Popis mechanizmu zpráv je popsán v kapitolách Neperiodické časování a Časování aplikace reálného času, v souhrnu Control Web používá pro zápis příjemce zprávy dvou způsobů. Přístroje, které slouží k reakci na uživatelské zásahy (například tlačítka), zpravidla definují parametr receivers, přístroj program a veškeré procedury používají příkazu send. Parametr receivers obsahuje v inspektoru přístroje tuto záložku:

Záložka "receivers"

První editační řádek slouží k vepsání jména přístroje, který se má stát příjemcem zprávy. Je možné do něj zapsat i dosud neexistující přístroj. Výběrový seznam "Třídy přístrojů" a seznam "Jména přístrojů" navíc obsahují všechna v aplikaci existující jména přístrojů, není tedy nutné, abyste si celou aplikaci pamatovali. Ať již přístroj vyhledáte v popsaných seznamech, nebo zapíšete jeho jméno do editačního řádku, vždy je nutné jej (stejným mechanizmem) zařadit do seznamu příjemců zpráv ("Seznam receiverů"). K tomu slouží skupina tlačítek:

Tlačítka záložky "receivers"

Význam tlačítek po řadě je: přidat na konec seznamu, vložit na vybranou pozici, odstranit vybranou položku a smazat celý seznam. Do seznamu příjemců zpráv je také možné rychle zařadit přístroj dvojkliknutím do seznamu "Jména přístrojů".

- sekce a seznamy

Některé přístroje mají své parametry rozdělené do logických skupin, které se v inspektoru přístroje schovají do jedné hlavní svislé záložky. Takové logické skupiny se jmenují sekce. Jiné přístroje mohou mít ve svém zápisu uvedeny některé parametry vícekrát, tak, že přístroj opakování parametrů využívá ke konstrukci nějakého seznamu (například seznamu položek menu v přístroji multi_switch). Takový seznam bývá v inspektoru také skryt do jedné hlavní svislé záložky.

Otevření takové záložky způsobí, že sekce (nebo položky seznamu) vytvoří druhý (vnitřní) sloupec záložek nižší logické úrovně:

Záložky v sekci

Vnitřní záložky se ovládají stejně jako záložky hlavní a mohou obsahovat (stejně jako záložky hlavní) parametry nejrůznějších druhů.

Seznam opakovatelných položek přístroje je sekci velmi podobný a liší se navíc jen lištou pro ovládání pohybu v seznamu (i když faktický rozdíl seznamu a sekce je dosti značný):

Seznam v sekci

Poslední tři tlačítka již byla popsána u parametru receivers (jedná se o přidání položky na konec seznamu, vložení položky na aktuální pozici a smazání aktuální položky), první čtyři tlačítka jsou novinkou. Jsou určena k pohybu po seznamu — tlačítka postupně znamenají skok na začátek seznamu, přechod na předchozí položku, přechod na následující položku a skok na konec seznamu. Záložky se při ovládáním seznamu nemění, každý prvek seznamu má stejné parametry jako jiný prvek seznamu. Co se mění, jsou data — obsah jednotlivých editačních prvků v záložkách. Aktuální počet prvků seznamu a aktuální pozice jsou znázorněny pomocí dvojice čísel vpravo:

Velikost a pozice v seznamu

První číslo ukazuje pozici v seznamu, druhé číslo za lomítkem počet prvků seznamu. Vyzkoušejte nějaký seznam (najdete ho například v parametru item přístroje multi_switch) rozšiřovat či zmenšovat a uvidíte, jak se budou indikátory pozice při úpravách a pohybech v seznamu měnit.

Při popisu parametrů s výrazem a při popisu parametru font jsme narazili na malá tlačítka umístěná vpravo od příslušného editačního řádku. Podobných malých tlačítek se vyskytuje v inspektoru ještě několik (například pro otevření dialogového okna výběru souboru, adresáře nebo ikony):

Editační řádek pro výběr ikony

a vždy tato tlačítka znamenají jediné — otevření pomocného okna pro jednodušší definici patřičného parametru.

Poslední důležitý ovládací prvek dostupný v záložce "Parametry" je tlačítko v nástrojové liště:

Tlačítko okna přístroje

které ovládá (obaluje) přístroj oknem. Tlačítko svým stavem signalizuje, jesti přístroj okno zrovna má, či ne — tlačítko je stisknuté, je-li přístroj v okně a naopak. Další možnosti vytvoření a zrušení okna kolem přístroje byly popsány v oddíle Okno přístroje.

### Záložka "Lokální data"

Každý přístroj může mít svoje lokální konstanty a proměnné (statické i inicializované). Podrobné informace o vlastnostech a užití takových dat můžete najít v kapitolách Datové elementy a výrazy a Programování a procedury. Hlavním účelem existence takových elementů je jejich skrytí před okolím, před jinými přístroji. Všechny přístroje tak mohou pracovat se svými nezávislými daty — například bez rizika nechtěného přepisu hodnoty proměnné jiným přístrojem.

Tři uvedené kategorie dat jsou shromážděny ve svislé lístkovnici:

Záložky lokálních dat

přičemž výběr záložky zobrazí příslušný editor dat. Editory dat jsou identické s tabulkami a stromy užitými v záložkách datových inspektorů, včetně ovládání pomocí stromů. Pro lokální konstanty platí stejná pravidla jako pro konstanty globální, lokální proměnné nemusejí být při začátku časového kroku (o časovém kroku viz kapitola Časování aplikace reálného času) přístroje inicializovány — takové proměnné jsou statické a uchovávají si svou hodnotu bez ohledu na stav přístroje. Obyčejné proměnné ("variable") jsou naopak vždy při novém časovém kroku naplněny svou inicializační hodnotou.

### Záložka "Procedury"

Procedury činí ze systému Control Web extrémně mocný a přizpůsobivý nástroj. Jejich použití dokáže ohromně zjednodušit programování aplikace. V kapitole věnované procedurám Programování a procedury jsou vysvětleny veškeré vlastnosti a taje jejich použití, včetně detailniho popisu jejich kódu. Inspektor přístroje poskytuje v záložce "Procedury" rámec pro snadné přehlédnutí a editaci procedur událostních a uživatelských.

Svislé záložky na pravé straně obsahují seznam všech dostupných procedur přístroje, přičemž jako první jsou do seznamu zařazeny událostní procedury systémové, jako další událostní procedury přístroje a jako poslední procedury uživatelské seřazené tak, jak jsou zapsány ve zdrojovém textu přístroje. Poslední záložka "<nová procedura>" umožňuje rychlé vytvoření nové uživatelské procedury. Událostní procedury jsou od uživatelských rozlišeny barvou ikony lístku záložky:

Záložky událostních a uživatelských procedur

Vyberete-li některou ze záložek pojmenovaných procedur, objeví se v textovém editoru uvnitř záložky zápis příslušné procedury. Je-li již procedura v přístroji zavedena, objeví se samozřejmě její aktuální obsah, nebyla-li dosud procedura použita, objeví se procedura prázdná — pouze hlavička procedury s parametry a prázdné tělo. Takovou proceduru je možné okamžitě upravovat.

Naopak, vyberete-li záložku "<nová procedura>", neví Control Web, co by do textového editoru zobrazil — procedura dosud nemá ani jméno ani parametry. Proto se automaticky otevře okno pro prvotní zadání hlavičky procedury:

Definice hlavičky procedury

Obsahem okna je kromě editačního řádku pro jméno procedury tabulka pro zápis jejích parametrů. Tabulka má dva sloupce, neboť každý parametr musí mít své jméno a svůj datový typ. Obojí můžete definovat libovolně a podle potřeby tak můžete vytvořit libovolné procedury (i bez parametrů). Zadání jména a parametrů procedury ukončíte tlačítkem "OK", a nově zadaná prázdná procedura se objeví v editoru, kde ji můžete dále upravovat.

Popsaný sled kroků je možné libovolně opakovat, každý přístroj může mít neomezený počet uživatelských procedur. Jedinou podmínkou je, aby se v jednom přístroji nevyskytovaly dvě procedury se shodným jménem i parametery.

Textový editor pro zápis procedury podporuje přetahování procedur. Pokud v paletě přístrojů myší uchopíte proceduru (je jedno jestli nativní nebo událostní), přetáhnete ji nad plochu editoru v inspektoru a tlačítko myši pustíte, vloží se na místo pod kurzor myši hlavička vybrané procedury včetně jejích parametrů. Programování v OCL nemusí spočívat jen v opisování hlaviček procedur.

### Záložka "Barvy"

Barvy přístroje jsou v jeho zdrojovém textu součástí sekce colors. Možný obsah této sekce je nabízen v inspektoru přístroje v samostatné záložce:

Záložka "Barvy"

Levá část okna ("Příklad") ukazuje současný vzhled přístroje, obarvený právě zvolenými barvami. Jestliže upravíte jakoukoli barvu, uvidíte okamžitě na příkladu výsledek. Seznam barev, které přístroj nabízí (které mu můžete změnit), obsahuje pravá část okna "Výběr barvy". Vlastní změny barvy dosáhnete kliknutím do palety barev umístěné pod seznamem.

Výběr barvy

Můžete nastavit jakoukoli barvu, neboť spodní řádek se šestnácti barvami je pomocí tlačítka "Def" libovolně upravitelný. Všimněte si, že některé přístroje (například indicator) mají seznam s barvami zdvojený a kromě sady barev "Normální" nabízejí také sadu "Alternativní", přičemž sady barev mohou být navzájem naprosto odlišné. Přístroje, které mají alternativní barvy, dokáží blikat (více popis obecných parametrů přístrojů v kapitole Přehled virtuálních přístrojů). Blikání systém Control Web řeší prohozením normální a alternativní sady barev. Podle toho, jaké alternativní barvy zvolíte, může přístroj například blikat úplně celý, nebo například jen horním stínem.

### Záložka "Zdrojový text"

Všechny doposud popsané vlastnosti inspektoru a úpravy dat přístroje vyplývají z použití v grafickém režimu práce. Veškeré parametry a úpravy jsou dostupné graficky. Občas je užitečné podívat se souhrně na všechna data najednou. Záložka "Zdrojový text" nabízí parametry (i s barvami), lokální data i procedury editovaného přístroje v textovém editoru, ve kterém lze zcela libovolně kteroukoli část přístroje upravit. Textový editor v inspektoru obsahuje část celé aplikace odpovídající zápisu pouze jednoho přístroje. Pro zápis textu v textovém editoru inspektoru platí stejná pravidla jako pro zápis normálního zdrojového textu aplikace, takže například vždy uvidíte jen parametry, které mají hodnotu odlišnou od přednastavené.

Záložka s textem přístroje a ostatní záložky jsou navzájem (stejně jako textová a binární podoba aplikace) zástupné. Všechny úpravy provedené ve zdrojovém textu přístroje se při přechodu do záložky parametrů automaticky promítnou do jednotlivých grafických ovládacích prvků, shodně naopak úprava parametru nebo barvy přístroje je při přepnutí do záložky s textem promítnuta do textového zápisu. Všechny přechody mezi záložkami se týkají pouze jednoho přístroje přítomného v inspektoru. Stále při všech operacích také platí, že inspektor pracuje se svými daty a dokud úpravy parametrů (nebo textu) nepoužijete, neprojeví se ve vlastním editovaném přístroji.

Podobně jako editor v záložce s procedurami podporuje i editor záložky "Zdrojový text" přetahování procedur.

### Záložka "Nápověda"

Poslední záložka v inspektoru neupravuje žádná data a slouží pouze ke zrychlení orientace a zvýšení komfortu práce. Bez nutnosti opuštění inspektoru můžete okamžitě nahlédnout do konkrétního popisu přístroje (každý popis přístroje obsahuje detailní objasnění významu všech parametrů).

Inspektor nabízí dva pohledy na dokumentaci přístroje — pohled na parametry a pohled na procedury. První přepnutí do nápovědy zobrazí popis parametrů, popis procedur (a zpětně samozřejmě i popis parametrů) se zobrazí pomocí tlačítek v nástrojové liště:

Nástroje dokumentace

První tlačítko zobrazuje parametry a druhé procedury editovaného přístroje.

### Editace přednastavených hodnot

Při popisu palety přístrojů se nepodařilo vyhnout dopřednému odkazu na inspektor přístroje, i když ještě inspektor nebyl popsán. Plocha s ikonami tříd přístrojů v paletě přístrojů otevírá po kliku pravým tlačítkem myši inspektora nad všemi přístroji dané třídy a poskytuje možnost přednastavit jakýkoli parametr přístroje. Inspektor se v takovém případě ovládá zcela identicky a nabízí také skoro všechny možnosti úprav jako inspektor otevřený nad jedním přístrojem.

Inspektor v paletě můžete otevřít kdykoli, tedy například i ve chvíli, kdy je vývojové prostředí přepnuto do textového režimu. Tehdy například vývojovému prostředí chybějí informace o adresářích (součást sekce directories), a inspektor proto nemůže nabídnout správné cesty k ikonám nebo jiným datovým souborům. Stejně tak je nutné mít na paměti, že některé parametry přístroje (typicky časovač, vlastník nebo výrazy) nemusí odpovídat aktuálně vytvářené aplikaci. Příklad — v jedné aplikaci přednastavíte vlastníka přístroje panelPozadí a při přechodu do aplikace druhé panel takového jména nebude existovat. Výsledkem bude kolize, která způsobí, že přednastavené parametry jako celek nebudou použity. Vývojové prostředí nemá prostředky (a ani je nemůže mít — to je dáno nezávislostí přístrojů jako komponent) na rozeznání problému při překladu přístroje a musí proto všechny přednastavené parametry odmítnout.

Pokud tedy někdy narazíte na situaci, kdy vytahujete z palety grafy a najednou se při změně aplikace místo grafu objeví "ručička" (to je počáteční mód práce přístroje meter), je nejspíše některý z přednastavených parametrů přístroje nevhodný — neodpovídající vyvíjené aplikaci. Doporučení jak se vyhnout těmto překvapením je jednoduché — používáte-li přednastavené parametry, upravuje pouze specifické parametry přístrojů, vyhněte se parametrům systémovým a výrazům obsahujícím datové elementy.

## Tipy a triky

Některé vlastnosti vývojového prostředí jsou nezařaditelné do posaných kapitol, některé zase spíše ovlivňují místo vlastní práce s aplikaci chování prostředí k uživateli. Několik takových vlastností obsahují následující body:

- Hlavní záložky vývojového prostředí můžete přemístit nad plochu textového nebo grafického editoru. Patřičná volba je dostupná v okně nastavení v záložce "Systém" jako "Umístit řádek se záložkami nad pracovní plochu".
- Podobná je další volba — stromy s přístroji mohou být na pravé straně. Stačí v okně nastavení v záložce "Systém" zvolit "Umístit stromy přístrojů napravo od vizuálního editoru".
- Vývojové prostředí umí automaticky ve zvoleném intervalu aplikaci ukládat na disk. V okně nastavení v záložce "Soubory" zvolte "Ukládat automaticky aktivní soubor každých" a patřičnou periodu.
- Stromy s přístroji a vizuální editor označují při výběru přístroje ve své ploše přístroje v jiných plochách — výběr ve vizuálním editoru přístroj nastaví i ve stromech viditelnosti a časování. Vzájemné označování je konfigurovatelné a podle potřeby můžete některou z variant vypnout. Nastavení označování najdete v záložce "Vizuální editor" sekce "Při označení přístroje ve vizuálním editoru" a v záložce "Stromy přístrojů" v sekcích "Při označení přístroje ve stromu viditelnost/časování"
- Okno palety s přístroji a okno inspektoru přístroje se standardně otevírá nad všemi ostatními okny. Tuto volbu je možné potlačit v menu okna, které otevřete kliknutím do ikony okna v jeho levém horním rohu. Například v inspektoru přístroje se otevře menu:

Menu okna inspektoru přístroje

Zrušení volby "Zůstat na povrchu" způsobí normální chování okna inspektoru — inspektor nebude neustále nahoře nad všemi ostatními okny.

Stejnou volbou můžete ovlivňovat také okno "Zarovnání".

## Vždy a všude — textový editor

Jedna z prvních částí této kapitoly vysvětlovala, že aplikace systému Control Web může dobře existovat jak v binární podobě, která je vlastní grafickému editoru, tak v podobě textové. V grafickém editoru sloužila pro úpravy aplikací celá řada nástrojů, pro úpravu textu stačí nástroj jeden — vestavěný textový editor.

Textový editor systému Control Web pracuje s libovolnými textovými soubory, tedy nejen se soubory aplikací (soubory s maskou '*.cw'). Editor má rozšíření, která jsou šita na míru systému Control Web, nicméně jeho základní funkčnost je zcela obecná a umožňuje úpravy jakéhokoli textu. Základní principy ovládání dodržují konvence editorů grafického uživatelského rozhraní operačních systémů Windows, takže pokud jste již někdy ve Windows psali nějaký text, nebudete mít žádné potíže ani s editorem systému Control Web.

Editor je textový, určený pro zápis aplikací, je editorem pro programátory. Není proto vybaven žádnými formátovacími funkcemi. Dokonale poslouží při vývoji průmyslového systému, nicméně knihy je lépe psát v editorech jiných.

### Rozšířené možnosti editace

Na první pohled si asi všimnete prvního rozšíření editoru, které usnadňuje orientaci ve zdrojovém textu. Klíčová slova jsou barevně označena, podobně jako řetězce znaků, čísla a komentáře. Barvy těchto elementů textu můžete libovolně upravit a nastavit, stačí pomocí menu "Nástroje/Nastavení..." otevřít okno s nastavením a v záložce "Textový editor" provést příslušné změny:

Nastavení textového editoru

V levém seznamu barev jsou všechny samostatně obarvitelné kategorie, pravá část obsahuje ukázku aktuálně zvolených barev. Barvu změníte jednoduše — buď dvojklikem na příslušný řádek seznamu nebo klikem do plochy s barvou pod seznamem. Klíčová slova jsou rozdělena do tří kategorií, přičemž standardně jsou všechny tři obarveny světle modrou barvou. Pokud si přejete změnit barvu všech klíčových slov, musíte barvu nastavit samostatně pro každou kategorii zvlášť. Nastavit je možné také písmo v editoru, ale to již nechám zcela na vašem uvážení.

Nesmírně užitečnou vlastností textového editoru je podpora zásobníku změn textu, který umožňuje zrušit (nebo se k ní zpětně vrátit) poslední (nejen poslední, ale i řadu předchozích) editační úpravu. Napíšete-li chybný příkaz, přepíšete-li omylem část složité podmínky, vždy máte možnost se vrátit a změn se vzdát. Základní ovládání těchto funkcí nabízí lišta s nástroji:

Odvolání a obnovení úprav textu

Stejně dobře je však možné použít kombinace kláves <Ctrl>+<Z> pro odvolání úprav (příkaz menu "Editace/Odvolat") nebo kombinace <Ctrl>+<Y> pro obnovení zrušených úprav (příkaz menu "Editace/Znovu"). Doporučuji vyzkoušet, neboť tuto funkci budete asi velmi často používat (pokud budete pracovat v textovém editoru). S přibývající délkou aplikace se orientace v textu komplikuje. Textový editor samozřejmě nabízí vyhledávání, které je základním nástrojem pro rychlý pohyb v textu. Editor systému Control Web navíc dokáže do textu umístit libovolný počet značek, po kterých se posléze můžete v textu jedním stiskem klávesy pohybovat. Značka v textu je znázorněna jako podtržení řádku:

Značka v textu

Po instalaci systému Control Web je barva značek světle modrá, ale stejně jako ostatní barvy v editoru je možné ji změnit. Značka se do textu vkládá na řádek obsahují textový kurzor pomocí kombinace kláves <Ctrl>+<F2>, stejnou kombinací se značka na vybraném řádku (je-li již definována) zruší. Pohyb po značkách je možný jednak vpřed (směrem ke konci textu) stiskem klávesy <F2> a jednak "vzad" (směrem k začátku textu) stiskem kombinace kláves <Shift>+<F2>. Vyzkoušejte si to.

Předposlední rozšíření editoru umožňuje odsouvat (doprava) nebo přisouvat (doleva) textové bloky. Vlastnost využijete nejspíše při psaní procedur, neboť strukturovaný zápis příkazů přímo nabádá k odsazování textu — a tím pádem se občas vyskytne nutnost několik řádků posunout tam či zpět. Ovládání je velmi snadné — označený blok posunete doprava klávesou <Tab> a naopak doleva kombinací kláves <Shift>+<Tab>. Posouvání lze ovládat také z lišty s nástroji:

Odsazování bloků

Textový editor reaguje na přetahování procedur z palety přístrojů. Podobně jako během editace přístroje v jeho inspektoru proto můžete myší přesouvat celé názvy procedur přímo do textu a nemusíte se zdržovat jejich opisováním.

### Chyby překladu a ovládání překladu po částech

V kapitolách o překladu jsme několikrát narazili na pojem "chyba překladu", která se objeví vždy, když Control Web není schopen porozumět zápisu textu aplikace (například když za operátorem + (součet) chybí druhý operand). Všechny chyby jsou oznámeny překladačem v následujícím okně:

Chybové okno

Současně textový editor podtrhne (standardně červenou barvou) řádek, který chybu obsahuje, a také nastaví tento řádek do viditelné části editoru. Některé chyby informaci o řádku nemusejí mít a tehdy zůstane chyba v textu neoznačena. Jakmile okno s popisem chyby uzavřete, červené podtržení řádku se odstraní a na místo chyby v textu (pokud je místo známo) se nastaví textový kurzor.

Nalezená chyba také způsobí (pokud již plocha není vidět) otevření plochy s informacemi o překladu. Plocha zaznamenává všechna varování a upozornění, která systém během překladu vytváří, a také všechny chyby, které během překladu postupně nastaly. Každá chyba překladu nebo upozornění je zapsána jako jeden řádek.

Plocha informací o překladu

Vzájemný poměr ploch textového editoru a informací o překladu je nastavitelný lištou (podobně jako v paletě přístrojů nebo v grafickém editoru), přičemž dvojklik levým tlačítkem myši, případně dvojklik do titulku informací o překladu, způsobí zavření plochy. Lišta oddělující textový editor a informace o překladu zůstává vždy pod spodním okrajem textového editoru a proto si pomocí ní můžete informace o překladu kdykoli zobrazit.

Jednotlivé záznamy upozornění nebo chyb v ploše informací o překladu obsahují informaci o místě, kde chyba nebo upozornění vzniklo (číslo řádku je viditelné v závorkách). Zkuste levým tlačítkem dvojkliknout na některý z řádků, který informaci o chybě obsahuje a uvidíte, že Control Web vybraný řádek podtrhne a současně nastaví textový editor na místo, které vybranému řádku odpovídá. Stejného výsledku dosáhnete také pomocí kláves <F4> a kombinace kláves <Shift>+<F4>, přičemž varianta bez klávesy <Shift> postupuje seznamem chyb shora dolů a varianta druhá zdola nahoru.

Důležitou vlastností vývojového prostředí je možnost překládat zdrojový text po částech. Teoreticky se inkrementálním překladem zabývala jeden z počátečních oddílů, nyní je na místě ukázat, jak se překlad po částech řídí. Control Web při nalezení chyby překladu otevře chybové okno, podtrhne řádek s chybou a zapíše chybu do informací o překladu. Současně také označí text, který je již přeložen, a který se při pokračování překladu bude ignorovat. Přeložený text je označen šedou barvou textu (také je možné ji změnit):

Hranice přeloženého a nepřeloženého textu

Šedý text je přeložen, a tudíž jakýkoli editační zásah, který provedete v šedé oblasti, musí vynutit opětovné (nové) přeložení upraveného místa. Control Web text po takovém zásahu odbarví a opětovně obarví jako normální text. Překlad po takové úpravě proběhne vždy od začátku zdrojového textu.

Překlad po částech musí poskytnout (navíc k úplnému překladu celého textu) dvě operace: pokračování překladu od místa chyby a zrušení překladu. Obě operace jsou dostupné ze dvou míst — jedna ze záhlaví plochy s informacemi:

Řízení překladu po částech ze záhlaví informací o překladu

a jednak z hlavní lišty s nástroji:

Řízení překladu po částech

Význam tlačítek v liště s nástroji odpovídá tlačítkům v záhlaví informací o překladu, nicméně pro pořádek — tlačítka v liště postupně znamenají pokračování překladu a ukončení překladu. Tlačítka v záhlaví i liště s nástroji jsou povolena jen v případě, že probíhá překlad po částech. Jinak řečeno, jejich povolením Control Web signalizuje, že je možné překládat po čátech.

Celý mechanizmus inkrementálního překladu je v souhrnu následující:

1. spuštení nějaké varianty překladu
2. nalezení chyby v textu
3. oprava chyby v textu
4. pokračování v překladu/zrušení překladu
5. dokončení překladu

Operace první může být spuštění aplikace, překlopení nebo jednoduchý překlad. Objeví-li překladač chybu, nabídne její Control Web její opravení a následné pokračování v překladu. Tyto operace (výskyt chyby a oprava) je možné opakovat až do úspěšného nebo nuceného ukončení překladu.

Klávesová zkratka pro jednoduchý překlad (buď <Alt>+<C> nebo <F7>) při prvním stisku (neběží-li dosud žádný překlad) skutečně spustí jednoduchý překlad, ale po nalezení první chyby, tedy během překladu po částech pracuje jako pokračování překladu. Jedna kombinace kláves tedy zaručuje automatické provedení očekávaných operací podle momentálního stavu vývojového prostředí.

### Komentáře ve zdrojovém textu

Systém Control Web dokáže při překladech určitou část textu ignorovat, vypustit. Takové bloky — komentáře — mohou obsahovat libovolnou informaci, přičemž překladač ji nijak netestuje ani do ní nezasahuje. Komentáře jsou v principu pouze součástí zdrojového textu a překlopení do grafického editoru a zpět obyčejně nepřežijí — proč tomu tak již bylo psáno v oddíle Generování).

Do textu se komentáře zapisují pomocí kombinací znaků (* (začátek komentáře) a *) (konec komentáře). Textový editor komentáře standardně barví zelenou barvou (tu samozřejmě můžete změnit):

Komentář v textu

Komentáře mohou být ve zdrojovém textu kdekoli, ale pouze ty z nich, které jsou součástí zápisu těla nějaké procedury zůstanou na svém místě i po překlopení a novém generování. Proto lze doporučit — komentáře mimo procedury neumisťujte. Poznámku (tedy již ne komentář, ale zvláštní parametr) můžete zadat ke každému datovému elementu nebo k přístroji, a tak téměř zcela kompenzovat nemožnost zápisu komentáře kdekoli v textu.

### Ostatní textové editory

Zejména při popisu inspektoru přístroje se to v jednotlivých záložkách textovými editory jen hemžilo. Všechny takové editory (i jiné editory kdekoli v rozšiřujících aplikacích a nástrojích sytému Control Web pracují identicky jako hlavní textový editor — popsané vlastnosti (kromě překladu po částech a barvení klíčových slov) jsou dostupné kdekoli stejným způsobem. To, co jste se dozvědeli v této kapitole, platí v systému Control Web obecně.

## Záložky "Moduly" a "Dokumentace"

Poslední dvě dosud nezmíněné záložky dotvářejí vývojové prostředí. Záložka "Moduly" slouží k prohlížení vícemodulárních aplikací, tedy aplikací, které sestávají z více jak jednoho modulu — aplikačního souboru. V principu je možné sestavit vícemodulární aplikaci, která pracuje celá na jednom počítači (všechny moduly jsou lokální), nebo aplikaci, která běží na několika počítačích současně (různé moduly pracují na různých počítačích). Obě dvě základní varianty ještě mají mnoho dalších specifikací a možností. Celou (dosti rozsáhlou) problematiku vícemodulárních aplikací diskutuje samostatná kapitola Modulární a distribuované aplikace, která také podrobně vysvětluje, jak a na co se záložka "Moduly" používá. Pokud budete pracovat (což bude ve většině případů) na vývoji jednomodulární aplikace, můžete po přepnutí do modulů uvidět podobný obrázek:

Prázdná záložka modulů

Záložka obsahuje jeden modul — uprostřed. Při překlápění je záložka "Moduly" posuzována stejně jako textový editor, takže při přechodech z/do záložek grafického editoru dochází k překlápění stejně jako při překlápění z/do textového editoru.

Záložka "Dokumentace" obsahuje kompletní dokumentaci systému Control Web. Její plocha je rozdělena na dvě části — strom s obsahem a plochu s dokumentem. Strom nabízí veškeré kapitoly hierarchicky sestavené podle vzájemných vazeb.

Dokumentace

Kliknutí na některý z řádků stromu způsobí naplnění plochy s dokumentem. Dokument a strom s obsahem jsou navzájem provázány, takže přechod na jinou kapitolu dokumentace uvnitř plochy s dokumentem automaticky vybere odpovídající řádek ve stromu. Při instalaci máte možnost buď dokumentaci ponechat na instalačním CD-ROM, nebo ji zkopírovat na místo instalace. Pokud vyberete první variantu, budete muset při každém použití dokumentace vložit do CD-ROM mechaniky instalační CD-ROM, jinak nebude dokumentace k dispozici a plochy záložky zůstanou nenaplněné.

Dokumentace je zabudovanou součástí vývojového prostředí, stejný popis parametrů přístroje můžete vidět jak v záložce "Nápověda" inspektoru přístroje, tak i přímo v dokumentaci jako její součást. Záložka s dokumentací pouze veškeré dostupné texty manuálů shrnuje na jedno místo.

Při instalaci komponent (například ovladačů) vždy do systému přibývá nová dokumentace. V záložce "Dokumentace" (přesněji v jejím stromu s obsahem) se po úspěšné instalaci každá taková nová dokumentace zařadí jako nový samostaný kořen (kniha). Všechny nainstalované komponenty tedy budou mít svou dokumentaci stále na jednom místě — v této záložce.

## Shrnutí

- Aplikace systému Control Web existuje ve dvou podobách — textové a grafické; tomu odpovídají dva režimy práce — v textovém a grafickém editoru. Control Web proto podporuje dvojcestné programování.
- Zdrojová podoba aplikace je textová. Při převodu do grafické podoby je nutné aplikaci přeložit, opačný přechod se nazývá generování. Překlad je v systému Control Web značně urychlen podporou překladu po částech.
- Dvě základní skupiny objektů (data a kód) aplikace se upravují v datových inspektorech a grafickém editoru. Grafický editor nabízí širokou škálu nástrojů a umožnuje se na aplikaci dívat z různých pohledů.
- Kompletní nabídka přístrojů (funkčních elementů aplikace) je dostupná v paletě přístrojů, samostatném okně otevíraném z vývojového prostředí.
- Všechny přístroje v aplikaci se upravují jedním způsobem — pomocí inspektoru přístroje. Inspektor dokáže přístroji změnit jakýkoli parametr a podobně jako celý grafický editor nabízí na přístroj různé pohledy. Pro úpravu jednotlivých parametrů inspektor obsahuje celou řadu vlastních grafických nástrojů.
- Vývoj aplikace v textovém režimu probíhá ve vestavěném textovém editoru, který pro aplikace systému Control Web definuje řadu specifických rozšíření.
- Ovládání vývojového prostředí je vždy možné prostřednictvím menu, některé příkazy jsou zařazeny do nástrojové lišty, grafický editor otevírá nad svými objekty kontextové menu. Většina příkazů je dostupná pomocí horkých kláves.
- Vývojové prostředí je pomocí přehledných nastavení v široké míře přizpůsobitelné.