
%  Dokumentace k~programu MNU v~PlainTeXu.
%  (v �e�tin�, v~k�du Kamenick�ch)
%  ==========================================
%  31.1.93                         Petr Ol��k

\hsize=159.2mm
\vsize=239.2mm
\raggedbottom

\font\titl=csbx10 scaled \magstep2
\font\bigtitl=csbx10 scaled \magstep4

\def\CS{$\cal C\kern-.1667em\lower.5ex\hbox{$\cal S$}\kern-.075em $}
\def\LaTeX{L\kern-.36em\raise.5ex\hbox{\sevenrm A}\kern-.12em\TeX}

%  je mo�n� �esk� d�len� slov ? :
\expandafter\ifx\csname chyph\endcsname\relax \frenchspacing\else\chyph\fi
\hyphenation{menu sub-sti-tu-c�}

\def\sect #1\par{\vskip30pt\goodbreak\line{\titl #1\hfil}\nobreak\bigskip}

\def\subsect #1\par{\ifdim\lastskip=\bigskipamount \else\vskip 20pt\medbreak\fi
  \line{\bf #1\hfil}\nobreak\medskip}

\catcode`\"=13
\def"{\hbox\bgroup\let"=\egroup\setverb\tt}
\def\setverb{\def\do##1{\catcode`##1=12}\dospecials\obeyspaces}
\def\dd{{\tt\char34}}

\catcode`\<=13
\def<#1>{\leavevmode\hbox{\rm\it\lowercase{#1}\/}}

\def \uv#1{\vbox to0pt{\kern-.33ex\hbox{''}\vss}\kern-.1ex#1\kern-.1ex``}

\def\begitems{\medskip\bgroup\catcode`\*=13 \narrower\narrower}
\def\enditems{\par\egroup\medskip}
{\catcode`\*=13 \gdef*{\par\noindent\llap{$\bullet$\ }\ignorespaces}}

\def\quest{\medskip\indent\hangindent\parindent
  \llap{\frame{\bf ?}\kern8pt}\ignorespaces}
\def\answ{\medskip\indent\hangindent\parindent
  \llap{\frame{\bf !}\kern8pt}\ignorespaces}
\def\frame#1{\lower4pt\vbox{\hrule
   \hbox to14pt{\vrule height10pt depth4pt\hfil #1\hfil\vrule}\hrule}}

\def\bull{\medskip\indent \llap{$\bullet$\ }}
\def\toa{$\to$}
\def\m{\hskip1em\relax}

\def\begtt{\par\medskip\bgroup\def\par{\endgraf\penalty1000}\setverb
   \catcode`\"=12\obeylines\startverb}
{\catcode`|=0 \catcode`\\=12 |gdef|startverb#1\endtt{|tt #1|egroup|medskip}}
{\obeyspaces\gdef {\ }}

% u�it�: \begtab{���e}, kde ���e je ���ka parboxu jedn� z~prav�ch kolonek
\def\begtab#1{\medskip\line\bgroup\hfil  
  \vbox\bgroup\offinterlineskip
  \def\title{\vrule height15pt depth8.5pt width0pt\cr
    \noalign{\hrule} \vrule height15pt width0pt}
  \def\:{\hfill &&}
  \hrule\halign\bgroup\vrule##
    &\vrule height12pt width0pt\hfil\quad##\quad\hfil&&\vrule##
    &\quad\hbox to #1{\vtop{\hsize=#1\noindent\strut##\unskip\strut}}\quad\cr
    \vrule height15pt width0pt\relax}
\def\endtab{\vrule depth9pt width0pt&\cr
  \egroup\hrule\egroup\hfil\egroup\medskip}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% zde kon�� makra

%%%%%%%%%%%%%%% Tituln� str�nka %%%%%%%%%%%%

{\nopagenumbers
\pageno=0
\null\vfil
\centerline{\bigtitl Program MNU}
\vskip .5in
\centerline{\titl Konfigurovateln� menu pro spou�t�n� aplikac� pod DOSem}
\vfil
\medskip
\centerline{\vbox{\halign{\bf #\hfil &\quad #\hfil\cr
autor:  & Petr Ol��k \cr
        & katedra matematiky FEL �VUT \cr
        & $\underline{\strut \hbox{160 00  PRAHA}}$ \cr
        &     \cr
email:  &  {\tt\char60}"olsak@math.feld.cvut.cz>" \cr}}}

\vskip 3cm

\centerline{Dokumentace k~programu dod�van� s~bal�kem \CS\TeX\ 95}

\eject}

%%%%%%%%%%%%%%%%%%% Obsah %%%%%%%%%%%%%%%%%%%

\sect Obsah

\newcount\pn
\pn=1
\def\n{\advance\pn by 1}
{\obeylines\catcode`\~=12%
\def\s#1
{\medskip\line{\bf #1\hfil \the\pn\hskip\parindent}\medskip}%
\def\ss#1
{\line{\hskip\parindent #1 \dotfill\ \the\pn\hskip\parindent}\smallskip}%
%
\s   1. Stru�n� charakteristika
\n
\s   2. Popis programu
\ss  2.1. Spu�t�n� programu
\n
\ss  2.2. �daje v konfigura�n�m souboru
\ss  2.3. Volba aktivn� polo�ky
\ss  2.4. V�b�r polo�ky kl�vesnic�
\n
\ss  2.5. V�b�r polo�ky my��
\s   3. Form�t konfigura�n�ho souboru
\ss  3.1. Z�kladn� struktura
\n
\ss  3.2. Aktivn� znaky
\n
\ss  3.3. Po�adavek substituce textu
\n
\ss  3.4. Definice "~param"
\n
\ss  3.5. Defini�n� ��dek okna
\ss  3.6. Text okna a polo�ek
\n
\ss  3.7. Definice reakce p�i v�b�ru polo�ky
\n
\ss  3.8. Glob�ln� definice "~hotkeys", "~timeout", "~start", "~final", "~beep", "~mouse"
\n
\ss  3.9. Editovateln� polo�ka, automatick� polo�ka a zv�razn�n� text v okn�
\n
\s   4. Chybov� hl��en� a omezen� programu
\n
\s   5. N�vrh konfigurace em\TeX u s programem MNU
\n\n
\s   6. Zm�ny vzhledem k verzi, ���en� na konferenci Euro\TeX'92
}


\sect 1. Stru�n� charakteristika
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Programem MNU lze za pomoc� ��d�c� d�vky (".bat") opakovan� spou�t�t r�zn�
aplika�n� programy. Byl vyvinut pro pou�it� v~syst�mech \TeX, ale lze jej
u��t i jinde.

Dokumentace je ur�ena pro u�ivatele, kte�� hodlaj� m�nit st�vaj�c�
konfigurace syst�m�, v~nich� je program pou�it, nebo navrhovat nov�.
Proto p�edpokl�d� ur�itou hlub�� znalost DOSu, zvl��t� pak zku�enosti
s~navrhov�n�m d�vek (".bat") v~DOSu.

Program vytv��� zd�n� integrovan�ho prost�ed� pro spou�t�n� jednotliv�ch
proces�. Toto prost�ed� lze zcela nakonfigurovat v�etn� barev a tvar�
oken, jmen a zp�sobu pou�it� jednotliv�ch polo�ek menu, kontextov�ho
helpu apod. P�itom ��zen� procesu je zaji�t�no ��d�c� d�vkou. Tato d�vka
v~jist�m okam�iku zavol� program MNU s~parametrem -- n�zvem konfigura�n�ho
souboru (nap�. "texcfg.mnu"). Program MNU umo�n� u�ivateli komfortn� vybrat
po�adovanou polo�ku. Po v�b�ru polo�ky vr�t� program p��slu�n� chybov� k�d
odpov�daj�c� ��slu vybran� polo�ky a ukon�� svou �innost. V~d�vce se nyn�
\uv{zjist�} ��slo vybran� polo�ky pomoc� skupiny p��kaz� "if errorlevel" a
podle toho se d�vka v�tv� na jednotliv� aplika�n� procesy. Po proveden�
aplikace d�vka v�t�inou znovu zavol� program MNU a u�ivatel znovu vybere
n�jakou polo�ku a cyklus se opakuje.

D�vka m��e s~programem MNU komunikovat i pomoc� \uv{environment prom�nn�ch}
DOSu a vstupn�ch a v�stupn�ch soubor�. Program m��e (je-li to �e�eno
v~konfigura�n�m souboru) zobrazovat a editovat obsahy t�chto prom�nn�ch. Nav�c
existuje jedna speci�ln� environment prom�nn� s~n�zvem "MNU", kter� ovlivn�
start programu -- po spu�t�n� programu se nab�dne jako aktivn� ta polo�ka,
kter� je specifikovan� pr�v� v~t�to prom�nn� "MNU". U�ivatel proto nemus�
dlouho vyb�rat n�sleduj�c� polo�ku, nevymyk�-li se postup jeho �innosti
norm�lu. Nap��klad po ukon�en� p�ekladu (programu \TeX) lze v~d�vce zjistit
p��kazem "if errorlevel", zda tento p�eklad prob�hl bez chyby. Pokud ano,
pak se provede nastaven� prom�nn� "MNU" tak, aby po vyvol�n� menu byla
nab�dnuta jako aktivn� polo�ka "View". U�ivatel pak nemus� v~prost�ed� menu
d�lat nic jin�ho, ne� ma�kat kl�vesu "Enter".

V�hodou t�to \uv{d�vkov�} filosofie je, �e program MNU v~okam�iku b�hu
aplikace v�bec nep�ek��� v~pam�ti. D�le neexistuj� p�i konfiguraci
syst�mu pomoc� tohoto menu v~podstat� ��dn� omezen� v~mo�nostech
variability nastaven� chov�n� jednotliv�ch proces�. Jedin�m omezen�m je
DOS samotn�. Jedin� d�vkou lze vyj�d�it v�e, co je v~konfigura�n�ch mo�nostech
jednotliv�ch aplika�n�ch program�.

\medskip
V~n�sleduj�c� tabulce je seznam soubor�, kter� jsou sou��st� dod�vky
programu MNU.

\begtab{25em}
& "!readme.txt"  \: Z�kladn� informace o~programu &\cr
& "mnu.doc"      \: Podrobn� dokumentace k~programu &\cr
& "mnutrick.doc" \: Popis n�kter�ch trik� pou�it�ch v~d�vk�ch &\cr
& "mnu.tex"      \: Obsah p�edchoz�ch t�� soubor� v~Plain \TeX u~--
                    tento text &\cr
& "demotex.bat"  \: Demonstra�n� d�vka. &\cr
& "mnu.exe"      \: Vlastn� program MNU &\cr
& "texcfg.mnu"   \: Navrhovan� konfigurace programu MNU pro \TeX &\cr
&  "*.bat"       \: Navrhovan� d�vky pro konfiguraci em\TeX u~&\cr
& "totext.exe"   \: Vrac� obrazovku do textov�ho m�du $80\times25$ &\cr
&  "kalk.exe", "kalk.hlp" \: Kalkula�ka -- uk�zka aplika�n�ho programu
\endtab

\medskip
Pozn�mka. Do \CS\TeX u~nejsou za�azeny v�echny uveden� soubory. \CS\TeX\
samotn� je toti� n�zorn�m p��kladem pou�it� programu a proto je dokumentace
kr�cena o~soubory  "demotex.bat", "mnutrick.doc", "!readme.txt". M�sto
souboru "texcfg.mnu" najde u�ivatel \CS\TeX u~ve sv� konfiguraci soubor
"cfg.mnu". D�le je s~\CS\TeX em dod�v�na dokumentace ke konfiguraci
"cfg.doc" a k~instala�n�m d�vk�m "install.doc". Tyto soubory spole�n�
s~funk�n�mi d�vkami konfigurace (nap�. "texbat.bat") bohat� ilustruj�
pou�it� programu MNU.

\medskip
Software, obsa�en� ve v��e zm�n�n�ch souborech je voln� ���iteln�. Autor jej
p�ed�v� sdru�en� \CS TUG, od kter�ho o�ek�v�, �e zajist� popularizaci tohoto
produktu a dal�� jeho ���en�. Nen� dovoleno uveden� soubory ani jejich
modifikace pou��vat k~v�d�le�n�m ��el�m. To znamen�, �e nen� dovoleno tento
software prod�vat (s v�jimkou manipula�n�ho poplatku za kop�rov�n� disket)
ani za�azovat do syst�m�, jejich� provoz je ur�en v�hradn� k~v�d�le�n�
�innosti.

Autor nebude v~z�sadn�ch koncep�n�ch ot�zk�ch tento program d�le upravovat
a vylep�ovat. Bude ale vd��n� za v�echny p�ipom�nky, kter� povedou k~odstran�n�
chyb, kter� bohu�el u~��dn�ho software nejsou vylou�eny.

         
\sect 2. Popis programu
%%%%%%%%%%%%%%%%%%%%%%%

\subsect 2.1  Spu�t�n� programu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Program MNU pracuje v~textov�m re�imu obrazovky $80\times25$.
Je-li v�choz� stav obrazovky jin�, program nezobrazuje spr�vn�. V~takov�m
p��pad� je vhodn� nejprve volat program "totext.exe", kter� vrac� obrazovku
do uveden�ho textov�ho re�imu.

V~textov�m re�imu nen� program MNU samotn� z�visl� na zp�sobu
reprezentace n�rodn�ch znak�. Ve�ker� texty, kter� zobrazuje, �te
z~konfigura�n�ho souboru, kter� mus� b�t p�ipraven v~z�vislosti na pou�it�m
k�dov�n�. Spr�vn� zobrazov�n� n�rodn�ch znak� na obrazovce nespad� do
kompetence programu a je t�eba pou��t jin� technick� prost�edky.

Program se spou�t� s~aspo� jedn�m parametrem. T�mto parametrem je n�zev
konfigura�n�ho souboru (pop��pad� i s~cestou). Dal�� parametry jsou
nepovinn�. Jedn� se o~n�zvy vstupn�ch a v�stupn�ch soubor� a program
s~nimi m��e nad�le pracovat podle p��kaz� z~konfigura�n�ho souboru.

Pokud je program spu�t�n bez parametru, ohl�s� chybu a ukon�� �innost
s~n�vratov�m chybov�m k�dem 255. Stejn� tak v~p��pad�, �e konfigura�n�
soubor nelze otev��t ke �ten�.

Pravidlo: Kdykoli program ukon�� �innost kv�li n�jak� chyb�, vyp��e se
zn�n� chyby a n�vratov� chybov� k�d je 255.


\subsect 2.2  �daje v~konfigura�n�m souboru
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Z~konfigura�n�ho souboru program na�te n�sleduj�c� �daje:

\begitems
 * Zn�n� (texty) jednotliv�ch polo�ek
 * ��sla polo�ek -- ka�d� polo�ka m� sv� ��slo (nez�porn� ��slo typu integer)
 * Zp�sob reakce programu p�i v�b�ru polo�ky
 * Seskupen� polo�ek do jednotliv�ch oken
 * Strukturu vz�jemn�ho vol�n� jednotliv�ch polo�ek
 * Typ polo�ek (editovateln� a needitovateln�)
 * Doprovodn� texty v~jednotliv�ch oknech
 * Pro ka�d� okno jeho velikost a um�st�n� na obrazovce
 * V�echny pot�ebn� atributy barev
 * Zv�razn�n� p�smena v~textech jednotliv�ch polo�ek
 * Texty help�, jejich napojen� na jednotliv� polo�ky
 * Velikosti, um�st�n� a barvy oken help�
 * Zp�sob komunikace s~vn�j��m prost�ed�m (vstupn� a v�stupn� soubory,
   environment prom�nn�)
\enditems

 V~konfigura�n�m souboru je mnoho dal��ch informac�. Podrobn�ji viz odst.3.

\subsect 2.3  Volba aktivn� polo�ky p�i startu programu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Po spu�t�n� programu se nab�dne jako aktivn� ta polo�ka, jej�� ��slo je
shodn� s~��slem environment prom�nn� "MNU".

P��klad vol�n� programu :
\begtt
    set MNU=17
    mnu config.mnu
\endtt

V~tomto p��pad� se nastav� p�i startu jako aktivn� polo�ka s~��slem 17.
(P�edpokl�d�me, �e v~souboru "config.mnu" je takov� polo�ka definov�na).

Pokud takov� polo�ka je v~n�jak�m d�l��m \uv{pod-menu}, kter� vypl�v� ze
struktury vz�jemn� vazby oken a polo�ek, otev�ou se automaticky v�echna
\uv{rodi�ovsk�} okna v~t�to struktu�e a potom teprve okno s~p��slu�nou
polo�kou

Jestli�e environment prom�nn� "MNU" neexistuje nebo jej� obsah nen� ��slo
typu integer, program vyhled� polo�ku s~��slem 0.

Nen�-li v~konfigura�n�m souboru polo�ka s~��slem "MNU" definov�na, program
ohl�s� chybu a ukon�� �innost.


\subsect 2.4  V�b�r polo�ky kl�vesnic�
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

U�ivatel m�n� aktivn� polo�ku pomoc� �ipek v~r�mci jednoho okna. V�jimku
tvo�� tzv. \uv{roletov�} menu, kde �ipky doprava a doleva vyvolaj� p�eskok do
sousedn�ch oken (to je nutn� ov�em p�esn� definovat v~konfigura�n�m
souboru).

Kl�vesa "Esc" vrac� v�b�r polo�ek k~\uv{rodi�ovsk�mu} oknu. Neexistuje-li
takov� okno (aktivn� okno je \uv{ko�enem} struktury), pak program vyhled�
polo�ku s~��slem 0. Pokud takov� polo�ka neexistuje, program ukon�� �innost
a vr�t� ��zen� DOSu s~k�dem 0. Pokud polo�ka existuje, program otev�e
p��slu�n� okno a nab�dne tuto polo�ku jako aktivn�. Tento postup umo��uje
nakonfigurovat z�v�re�nou ot�zku typu \uv{Opravdu chcete ukon�it �innost?},
p�i�em� polo�ka s~��slem 0 m��e m�t zn�n� "Ano".

\medskip
Reakce kl�vesy "Enter" m��e b�t troj�:

\begitems
 * Otev�e se nov� okno s~polo�kami. P�esn�ji: nab�dne se specifikovan�
   polo�ka jako aktivn�.
 * Program ukon�� svou �innost, uzav�e v�echna otev�en� okna a vr�t�
   chybov� k�d rovn� ��slu vybran� polo�ky. Je-li ��slo polo�ky v�t��
   ne� 254, program vr�t� k�d 255.
 * Program spust� proces definovan� jedn�m ��dkem DOSu (tzv. "��dkov�"
   spou�t�n� procesu). V~tom p��pad� program neopou�t� pam�� po��ta�e,
   spust� po�adovan� proces a po ukon�en� procesu nab�dne dal��
   specifikovanou polo�ku jako aktivn�.
\enditems

Zp�sob reakce kl�vesy "Enter" se definuje v~konfigura�n�m souboru.

Zvl��tn�m typem je tzv. \uv{editovateln�} polo�ka. Umo��uje editovat v~m�st�
polo�ky. V�sledek editace se ukl�d� do speci�ln�ho bufferu pro pozd�j��
u�it� v~\uv{��dkov�m} spou�t�n� procesu nebo p�i za�azen� do v�stupn�ch
soubor�. T�mto zp�sobem lze zm�nit obsah environment prom�nn�ch DOSu,
nebo p�ipravit parametry pro n�jak� ��dkov� proces apod.

Zabudovan� editor polo�ek pracuje v~\uv{insert} m�du. Kl�vesy "Esc",
"Enter", �ipky, "Del" a "Backspace" reaguj� b��n�m zp�sobem. Je-li jako
prvn� kl�vesa stisknuta �ipka, nab�zen� text lze editovat. Jinak p�vodn�
text miz� a umo�n� se editovat nov�. Pokud je�t� nebyla zah�jena
editace, pak �ipky nahoru a dol� vyvolaj� p�eskok do sousedn� polo�ky.
Jinak je nutno pou��t nejd��ve kl�vesu "Esc" nebo "Enter".

Kl�vesa "F1" vyvol� help, z�visl� na polo�ce, kter� je zrovna aktivn�. Okna
helpu se konfiguruj� v~konfigura�n�m souboru a mohou obsahovat kdekoli dal��
polo�ky (zv�razn�n� pojmy), z~nich� se sk��e na dal�� okna helpu. T�m lze
dos�hnout toho, �e help je strukturovan�. Help se opust� kl�vesou "Esc".
V~p��pad�, �e okno helpu neobsahuje ��dnou polo�ku, pak kl�vesa "Enter" m�
stejn� v�znam, jako kl�vesa "Esc".

Pokud je v~polo�ce definov�no tzv. \uv{zv�razn�n� p�smeno}, lze vybrat danou
polo�ku pouh�m zm��knut�m kl�vesy s~t�mto p�smenem. Reakce programu je
stejn�, jako p�i pou�it� �ipek a zm��knut� "Enter".

V~p��pad� jak�koli nesrovnalosti v~konfigura�n�m souboru (nap�. nelze
nal�zt ��slo navazuj�c� polo�ky) program ohl�s� chybu a ukon�� �innost.

\subsect 2.5  V�b�r polo�ky my��
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Je-li instalov�na my�, na obrazovce se objev� v~m�st� aktivn� polo�ky
kurzor my�i. Zm��knut� lev�ho tla��tka my�i s~kurzorem nad polo�kou kdekoli
na obrazovce zp�sob� v�b�r t�to polo�ky (jako "Enter"). Zm��knut� t�ho�
tla��tka mimo okno reaguje podobn� jako "Esc", tj. zav�e se naposledy
otev�en� okno. Prav� tla��tko vol� a odvol�v� helpy. Prost�edn� tla��tko je
bez funkce.

M�l jsem mo�nost odladit program pouze s~my�� \uv{genius mouse}. Je mo�n�,
�e jin� my� nebude poslouchat (nap�. \uv{Mickey mouse}).


\sect 3. Form�t konfigura�n�ho souboru
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Prohl�dn�te si obsah souboru "cfg.mnu". Bude V�m slou�it jako ilustra�n�
��klad. Bez soub��n�ho sledov�n� obsahu tohoto souboru je n�sleduj�c� text
jen obt��n� �iteln�.


\subsect 3.1  Z�kladn� struktura
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Cel� konfigura�n� soubor se d�l� na �seky, kter� definuj� vlastnosti a
vzhled jednotliv�ch oken. Takov� �sek za��n� symbolem "^" v~prvn�m sloupci
��dku. Tomuto ��dku budeme ��kat \uv{defini�n� ��dek okna}. Za defini�n�m
��dkem okna n�sleduje (nepovinn�) definice "~param", kter� je lok�ln� pro dan�
okno. N�sleduj�c� text se p�episuje do p��slu�n�ho okna. V~p�episovan�m
textu se tak� vymezuj� jednotliv� polo�ky a reakce, kterou program provede
p�i v�b�ru polo�ky. Konec textu okna je d�n nov�m defini�n�m ��dkem okna
nebo (m�n� �asto) glob�ln� definic� "~param".

P�ed prvn�m defini�n�m ��dkem okna m��e b�t libovoln� text (koment��) a krom�
toho tam mohou b�t glob�ln� definice "~param", "~hotkeys", "~timeout",
"~start", "~final", "~beep", "~mouse" a "~copy". Tyto definice jsou na
samostatn�ch ��dc�ch, kter� za��naj� znakem~"~".

Konfigura�n� soubor m� tedy n�sleduj�c� strukturu:
\begtt
  koment��ov� ��dky (nepovinn�)
  ~glob�ln� definice (nepovinn�)
  ^prvn� defini�n� ��dek okna
  ~param pro dan� okno (nepovinn�)
  text okna s vymezen�m polo�ek
  ~param - glob�ln� (nepovinn�)
  dal�� koment�� (nepovinn�)
  ^druh� defini�n� ��dek okna
  ... atd.
\endtt

Text okna m��e \uv{p�esahovat} -- b�t na v�ce ��dc�ch, ne� se vejde do okna.
P�esahuj�c� ��dky (dole) se ignoruj� a lze je tak� pou��t jako koment��.

Nedoporu�uje se ale tato m�sta vyu��vat k~rozs�hl�m koment���m. Program
toti� vyhled�v� z~konfigura�n�ho souboru �daje sekven�n� (��dek po ��dku) a
takov� rozs�hl� koment��e by mohly v�st ke zpomalen� chodu programu. Ze
stejn�ch d�vod� je vhodn� na prvn� m�sta v~souboru um�stit definice
nej�ast�ji pou��van�ch oken. Tj. nap�. helpy je vhodn� ps�t a� na konec
souboru.

\subsect 3.2  Aktivn� znaky
%%%%%%%%%%%%%%%%%%%%%%%%%%%

Aktivn�mi znaky jsou takov� znaky, kter� vymezuj� strukturu konfigura�n�ho
souboru. Ostatn� znaky se obvykle p�episuj� jako text do vymezen�ho okna
nebo slou�� jako koment��.

V�t�ina znak� je aktivn� pouze podm�n�n�. Tak t�eba znak "~" je aktivn� pouze
pokud se nal�z� v~prvn�m sloupci ��dku. Kdekoli jinde se interpretuje jako
oby�ejn� textov� znak.

V~n�sleduj�c� tabulce je p�ehled aktivn�ch znak�.

\begtab{15em}
& Znak &&  Podm�n�nost           && V�znam   & \title
& "^"  &&  v~prvn�m sloupci      && defini�n� ��dek okna &\cr
& "~"  &&  v~prvn�m sloupci      && glob�ln� nebo lok�ln� definice &\cr
& "|"  &&  kdekoli v~textu okna  && vymezen� za��tku resp. konce po\-lo�ky &\cr
& "#"  &&  bezprost�edn� n�sleduj�c� za otev�rac�m znakem "|" polo�ky
                                 && ozna�en� editovateln� polo�ky &\cr
& "^"  &&  bezprost�edn� n�sleduj�c� za otev�rac�m znakem "|" polo�ky
                                 && ozna�en� automatick�  polo�ky &\cr
& "!"  &&  bezprost�edn� n�sleduj�c� za otev�rac�m znakem "|" polo�ky
                                 && ozna�en� zv�razn�n�ho textu &\cr
& "^"  &&  uvnit� polo�ky        && ozna�en� zv�razn�n�ho p�smene &\cr
& "{"  &&  bezprost�edn� n�sleduj�c� za uzav�rac�m znakem "|" polo�ky
                                 && ve slo�en�ch z�vork�ch je vymezen� reakce
                                    p�i v�b�ru polo�ky &\cr
& "[%" &&  kdekoli v~souboru     && dvojznak, kter� uvozuje po�adavek
                                    substituce textu
\endtab

Z~uveden� tabulky plynou n�kter� omezen� pro texty oken:

\begitems
 * ��dn� \uv{oby�ejn�} ��dek nesm� za��nat znaky "~" a "^" .
 * Znak  "|"  nelze za�adit do textu okna. (M�sto n�ho lze v~p��pad� nutnosti
   pou��t znak \vrule~, kter� m� v~roz���en� ASCII k�d 179).
 * Uvnit� polo�ky se V�m nepoda�� vytisknout znak "^" .
 * V~cel�m konfigura�n�m souboru nelze napsat dvojici znak�  "[%" , proto�e
   t�m vyvol�te po�adavek substituce textu.
 * Text needitovateln� polo�ky nem��e za��nat znakem "!" nebo "#"~.
\enditems

Znaky jsou vybr�ny tak, aby uveden� omezen� nebyla p��li� podstatn�.

\subsect 3.3  Po�adavek substituce textu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Kdekoli v~textu konfigura�n�ho souboru se m��e vyskytnout konstrukce
"[%<NAZEV>%<DELKA>]"  , kde parametr <DELKA> je nepovinn�.

Tato konstrukce se nahrad� obsahem environment prom�nn� <NAZEV>. D�lka
p��slu�n�ho �et�zce bude m�t hodnotu <DELKA>. Znamen� to, �e p�i del��m
obsahu environment prom�nn� se znaky vpravo ignoruj� a p�i krat��m se vpravo
dopl�uj� mezery. Nen�-li parametr <DELKA> uveden, je d�lka p��slu�n�ho
�et�zce rovna aktu�ln� d�lce obsahu environment prom�nn�.

\medskip
Existuje je�t� jedna mo�nost substituce textu - toti� textem z~jin�ho
souboru. Konstrukce m� tvar "[%<N>% <X>, <Y>, <DELKA>]". Tato konstrukce se
nahrad� textem z~\uv{<N>-t�ho souboru}. <N>-t� soubor je soubor, jeho� n�zev je
uveden jako <N>-t� parametr v~p��kazov�m ��dku vol�n� programu MNU.

D�le <Y> je ��slo ��dku a <X> je ��slo sloupce, od kter�ho se m� soubor ��st
a <DELKA> je d�lka v�sledn�ho stringu. String se p�e�te pouze z~p��slu�n�ho
��dku a p��padn� se dopln� zprava mezerami. Je-li <DELKA> = 0, pak je d�lka
v�sledn�ho stringu rovna d�lce p��slu�n�ho <Y>-t�ho ��dku v~souboru (nebo jeho
��sti pro $<X> > 1$).

Parametr <DELKA> je jedin� nepovinn� a nen�-li uveden, �te se od pozice
<X>, <Y> a� do konce souboru.

{\bf P��klady.} Uva�ujme, �e program MNU je vol�n za t�to situace:

\begtt
   set ENVIN=blabol
   mnu config.mnu myfile.txt
\endtt

a �e soubor "myfile.txt" obsahuje dva ��dky:

\begtt
   experiment�ln� text
   na dvou ��dc�ch obsahuj�c� [%ENVIN%]
\endtt

V~n�sleduj�c� tabulce jsou r�zn� p��klady:

\begtab{20em}
& konstrukce       && v�sledek & \title
& "[%ENVIN%3]    " && "bla" &\cr
& "[%ENVIN%]     " && "blabol" &\cr
& "[%2% 1, 1, 5] " && "exper" &\cr
& "[%2% 10, 1, 9]" && "t�ln� tex" &\cr
& "[%2% 1, 1]    " && "experiment�ln� text"\hfil\break
                      "na dvou ��dc�ch obsahuj�c� blabol" &\cr
& "[%2% 17, 2, 0]" && "obsahuj�c� blabol"
\endtab

Pokud environment prom�nn� <NAZEV> neexistuje, v�sledek konstrukce je
pr�zdn�. P�itom program nehl�s� chybu. Tak nap��klad "[%%80]" zna�� 80
mezer. Stejn� tak, pokud nelze otev��t soubor ke �ten�, v�sledek konstrukce
je pr�zdn�.

Z~bezpe�nostn�ch d�vod� program zabr�n� konstrukci s~vol�n�m souboru
s~��slem 0 a 1 (konfigura�n� soubor vol� sebe sam�ho). Nekone�n� rekurze
vol�n� soubor� je o�et�ena tak, �e p�i osm�m pokusu o~vstup do dal��ho
souboru program ohl�s� chybu p�epln�n� z�sobn�ku nebo nep�jde otev��t znovu
soubor ke �ten� (po�et otev�en�ch soubor� je v~DOSu limitov�n).

Vno�en� substituce (viz p��klad v tabulce) pracuj� pouze p�i po�adavku na
substituci textem ze souboru. Nelze tedy vyu��vat substitu�n� konstrukce
v~hodnot�ch environment prom�nn�ch. Pokud se v~hodnot� environment prom�nn�
vyskytne dvojznak~"[%", pak u� nen� interpretov�n jako aktivn�.

Pokud v~substitu�n�ch konstrukc�ch vol�te soubor s~textem, kter� obsahuje
defini�n� ��dky okna, mus� b�t takov� konstrukce na za��tku ��dku. Program
p�i prohled�v�n� definic toti� �te jen za��tek ka�d�ho ��dku a nezdr�uje
se substitucemi, kter� se po�aduj� n�kde uprost�ed oby�ejn�ch ��dk�. Takov�
substituce provede a� v~okam�iku, kdy pot�ebuje na��st text okna.

\medskip
Existuje-li p�ed prvn�m defini�n�m ��dkem okna glob�ln� definice "~copy",
pak v�echny ��dky konfigura�n�ho souboru, kter� se nal�zaj� za t�mto ��dkem
(v�etn� glob�ln�ch definic a defini�n�ch ��dk� okna) se p�ekop�ruj� na
obrazovku. Definice "~copy" neobsahuje parametry, tak�e jej� tvar je pouze:
"~copy".

P�i kopii se prov�d� substituce text� podle v��e zm�n�n�ch pravidel. Program
"MNU" po skon�en� kop�rov�n� ukon�� �innost. To znamen�, �e se definic�
"~copy" program uvede do zvl��tn�ho re�imu, kdy nerespektuje ��dn� p��kazy
ani definice z~konfigura�n�ho souboru a nepracuje s~��dn�mi polo�kami ani
okny. V~tomto re�imu je aktivn� pouze dvojznak~"[%"~.

V�znam takov� kopie m� p�edev��m p�i v�stupu nikoli na obrazovku, ale do
souboru. To se d� za��dit snadn�m p�esm�rov�n�m v�stupu:

\begtt
     mnu vstup dal�� vstupy > vystup
\endtt

\noindent Mo�n� vyu�it� tohoto re�imu programu je uvedeno v~souboru
"cfg.doc" a "install.doc".


{\catcode`\~=12
\subsect 3.4  Definice "~param"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

}
Definice za��n� znakem "~" a m� tvar:

\begtt
  ~param {<CISLA>} "<ZAHLAVI>" ; <KOMENTAR>
\endtt

��st ��dku \dd<ZAHLAVI>\dd\ stejn� jako ��st "; <KOMENTAR>"
je nepovinn�.

\bull <CISLA> -- jsou cel� ��sla bez znam�nka odd�len� od sebe mezerami nebo
  ��rkami. Podle po�ad� maj� tato ��sla postupn� tento v�znam:

\begtt
  {<XMIN>, <YMIN>, <SIRKA>, <VYSKA>, <RAMY>, <ZAKLAD>, <POL>, <PISM>, <A-POL>, <A-PISM>}
\endtt

\noindent kde je:

{\narrower\parindent=0pt
<XMIN>, <YMIN> -- x-ov� a y-ov� pozice lev�ho horn�ho rohu okna
           (v�etn� r�me�ku)

<SIRKA>, <VYSKA> -- ���ka a v��ka okna (v�etn� r�me�ku)

<RAMY> --  0 : ��dn� r�me�ek, 1 : jednoduch�, 2 : dvojit� r�me�ek

<ZAKLAD> --  textov� atribut barvy z�kladn�ho textu v~okn� (0~a�~255)

<POL> -- textov� atribut barvy neaktivn� polo�ky

<PISM> -- textov� atribut barvy zv�razn�n�ho p�smene v~neaktivn� polo�ce

<A-POL>, <A-PISM> -- Tot�� jako <POL>, <PISM>, ale pro aktivn�  polo�ku

}
\medskip
Pokud je uvedeno parametr� m�n�, ne� 10, pak parametry vpravo z�st�vaj�
nezm�n�ny. Pokud je uvedeno v�ce ��sel, ne� 10, ��sla vpravo nemaj� vliv.

M�sto ��sla m��e b�t uveden znak  "*" . Potom p��slu�n� parametr z�st�v�
nezm�n�n.

\medskip
Na tomto m�st� uvedeme tabulku ��sel barev v~textov�m m�du (ono se to
�patn� pamatuje a skoro stejn� �patn� se to n�kde hled�).

\medskip
\line{\hfil\vbox{\hrule\hbox{%
\vbox{\halign{\vrule\quad\strut #\hfil\quad&\vrule\quad\hfil #\hfil\quad\cr
barva   & ��slo\vrule height12pt depth4pt width0pt \cr
\noalign{\hrule}  \vrule height12pt width0pt
black   & 0 \cr
blue    & 1 \cr
green   & 2 \cr
cyan    & 3 \cr
red     & 4 \cr
magenta & 5 \cr
brown   & 6 \cr
light gray & 7 \vrule depth6pt width0pt \cr}}%
\vbox{\halign{\vrule\quad\strut #\hfil\quad&\vrule\quad\hfil #\quad\vrule\cr
barva         & \omit \vrule height12pt depth4pt\quad ��slo\quad\vrule \cr
\noalign{\hrule}  \vrule height12pt width0pt
dark gray     &  8 \cr
light blue    &  9 \cr
light geen    & 10 \cr
light cyan    & 11 \cr
light red     & 12 \cr
light magenta & 13 \cr
yellow        & 14 \cr
white         & 15 \vrule depth6pt width0pt \cr}}}\hrule}\hfil}
\medskip
Snad nebude vadit, �e jsou n�zvy barev v~angli�tin�. Tyto pojmy toti� u�
skoro pat�� k~po��ta�ov� terminologii.

Atribut barvy se po��t� jako 16 kr�t ��slo barvy pozad� plus ��slo barvy
pop�ed�. Pro pozad� lze vybrat jen barvy s~��slem men��m ne� 8, jinak se
text rozblik�.

\bull <ZAHLAVI> -- text, kter� se nacentruje do horn� ��sti okna v~m�st� r�me�ku.
  Nen�-li z�hlav� uvedeno, r�me�ek v~horn� ��sti okna nebude p�eru�en
  ��dn�m textem.

\bull <KOMENTAR> -- text uveden� za st�edn�kem se ignoruje.
\medskip

Glob�ln� definice "~param"  m� svou p�sobnost na v�echna okna definovan� za
n� a� po dal�� glob�ln� definici "~param"

Naproti tomu lok�ln� definice "~param"  ovlivn� (v�echny nebo n�kter�) parametry
pouze pro dan� okno.

Nejsou-li parametry m�n�ny ani glob�ln�, ani lok�ln�, pak maj� implicitn�
hodnotu. Implicitn� hodnoty odpov�daj� t�to definici:

\begtt
  ~param {10, 5, 62, 17, 1, 31, 30, 30, 14, 14}
\endtt

tj. modr� okno n�kde uprost�ed s~jedn�m r�mem a se �lut�mi polo�kami.


\subsect 3.5  Defini�n� ��dek okna
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

m� tvar

\medskip\noindent
"       ^(<H-POL>)  <POLOZKY>  [<R-POL>] "{\tt\char60}"<L-R>>  \ ; <KOMENTAR>"
\medskip

Typ parametru je rozli�en druhem z�vorky. Po�ad� parametr� nelze m�nit.

V�echny parametry (v�etn� sv�ch z�vorek), krom� parametru <POLOZKY>, jsou
nepovinn�, tak�e \uv{nej\-stru�\-n�j\-��} definice okna m� tvar:  "^ <POLOZKY>".

\bull <H-POL> -- pokud je tento parametr uveden, jedn� se o~okno helpu.
  Pozor: lev� kulat� z�vorka mus� bezprost�edn� n�sledovat za znakem "^" .
  <H-POL> je seznam ��sel polo�ek (odd�len�ch od sebe ��rkou nebo mezerou), ze
  kter�ch se vyvol� dan� okno helpu. Nap�. je zrovna aktivn� polo�ka ��slo
  17 a u�ivatel zm��kne "F1". Potom se otev�e takov� okno, kter� m� v~kulat�
  z�vorce uvedeno (mezi jin�mi) ��slo 17. Nen�-li takov� okno definov�no,
  program neohl�s� chybu, pouze vy�le zvukov� sign�l (viz definice~"~beep"
  v~odst.3.8).

V~p��pad�, �e parametr <H-POL> je uveden, je tak� parametr  <POLOZKY>
  nepovinn�.

\bull <POLOZKY> -- seznam ��sel polo�ek, kter� jsou n�sledn� definov�ny 
v~textu okna. ��sla a polo�ky si vz�jemn� odpov�daj� podle po�ad�.

  Je-li ��sel m�n� ne� polo�ek v~textu okna, p�eb�vaj�c� polo�ky maj�
  ��slo shodn� s~posledn�m ��slem v~seznamu. Je-li seznam pr�zdn�, pak
  polo�ky nemaj� ��slo (to je mo�n� jen v~okn� helpu).

Je-li ��sel v�ce, ne� polo�ek, p�esahuj�c� ��sla se ignoruj�.
  Po�aduje-li se n�kdy skok na polo�ku s~takov�m ignorovan�m ��slem,
  okno se otev�e, ale ��dn� polo�ka v~n�m nebude aktivn�. Kl�vesa "Enter"
  p�ebere v�znam kl�vesy "Esc" a �ipky funguj� jen vpravo a vlevo a to
  jen za p�edpokladu, �e je definov�n parametr <L-R> .

\bull <R-POL> -- je jedno ��slo, ozna�uj�c� \uv{rodi�ovskou} polo�ku dan�ho
  okna. Pokud je <R-POL> uvedeno, program p�edt�m, ne� otev�e dan� okno,
  zkontroluje, zda u� je otev�en� okno s~rodi�ovskou polo�kou. Nen�-li toto
  \uv{rodi�ovsk�} okno otev�en�, otev�e nejprve jej. T�mto zp�sobem se definuje
  stromov� struktura menu.

\bull <L-R> -- Dv� ��sla polo�ek, na kter� program sko�� v~p��pad� zm��knut�
  lev� resp. prav� �ipky. P�ed sko�en�m na tuto polo�ku se zav�e aktivn�
  okno. Nen�-li parametr <L-R> uveden, �ipka vpravo m� stejn� v�znam,
  jako �ipka dol� a �ipka vlevo jako �ipka nahoru.

Uveden�m parametru <L-R> lze konfigurovat tzv. \uv{roletov�} menu, kter�
umo��uje �ipkami vpravo a vlevo \uv{posunovat rolety}.

\bull "\" -- P��tomnost tohoto znaku definuje tzv. \uv{automaticky zav�rateln�
  okno}. Je-li parametr uveden, pak p�i zav�en� okna, kter� je mu \uv{d�tsk�m
  oknem}, se automaticky zav�e i toto okno. Poeticky �e�eno: rodi� pot�, co
  se mu narodilo d�t�, nem��e ��t d�le, ne� jeho d�t�.


\subsect 3.6  Text okna a polo�ek
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Text n�sleduj�c� za defini�n�m ��dkem okna se p�episuje ��dek po ��dku
do p��slu�n�ho okna po��naje bezprost�edn� prvn�m ��dkem za defini�n�m
��dkem okna (s v�jimkou lok�ln� definice "~param").

Je-li ��dek del��, ne� p��slu�n� vnit�n� ���ka okna (myslete na r�me�ek!),
zbytek ��dku vpravo se ignoruje.

Je-li ��dk� v�ce, ne� vypl�v� z~vnit�n� v��ky okna, dal�� ��dky se ignoruj�.

Je-li ��dk� m�n�, okno bude m�t dole pr�zdn� ��dky. Tato situace m��e
nastat v~p��pad�, �e se naraz� na konec konfigura�n�ho souboru, nebo na
��dek za��naj�c� symbolem "~" nebo "^" . Takov� ��dky mohou ukon�it
p�ed�asn� p�epis textu do okna.

P�epis textu do okna je nestandardn� p�i p�episu polo�ky. P�epis polo�ky
za��n� nalezen�m prvn�ho znaku "|", kter� uvozuje text polo�ky. Tento znak
se nep�episuje. N�sleduje-li bezprost�edn� za n�m znak~"#", resp.~"^",
resp.~"!", jedn� se o~editovatelnou polo�ku, resp. automatickou polo�ku,
resp. zv�razn�n� text. Co se v~takov�m p��pad� provede je uvedeno
v~odst.~3.9. V~opa�n�m p��pad� (jedn� se o~\uv{oby�ejnou} polo�ku) se dal��
text p�episuje. V~p��pad� existence znaku "^" uvnit� polo�ky, se tento znak
ignoruje a p�edch�zej�c� (pozor! nikoli n�sleduj�c�) znak se ozna�� jako
zv�razn�n� p�smeno. P�epis polo�ky kon�� nalezen�m zav�rac�ho znaku "|" ,
kter� se nep�episuje.

Za textem polo�ky (bezprost�edn� za uzav�rac�m znakem) m��e n�sledovat
znak "{" . Potom uvnit� slo�en�ch z�vorek je definice reakce p�i v�b�ru
polo�ky. P�i p�episu textu do okna se tato definice ignoruje (v�etn�
z�vorek).

Je-li uvnit� textu polo�ky konec ��dku, program ohl�s� chybu a ukon�� �innost.


\subsect 3.7  Definice reakce p�i v�b�ru polo�ky
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Ve slo�en�ch z�vork�ch za uzav�rac�m znakem "|" polo�ky lze definovat reakci
na v�b�r polo�ky. Tato definice m� tvar sekvence jak�chsi p��kaz� odd�len�ch
��rkami nebo mezerami. M��e obsahovat i nula p��kaz� (v takov�m p��pad� lze
slo�en� z�vorky vypustit). V~n�sleduj�c� tabulce je seznam mo�n�ch p��kaz�:

\begtab{25em}
& tvar p��kazu &&  v�znam & \title
& "$"<CODE>    &&  konec programu; program skon�� s~error-k�dem <CODE> &\cr
& <CISLO>      &&  p��kaz skoku -- sko�� se na dal�� polo�ku s~��slem <CISLO>.
                   \strut Je-li polo�ka v~dosud neotev�en�m okn�,
                   okno se otev�e (p��padn� i s~podstrukturou). &\cr
& "\"          &&  Znak "\" uzav�r� aktivn� okno. &\cr
& "*"          &&  Uzav�en� v�ech oken na obrazovce. &\cr
& \dd<TEXT>\dd">"<N>
   &&  Je-li $<N> = 0$, spust� se <TEXT> jako ��dek DOSu. \strut\hfil\break
       Je-li $<N> = 1$, program ohl�s� chybu.\strut\hfil\break
       Je-li $<N> > 1$, pak <TEXT> se zap��e jako dal�� ��dek
       do <N>-t�ho souboru. \strut\hfil\break
       \strut Je-li <N> n�zev environment prom�nn�, pak se <TEXT> zap��e do n�. &\cr
& "!><N>"  &&  <N> mus� b�t v�t�� ne� 1. Reset <N>-t�ho souboru pro z�pis.
          \strut Obsah v~tomto souboru (pokud n�jak� byl) t�mto okam�ikem
          zanik�. &\cr
& "CR+", "CR-" && Zapnut� resp. vypnut� automatick�ho CR na konci ��dku
                  v~��dkov�m editoru.
\endtab

{\bf Pozn�mky.}

\bull P��kaz skoku mus� b�t uveden jako posledn� p��kaz v~definici reakce.
   P��kazy se toti� prov�d�j� postupn� zleva doprava a p��kaz skoku p�ed�
   ��zen� nov� polo�ce, tak�e p��kazy za skokem nejsou nikdy provedeny.

\bull Nen�-li p��kaz skoku uveden (nen� komu p�edat ��zen�), program uzav�e
   v�echna okna a ukon�� svou �innost s~k�dem rovn�m ��slu vybran� polo�ky.
   Nen� proto nutn� uv�d�t p��kaz "$<CODE>", pokud chceme, aby <CODE> byl
   roven ��slu naposledy vybran� polo�ky. (Nej�ast�j�� p��pad).

\bull P��kaz "\" m� stejn� v�znam, jako zm��knut� "Esc". Pokud ale aktivn� okno
   nen� rovno posledn�mu otev�en�mu oknu, nastanou pot��e. Takov� situace
   nastane, pokud program�tor konfigura�n�ho souboru nedodr�uje z�sobn�kovou
   strukturu oken a ani� by pozav�ral pot�ebn� okna, sko�� p��kazem skoku
   n�kam doprost�ed. Pak uzav�en� prost�edn�ho okna v~pomysln�m z�sobn�ku
   automaticky vyvol� uzav�en� v�ech oken, kter� byla otev�ena pozd�ji.

\bull P��kazy "*" a "\" nemus� b�t od ostatn�ch odd�leny mezerou ani ��rkou.
   Tak�e pro zav�en� okna a skok na polo�ku 17 existuj� ekvivalentn� z�pisy:

\nobreak\medskip\noindent
"     {\, 17} " nebo " {\ 17} " nebo " {\17}"

\bull P�ed spu�t�n�m ��dku DOSu p��kazem \dd<TEXT>\dd">0" je vhodn� pou��t
   p��kaz "*". Spu�t�n� proces m��e toti� odrolovat obrazovku a s~n�
   \uv{ute�ou} i v�echna nezav�en� okna. Program pak bude zobrazovat objekty
   na obrazovce chaoticky. Uk�zkov� p��klad spr�vn�ho spu�t�n� ��dku DOSu
   je:

\begtt
       {*"dir a:">0, 17}
\endtt

   \noindent
   Tato konstrukce nejprve uzav�e v�echna okna, pak provede  "dir a:"  a
   nakonec se otev�ou okna a� k~polo�ce~17.

\bull P��kaz \dd<TEXT>\dd"><N>"  ($<N> > 1$) jen p�id� dal�� ��dek k~ji�
   existuj�c�mu textu v~souboru. Chcete-li zlikvidovat star� obsah souboru,
   pou�ijte nejd��ve p��kaz  "!><N>".

\bull Ulo�en� do environment prom�nn� je lok�ln� v~r�mci programu MNU. DOS
   toti� p�ed�v� p�i spu�t�n� programu obsah environmentu hodnotou a nikoli
   odkazem. Chceme-li obelst�t tuto z�le�itost, mus�me p�enos informace
   prov�st pomoc� v�stupn�ch soubor�. Nap��klad po programu MNU vol�me
   hned d�vku, kterou program vytvo�il:
\begtt
     mnu cfg.mnu envir.bat
     call envir
\endtt
   \noindent
   a v souboru "cfg.mnu" formulujeme t�eba po�adavek na zm�nu hodnoty
   environment prom�nn� "MARK" takto:
\begtt
    "set MARK=nova hodnota">2
\endtt

\bull P�ed ��slem souboru v p��kaze \dd<TEXT>\dd"><N>" se m��e vyskytnot
  procento, tj. p��kaz m� tvar
\begtt
       "<TEXT>">%N
\endtt
   \noindent
   V takov�m p��pad� se p�i ulo�en� ��dky <TEXT> do souboru nav�c zduplikuj�
   v�echna procenta v~t�to ��dce. V�znam tohoto p��kazu souvis�
   s~\uv{polyk�n�m} procent p�i zpracov�n� d�vkov�ch soubor�, jako
   t�eba "envir.bat" z~p�edchoz�ho p��kladu. P��kazem
\begtt
       "set MARK=hodnota obsahuj�c� procenta">%2
\endtt
   se do d�vky "envir.bat" ulo�� ��dek, v n�m� jsou procenta zduplikovan�. Po
   proveden� d�vky "envir.bat" (kter� "polkne" u ka�d� dvojice procent jedno
   z nich), je v prom�nn� "MARK" ulo�eno p�esn� tolik procent, kolik si
   p�ejeme. Podrobn�ji viz soubor "cfg.doc".

\bull Je-li n�jak� soubor poprv� pou�it jako v�stupn�, od t�to chv�le ji�
   nelze pou��t pro vstup. Po�adavek vstupu v~konstrukc�ch "[%<N>%...]"
   bude v~takov�m p��pad� vracet pr�zdn� string.

\bull String \dd<TEXT>\dd\ m��e obsahovat speci�ln� znak "#". M�sto tohoto
   znaku se dosad� naposledy editovan� text. T�mto mechanismem lze dostat
   v�sledky editace polo�ek do v�stupu, zvl��t� do environment prom�nn�ch.
   Viz t�� odst.3.9.

\bull {\tt CR+} zap�n� a {\tt CR-} vyp�n� automatick� ukon�en� ��dkov�ho
  editoru, tzv. \uv{autoCR}. P�esn�ji, je-li \uv{autoCR} zapnuto,
  pak vlo�en� krajn�ho znaku (nejv�ce vpravo) v~poli ��dkov�ho editoru
  nav�c vyvol� reakci, jakoby by u�ivatel potvrdil napsan� text
  kl�vesou {\tt Enter}. Implicite je {\tt CR-}.


{\catcode`\~=12
\subsect 3.8 Glob�ln� definice "~hotkeys", "~timeout", "~start", "~final", "~beep", "~mouse"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

}
\bull Definice "~hotkeys" m� tvar

\nobreak
\begtt
  ~hotkeys F<N>{<REAKCE>}, ...
\endtt
\noindent
kde <N> je ��slo funk�n� kl�vesy (<N> je v~intervalu 1\dots10) a <REAKCE> je
seznam p��kaz�, kter� se provedou p�i zm��knut� p��slu�n� funk�n� kl�vesy.
Jejich syntaxe a v�znam jsou uvedeny v~p�edchoz�m odstavci~3.7. V~definici
"~hotkeys" lze definovat reakci maxim�ln� des�ti funk�n�ch kl�ves (jsou
odd�leny ��rkami nebo mezerami). Pozor! Zde m��ete redefinovat v�znam
kl�vesy "F1", kter� je standardn� rezervovan� pro helpy. T�m si znemo�n�te
mo�nost konfigurovat helpy.

\bull Definice "~timeout" m� tvar\m "~timeout {"<N>, <REAKCE>"}"~, kde <N> je
cel� ��slo, ud�vaj�c� d�lku �asov� prodlevy v sekund�ch. Pokud se nepracuje
s kl�vesnic� a neh�be se s my�� po dobu, stanovenou �asem <N>,
provede se automaticky <REAKCE> (syntaxe je stejn�, jako v p�edchoz�m
p��pad�). Neuvedete-li "~timeout" nebo je-li $<N> = 0$, program �as
prodlen� nepo��t�.

Nap��klad zhasnut� obrazovky po 30 vte�in�ch
\uv{nicned�l�n�} lze konfigurovat t�eba takto:
\begtt
  ~timeout {30, *"scrblank">0}
\endtt
\noindent
Jednoduch� program {\tt scrblank} je sou��st� \CS\TeX{}u 94. Po jeho
vyvol�n� zhasne obrazovka a po zm��knut� kl�vesy se obnov� p�vodn� stav.

\medskip
Definice "~start" a "~final" mohou obsahovat jako parametry ve slo�en�ch
z�vork�ch stejn� p��kazy, jako v~definici reakce polo�ky.

\bull
Definice "~start" uv�d� seznam p��kaz�, kter� se provedou v~okam�iku startu
programu. Je zde vhodn� pou��t t�eba p��kazy  "!><N>"  na reset v�stupn�ch
soubor�.

Je-li v~definici "~start" uveden p��kaz skoku, program sko�� na uvedenou
polo�ku bez ohledu na obsah environment prom�nn� "MNU". Nen�-li zde p��kaz
skoku uveden, provede se skok podle obsahu environment prom�nn� "MNU".

\bull
Definice "~final" uv�d� seznam p��kaz�, kter� se provedou p�i bezchybn�m
ukon�en� programu v~okam�iku, kdy jsou uzav�ena v�echna okna. Nem� zde
proto smysl pou��vat n�kter� p��kazy. P��kaz skoku a p��kazy "*", "\", se
ignoruj�.

V~okam�iku prov�d�n� p��kaz� z~definice "~final" reprezentuje symbol "#"
��slo naposledy aktivn� polo�ky (textov�). Tento �daj se d� ulo�it do n�jak�ho
z~v�stupn�ch soubor�. T�m je umo�n�no nakonfigurovat n�vrat programu do
stejn� situace, z~jak� byl opu�t�n.

\bull
Definice "~beep" m� tvar\m "~beep {"<FREKVENCE>"," <DELKA>"}"~,
kde <FREKVENCE> definuje frekvenci zvuku a <DELKA> je jeho d�lka
v~milisekund�ch. Takto definovan� zvuk se \uv{ozve} v�dy, kdy� u�ivatel
zm��kne kl�vesu, kterou program neum� interpretovat. V~p��pad� neuveden�
definice "~beep" nebo je-li aspo� jeden parametr nulov�, jsme bez zvuku
(co� je �asto lep��).

\bull Je-li uvedena definice "~mouse" ve tvaru\m
"~mouse {"<REG-CX>"," <REG-DX>"}"~,
pak se p�ebarv� my�� kurzor podle va�eho p��n� vol�n�m syst�mov� slu�by\m
"int 33h"\m se vstupn�mi hodnotami:\m "AX=10", "BX=0", "CX=<REG-CX>" (maska
AND), "DX=<REG-DX>" (maska XOR). Nen�-li tato definice uvedena, bude my��
kurzor �erven� s~b�l�m textem a to kdekoli (tj. barva kurzoru se nebude
m�nit v~z�vislosti na barv� pozad�). Tato implicitn� hodnota odpov�d�
definici\m "~mouse {255, 20224}", tj. maska AND je rovna 00FFh a propust�
hodnotu znaku ale nikoli barevn� atribut a maska XOR m� hodnotu 4F00h
a zm�n� barevn� atribut na �even� pozad� s~b�l�m textem (4Fh) a nech� beze
zm�ny hodnotu znaku. Bohu�el, �daje nelze zad�vat hexadecim�ln�.

\medskip
V�ech �est glob�ln�ch definic mus� p�edch�zet prvn�mu defini�n�mu ��dku okna.
Jinde se ignoruj�.

\subsect 3.9  Editovateln� polo�ka, automatick� polo�ka a zv�razn�n� text v~okn�
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\noindent{\bf Editovateln� polo�ka} m� tvar:

\begtt
  |#<TEXT>|{<REAKCE>}
\endtt

kde

\bull <TEXT> -- je text, kter� se nab�dne k~editov�n�.

\bull <REAKCE> -- je seznam p��kaz�, kter� se provedou po ukon�en� editace
  kl�vesou "Enter" (viz odst.~3.7). Stringy typu \dd<text>\dd, definovan�
  v~t�chto p��kazech, mohou obsahovat znak "#", za kter� se dopln� v�sledek
  editace. Nap��klad \dd"copy # c:"\dd">0" znamen�, �e v�sledkem editace je
  pravd�podobn� n�zev souboru a �e se bude kop�rovat na disk "c:" .

\medskip
\vbox{
{\bf P��klad.} Konstrukce
\begtt
   |#[%file%8]|{"set FILE=#">2, \17}
\endtt

vytvo�� polo�ku, kter� p�i editov�n� nab�dne v�choz� obsah environment
prom�nn� "FILE" (d�lky 8 znak�). Do souboru �. 2 se potom ulo�� text\m
"set FILE="\m n�sledovan� v�sledkem editace. Nakonec se uzav�e st�vaj�c�
okno a sko�� se na polo�ku �. 17. }

Pozn�mka. U~editovateln� polo�ky mus� za zav�rac�m znakem~"|" n�sledovat
znak~"{"~, tak�e v~p��pad� pr�zdn� definice reakce je nutn� ps�t:~"{}".
Tento rozd�l proti needitovateln� polo�ce m� sv�j v�znam: Zav�rac� zna�kou
pro nab�zen� text je dvojznak~"|{", tak�e v~nab�zen�m textu se m��e
vyskytnout znak~"|". To zvy�uje \uv{blbuvzdornost} programu. Nab�zen� text je
toti� v�t�inou prom�nn� veli�ina -- v�sledek z~posledn� editace. U�ivateli
se poda�� v~takov�m p��pad� zhroutit program pouze tehdy, zap��e-li
dvojznak~"|{" nebo dvojznak~"[%". Vezmeme-li v~�vahu, �e u�ivatel m��e
vyslat z~kl�vesnice zhruba sto znak�, je pravd�podobnost chybov�ho
ukon�en� programu zp�soben�ho u�ivatelem zhruba rovna 2/10000.

\goodbreak\medskip

\noindent{\bf Automatick� polo�ka} m� tvar:

\begtt
  |^<TEXT>|
\endtt

\noindent
Jedn� se o~polo�ku, u~kter� se  provede reakce (definovan� ve
slo�en�ch z�vork�ch za n�) okam�it�, jakmile se polo�ka stane aktivn�.
Sta�� \uv{najet} �ipkami na tuto polo�ku a program automaticky reaguje,
jakoby u�ivatel zm��kl "Enter".

Definice reakce mus� b�t specifikovan�, tj. podobn� jako u~editovateln�
polo�ky text polo�ky kon�� dvojznakem~"|{".

Uvnit� textu polo�ky se m��e vyskytovat symbol "^" pro zv�razn�n� p�smene.

Pozor! Pokud automatick� polo�ka otev�r� nov� okno, ve kter�m
nen� specifikovan� rodi�ovsk� (�stupov�) polo�ka, nebo je rodi�ovsk�
polo�ka shodn� s~automatickou polo�kou, pak kl�vesa "Esc"
je vy�azena z~funkce. �stup z~okna toti� zp�sob� uvedenou polo�ku aktivn�,
ale proto�e ona je automatick�, okam�it� se zase toto okno otev�e.

Smysl pou�it� automatick� polo�ky m��e b�t nap��klad v~helpech, pokud
p�i otev�en� r�zn�ch oken helpu pot�ebujeme nab�dnout stejnou nab�dku dal��
volby. Tuto nab�dku nap��klad konfigurujeme do okna s~polo�kou 1000 a do
v�ech oken helpu uvedeme jednu neviditelnou, ale automatickou polo�ku tvaru

\begtt
  |^|{1000}
\endtt

\noindent
Zabere to m�n� m�sta, ne� kop�rov�n� stejn� nab�dky do ka�d�ho okna helpu.
Je t�eba ov�em poznamenat, �e v~okn� s~polo�kou 1000 mus� b�t definov�n
tzv. dvojn�sobn� �stup. Nap�.:

\begtt
  | help1 |{\\1001}
  | help2 |{\\1002}
\endtt

\noindent
Jeden �stup toti� vede pouze do okna se zm�n�nou automatickou polo�kou.

\medskip

\noindent{\bf Zv�razn�n� text} v~okn� lze zapsat ve tvaru:

\begtt
  |!<TEXT>|{}
\endtt

Text se p�ep��e do okna v~barv� neaktivn� polo�ky. Jedn� se p�itom 
o~oby�ejn� text v~okn�, nikoli o~polo�ku. Pou�ije se v�ude tam, kde
pot�ebujeme dvoubarevn� text v~okn�.

V�imn�me si, �e i zde je nutn� uv�st zav�rac� dvojznak "|{" ze stejn�ch
d�vod�, jako tomu bylo u~editovateln� polo�ky. P�edpokl�d� se toti�, �e
zv�razn�n� text m��e m�t prom�nlivou hodnotu ur�enou u�ivatelem.


\sect 4. Chybov� hl��en� a omezen� programu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Program MNU prov�d� p�i �ten� z~konfigura�n�ho souboru syntaktickou
kontrolu. P�i n� m��e nastat kolem �ty�iceti r�zn�ch chyb, na kter� program
reaguje odpov�daj�c�m chybov�m hl��en�m. Nen� t�eba zde uv�d�t seznam v�ech
chybov�ch hl��en�, proto�e nap��klad z~hl��en�\m "'}' expected"\m asi snadno
zjist�me, o~jakou chybu se jedn�. Nav�c program vyp��e ��slo ��dku
konfigura�n�ho souboru, v~n�m� byla chyba nalezena, a text chybn�ho ��dku
vyp��e na obrazovku tak, �e v~m�st� chyby je ��dek \uv{roztr�en} a zbytek
��dku pokra�uje o~stupe� n�� na obrazovce.

Pokud k~chyb� do�lo v~jin� okam�ik, ne� p�i �ten� z~konfigura�n�ho souboru,
��dek s~��slem se neobjev�.

\medskip
Zastavme se nyn� jen u~t�ch chybov�ch hl��en�, kter� souvis� s~jist�mi
omezen�mi programu.

\bull
"! out of memory"\m
K~chyb� dojde, pokud se otev�r�n�m velk�ch oken p�es sebe p�ekro�� rozsah
datov� pam�ti programu, kter� �in� 64 kB. Tato pam�� vysta�� asi na 7
sou�asn� otev�en�ch oken p�es celou obrazovku, co� je bohat� dosta�uj�c�,
proto�e okna p�es celou obrazovku nen� vhodn� otev�rat p�es sebe.

Se�teme-li d�lku k�du programu s~velikost� ur�enou pro jeho datov� struktury,
dostaneme 88 kB pam�ti, tedy prostor, kter� program zab�r� v~opera�n� pam�ti.
Toto je vhodn� v�d�t, spou�t�me-li z~programu ��dkov� procesy, p�i nich�
program neopou�t� opera�n� pam��.

\bull
"! maximal number of open windows is out"\m
Maxim�ln� po�et sou�asn� otev�en�ch oken je~25.

\bull
"! the head is too long"\m
Maxim�ln� d�lka textu z�hlav� v~okn� je 35 znak�.

\bull
"! max 25 items in one window is allowed"\m
P�ekro�en maxim�ln� po�et polo�ek v~okn�. Vzhledem k~tomu, �e nem�me v�ce
��dk� na obrazovce a �e nen� vhodn� polo�ky situovat do matice (program
v~takov�m p��pad� nereaguje na ovl�d�n� �ipkami zp�sobem, jak� bychom
o�ek�vali), nen� toto omezen� podstatn�.

\bull
"! the file number in interval 2..9 expected"\m
Po�et vstupn�ch a v�stupn�ch soubor� je omezen na~8 (nepo��t�n konfigura�n�
soubor).

\bull
"! stack of input files overflow"\m
Maxim�ln� po�et do sebe vno�en�ch vstupn�ch soubor� (tj. substitu�n�
konstrukce je nahrazena textem souboru se substitu�n� konstrukc� atd.)
je omezen na~8.

\bull
"! the SIZE parameter is too long"\m
Parametr <DELKA> v~substitu�n� konstrukci je tak velk�, �e po substituci je
p�ekro�ena maxim�ln� d�lka vstupn�ho ��dku, kter� �in� 255 znak�.


\sect 5. N�vrh konfigurace CS\TeX u~s~programem MNU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Tato dokumentace k~programu, jako sou��st bal�ku \CS\TeX, m� kapitolu 5
podstatn� stru�n�j��, ne� origin�ln� dokumentace. Funguj�c� \CS\TeX\
je toti� nejvhodn�j��m p��kladem pou�it� programu MNU.

V~konfiguraci \CS\TeX u, kterou nab�z� \CS TUG, je program MNU pou�it
s~konfigura�n�m souborem "cfg.doc" a ��d�c� d�vkou "texbat.bat". D�le zde
najdete konfigura�n� soubor "sorry.mnu", pomoc� n�ho� program MNU vyjad�uje
l�tost nad t�m, �e po�adovan� software nen� instalov�n a kone�n� soubor
"inibat.mnu", kter� spole�n� se souborem "inibat.bat" zabezpe�uj� snadnou
inicializaci \TeX u~(generov�n� form�t�). Dokumentace k~t�to konfiguraci je
v~souboru "cfg.doc".

D�le je program MNU pou�it jako sou��st instala�n�ch d�vek \CS\TeX u.
Zde najdete na disket� "CSTeX-1" konfigura�n� soubor "i1.mnu", kter�
ohl�s� start instalace a zept� se na disk a cestu, kam instalovat \CS\TeX.
D�le konfigura�n� soubor "i2.mnu", pomoc� n�ho� prob�hne cel� dotazovac�
f�ze instalace, a kone�n� soubor "i3.mnu", v~n�m� jsou naps�ny r�zn�
pomocn� hl��ky, pou�it� p�i instalaci. Cel� instalace je ��zena t�emi
hlavn�mi d�vkami "krok1.bat", "krok2.bat" a "krok3.bat". Podrobn�
dokumentace k~jednotliv�m d�vk�m je v~souboru "install.doc".

Proto�e zobrazov�n� u�ivatelsk�ho \uv{menu} p�i p��prav� dokumentu je
��zeno hlavn� konfigura�n�m souborem "cfg.mnu", pod�vejme se nyn� na n�j
podrobn�ji. Formou ot�zek a odpov�d� se pozastav�me nad n�kter�mi obraty
v~tomto souboru. Zam���me se na ty ��sti souboru, kter� po studiu
dokumentace nemus� b�t �pln� z�ejm�.

\quest Kde hledat polo�ku 100 definovanou v~��dku: " ^ 100 \"

\answ Tato polo�ka neexistuje. Jedn� se o~p��pad, kdy je v~okn� m�n� polo�ek
   (zde nula polo�ek) ne� je stanoveno v~defini�n�m ��dku okna. Okno se p�i
   vol�n� polo�ky otev�e, ale ��dn� polo�ka nebude aktivn�. Okno je zde
   vol�no jako rodi�ovsk� okno oknem se z�kladn�m menu. Stisknut� kl�vesy
   "Esc" v~okam�iku, kdy je rozvinuto jen z�kladn� menu nezp�sob� p�echod
   na neexistuj�c� polo�ku 100, proto�e okno je definov�no jako automaticky
   zav�rateln� (znak "\").

\quest Pro� ve\m "Formats menu"\m je ulo�en v�sledek v�b�ru (nap�. "amstex") nejen
   do p��slu�n� environment prom�nn�, ale i do souboru 2 v~podob�\m
   \dd"set FMT=amstex"\dd">2".

\answ  P��kaz\m \dd"amstex"\dd">FMT"\m m� lok�ln� charakter v~r�mci programu
   MNU a proto�e n�sleduje vymaz�n� v�ech oken (p��kaz "*") a skok na
   polo�ku 61, obnov� se t�� obsah okna s~neexistuj�c� polo�kou 100, v~n�m�
   je pro u�ivatele informace o~vybran�m form�tu. Naproti tomu p��kaz\m
   \dd"set FMT=amstex"\dd">2"\m umo�n� p�edat informaci o~vybran�m form�tu
   ��d�c� d�vce prost�ednictv�m souboru 2, tj. souboru "envir.bat".
   Nav�c se zde krom� prom�nn� "FMT" du�ln� nastav� i prom�nn� "FFMT",
   kter� ovlivn� vzhled polo�ky 32: "TEX/TEX". Jist� jste si v�imli, �e tato
   polo�ka m� vzhled z�visl� na pou�it�m form�tu.

\quest  Jak m�m rozum�t definic�m polo�ek v~"Diskette menu".

\answ  Environment prom�nn� "AR" ozna�uje sm�r kopie (z nebo na disk) a
   prom�nn� "D" je p�smeno vybran� �achty pro disketu (bu� A~nebo B). 
   S~ob�ma prom�nn�ma d�vka bude pracovat a proto jsou hodnoty ulo�eny do
   souboru "envir.bat" ve tvaru p��kazu "set". Hodnota "D" je ulo�ena nav�c
   lok�ln�, proto�e bude pou�ita p�i otev�en� okna s~polo�kou 105 (je tam
   prom�nliv� text tvaru: "Insert diskette to drive [%D%]" ).

\quest  U~\uv{Z�v�re�n� ot�zky} taky nesouhlas� po�et ��sel v~definici okna
   s~po�tem polo�ek. Na rozd�l od okna 100 je tomu tentokr�t naopak -- m�n�
   ��sel ne� polo�ek.

\answ  Na polo�ku 0 (tj. "Yes") se sko�� v~okam�iku zav�en� v�ech oken, tedy
   p�i zm��knut� "Esc" v~hlavn�m menu. Polo�ka "No" nemus� m�t ��slo,
   proto�e z~n� program nevystupuje, ale otev�r� okno s~polo�kou~3.

\quest  Jak za��dit z�v�re�nou ot�zku, v~n�� se implicitn� nab�dne "No".

\answ  V~definici okna nap��eme nap�.: " ^ 1, 0 "; a v~��d�c� d�vce zaru��me
   pomoc� p��kaz� "if errorlevel", �e se d�vka ukon�� v~p��pad� "errorcode=1".

\quest  Pro� v\m "Print menu"\m se vyskytuj� polo�ky se stejn�m ��slem ?

\answ   Polo�ky vracej� stejn� ��slo do v�stupn�ho error-k�du programu.
   To nen� nic neobvykl�ho. D�vka "prints.bat" toti� v�tv� svou �innost
   nejen podle "errorlevel", podle tak� podle hodnot prom�nn�ch "DPI" a
   "MARK". Tyto hodnoty se ulo�� v~z�vislosti na pou�it� polo�ce.

\quest  Zd� se tedy, �e lze ��d�c� d�vku v�tvit nejen podle error-k�du, ale
    i podle hodnot environmentu.

\answ  Ano. Dovedeno do d�sledku se v�bec nemus� v�tven� podle error-k�du
    pou��t. Sta�� v~d�vce napsat:
\begtt
    mnu config.mnu envir.bat
    call envir
    goto %LABEL%
\endtt
\hangindent\parindent
    a v~souboru "config.mnu" se postarat o~ulo�en� hodnoty "LABEL"
    prost�ednictv�m souboru "envir.bat".

\quest Pro� se p�i zad�v�n� n�zv� soubor� ("File names") opou�t� program
   MNU . U�ivatel�m se m��e zd�t odezva v~tomto m�st� zbyte�n� dlouh�.

\answ  Pokud je odesl�n pr�zdn� string, vyvol� se extern� program PICKFILE
   pro snadn� vybr�n� souboru z~nab�dky soubor�.

\quest Ne�lo by nab�dku soubor� za�adit jako integrovanou sou��st programu
   MNU ?

\answ  Ano, v�echno by �lo. Ostatn� taky by �lo program MNU zcela p�ed�lat.

\quest  Pro� nap��klad v polo�ce\m "Print - Laser"\m se do souboru
   "envir.bat" ukl�d� ��dek
\begtt
    "set MARK=[%OUTHP%]">2
\endtt
    bez po�adavku na duplikov�n� procent?

\answ  Hodnota prom�nn� "OUTHP" m��e obsahovat text tvaru\m "%MAIN%"~.
    P�i volb� polo�ky pro tisk je t�eba substituovat za tento text
    aktu�ln� hodnotu prom�nn� "MAIN". To se provede v~d�vce "envir.bat"
    pouze tehdy, kdy� nebudeme duplikovat procenta.

\quest  V~definici editovateln� polo�ky v~"METAFONT parameters" je chyba!
   V~��dku
\begtt
    METAFONT  |#[%4% 31, 1, 66]|{!>4, "[%4% 1, 1, 30]#">4}
\endtt
\hangindent\parindent
   se nejprve na�te od 31. znaku do konce ��dku text v~d�lce 76 znak� ze
   souboru 4 ("mfbat.bat") a potom se soubor resetuje p��kazem "!>4".
   Tak�e konstrukce "[%4% 1, 1, 30]" mus� vr�tit z~resetovan�ho souboru
   pr�zdn� string a nikoli prvn�ch 30 znak� souboru, jak zam��l� autor t�to
   definice polo�ky.

\answ  Blahop�eji. Pokud jste tuto nesrovnalost sami odhalili, je vid�t, �e
   jste pozorn�mi �ten��i dokumentace. Tam se toti� nezd�raz�uje okam�ik,
   kdy se prov�d� substituce v~konstrukc�ch "[%..]". K~substituci doch�z�
   b�hem otev�en� okna a ve�ker� text souvisej�c� s~otev�en�m oknem se
   podr�� v~substituovan�m stavu v~pam�ti. P��kazy, kter� definuj� reakci
   polo�ky se vykonaj� a� pot�, co dojde k~v�b�ru polo�ky kl�vesou "Enter".
   Tyto p��kazy se u� ne�tou ze souboru, ale z~pam�ti, kde jsou substituce
   d�vno provedeny. Proto to funguje tak, jak m�.


\sect 6. Zm�ny vzhledem k~verzi, ���en� na konferenci Euro\TeX'92
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Verze z~30.1.1993 se od verze z~konference (15.9.1992) li�� v~n�sleduj�c�ch
bodech:

\begitems
* Jsou opraveny chyby, kter� se mi poda�ilo objevit.
* Z~editovateln� polo�ky lze sk�kat na n�sleduj�c� a p�edch�zej�c� polo�ku
  pomoc� �ipek nahoru a dolu, pokud je�t� neza�ala editace.
* Program p�i startu nab�dne kurzor my�i v~druh� pozici v�choz� aktivn�
  polo�ky a nikoli uprost�ed obrazovky. Reagoval jsem na n�vrh kol. W�gnera.
* Lze konfigurovat tzv. \uv{hork�} kl�vesy (viz definice "~hotkeys"
  v~odst.~3.8). Reagoval jsem na n�vrh koleg� z~konference.
* Mo�nost ukon�en� programu s~explicite zadan�m error-k�dem, nez�visl�m na
  ��sle polo�ky (p��kaz "$" v~odst.~3.7).
* Nyn� (s~v�jimkou okna helpu) neexistuj� polo�ky bez ��sla. Viz odst.~3.5.
* Mo�nost ulo�en� ��dku s~duplikovan�mi procenty (viz pozn�mka
  o p��kazu ">%" v~odstavci~3.7).
* Mo�nost konfigurace tzv. \uv{automatick� polo�ky} (viz odst.~3.9).
\enditems

1.~12.~1993
\begitems
* Opravena nespr�vn� lokalizace editovateln� polo�ky v okn� bez r�me�ku.
* Za�azena glob�ln� definice "~timeout" (viz odst.~3.8).
\enditems

1.~6.~1995
\begitems
* Opravena chyba ��dkov�ho editoru -- neum�l p�ijmout znak s k�dem 128.
\enditems

5.~7.~1995
\begitems
* Zaveden re�im \uv{autoCR} v ��dkov�m editoru a povel {\tt CR+} a {\tt CR-}
  (viz odst.~3.7).
\enditems

7.~9.~1995
\begitems
* Opraveno nespr�vn� chov�n� prav�ho tla��tka my�i na ��dkov�m editoru
  (chyba byla d�sledkem z�sahu z 1. 6. 1995).
\enditems


V�echny zm�ny, t�kaj�c� se syntaxe konfigura�n�ho souboru, jsou provedeny
tak, aby konfigura�n� soubory napsan� pod starou verz� programu pracovaly
zcela stejn� i pod novou verz�.

\bye

