diff options
author | Karl Berry <karl@freefriends.org> | 2016-04-22 22:14:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-04-22 22:14:39 +0000 |
commit | fc4466b32ed330a956ac603b00fd145524cff49a (patch) | |
tree | 2c50e2b8de13aa9233b2c76dffe201558f169e86 /Master/texmf-dist/tex/context/base/scrn-fld.mkvi | |
parent | 50e2368597d5f6fe2057195d0ae6a9f2044923e4 (diff) |
context (22apr16)
git-svn-id: svn://tug.org/texlive/trunk@40691 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/scrn-fld.mkvi')
-rw-r--r-- | Master/texmf-dist/tex/context/base/scrn-fld.mkvi | 1037 |
1 files changed, 0 insertions, 1037 deletions
diff --git a/Master/texmf-dist/tex/context/base/scrn-fld.mkvi b/Master/texmf-dist/tex/context/base/scrn-fld.mkvi deleted file mode 100644 index 4b4c9d0eeca..00000000000 --- a/Master/texmf-dist/tex/context/base/scrn-fld.mkvi +++ /dev/null @@ -1,1037 +0,0 @@ -%D \module -%D [ file=scrn-fld, -%D version=1997.05.18, -%D title=\CONTEXT\ Screen Macros, -%D subtitle=Fields, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -% There is still some leftover code from mkii, where we need to -% be sparse with hash entries and so have a somewhat complex -% setup mechanism. - -% interaction checking - -\writestatus{loading}{ConTeXt Screen Macros / Fields} - -\unprotect - -\registerctxluafile{scrn-fld}{1.001} - -%D In \MKII\ we had to cheat a bit with setups in order not to run -%D out of memory with thousands of fields, which we happen to need at -%D that time. In \MKIV\ we can store some data at the \LUA\ end and -%D use a somewhat slower but quite okay inheritance mechanism. For -%D this reason we now have split definitions, although the old method -%D is still somewhat supported. The clone and copy commands are -%D somewhat obsolete for several reasons: we can now use inheritance -%D and autocloning has been supported for a while. In most cases -%D cloning (especially with check boxes) the acrobat browser is not -%D stable enough with respect to appearance handling. -%D -%D A fieldcategory is nothing more than a collection of settings. -%D -%D \starttyping -%D \definefieldcategory -%D [all-email] -%D [height=1cm, -%D width=14cm, -%D style=sstf] -%D \stoptyping -%D -%D A definition can refer to this category: -%D -%D \starttyping -%D \definefieldbody [email] [type=line,category=all-email,default=pragma@wxs.nl] -%D \stoptyping -%D -%D A copy of a field is made as follows: -%D -%D \starttyping -%D \definefieldbody [xmail] [email] -%D \stoptyping -%D -%D You can also be more specific: -%D -%D \starttyping -%D \definefieldbody[buttona][type=check,values={one,two}] -%D \definefieldbody[buttonb][type=check,values={three,four}] -%D \definefieldbody[buttonc][buttona][values={three,four}] -%D \stoptyping -%D -%D Actually typesetting a field happens this way: -%D -%D \starttyping -%D \fieldbody [Email] -%D \fieldbody [Email] [width=6cm] -%D \fieldbody [eMAIL] -%D \fieldbody [eMAIL] [width=7cm] -%D -%D \fieldbody [buttona] -%D \fieldbody [buttona] -%D \fieldbody [buttonb] -%D \fieldbody [buttonb] -%D \fieldbody [buttonc] -%D \fieldbody [buttonc] -%D \stoptyping -%D -%D So, you can call up a field many times and quite some parameters -%D can be set. -%D -%D Because there are persistent problems with acrobat rendering -%D associated appearance streams (some messy /MK interferende) we -%D also support native (built-in dingbat) symbols: check, circle, -%D cross, diamond, square and star. -%D -%D \starttyping -%D \definefield[test1][check] -%D \definefield[test2][check] -%D -%D \fieldbody[test1][width=1em,height=\strutht,depth=\strutdp,symbol=check] -%D \fieldbody[test1][width=1em,height=\strutht,depth=\strutdp,symbol=circle] -%D \fieldbody[test2][width=1em,height=\strutht,depth=\strutdp,symbol=square] -%D \stoptyping -%D -%D When submitting a form, we need to tell the driver module -%D that we want \FDF\ or \HTML. - -\installcorenamespace {forms} - -\installdirectcommandhandler \??forms {forms} - -\appendtoks - \clf_setformsmethod{\formsparameter\c!method}% -\to \everysetupforms - -\setupforms - [\c!method=XML] % no need for everyjob initialization as this is the default - -\appendtoks - \iflocation - \clf_exportformdata{\formsparameter\c!export}% - \fi -\to \everystoptext - -%D We need to initialize symbols in a special way so that they -%D can be used as rendering for a widget. - -\unexpanded\def\presetfieldsymbols[#list]% slow - {\processcommacommand[#list]\scrn_symbols_preset} - -\def\scrn_symbols_preset#set% - {\processcommalist[#set]\scrn_symbols_preset_indeed}% - -\def\scrn_symbols_preset_indeed#tag% - {\doifelseobjectfound{SYM}{#tag} - {} - {\settightobject{SYM}{#tag}\hbox{\symbol[#tag]}% % todo: set this as immediate xform - \page_otr_add_special_content{\hskip-\maxdimen\getobject{SYM}{#tag}}}} % and then force it into the file - -\let\dosetfieldsymbol\scrn_symbols_preset_indeed - -\def\dogetfieldsymbol#tag% - {\getobject{SYM}{#tag}} - -\unexpanded\def\definedefaultsymbols % used ? - {\definesymbol[defaultyes][\mathematics{\times}]% - \definesymbol[defaultno] [\mathematics{\cdot }]} - -% \def\resetfieldsymbol[#tag]% for experimental usage only -% {\resetobject{SYM}{#tag}} - -%D Now comes the real code: - -\installcorenamespace{fieldcategory} -\installcorenamespace{fieldbody} - -\installcommandhandler \??fieldcategory {fieldcategory} \??fieldcategory -\installcommandhandler \??fieldbody {fieldbody} \??fieldbody - -\newbox\b_scrn_field_body - -\setupfieldcategory - [\c!alternative=\v!normal, % normal clone copy - \c!type=\v!line, % line text ... - \c!width=5em, - \c!height=1em, - \c!depth=\zeropoint, - \c!align=\v!flushleft, - \c!option=\v!printable, % maybe we need a globaloptions and marge them - \c!n=1024] - -\def\scrn_field_check_category - {\edef\currentfieldbodycategory{\fieldbodyparameter\c!category}% - \ifx\currentfieldbodycategory\empty - \letfieldbodyparameter\s!parent\??fieldcategory - %\setevalue{\currentfieldbodyhash\s!parent}{\namedfieldcategoryhash\empty}% to WS: not hash ! - \else - \normalexpanded{\setfieldbodyparameter{\s!parent}{\??fieldcategory\currentfieldbodycategory}}% - %\setevalue{\currentfieldbodyhash\s!parent}{\namedfieldcategoryhash\currentfieldbodycategory}% to WS: not hash ! - \fi} - -\appendtoks % we cannot use parent .. maybe s!parent has to change - \ifx\currentfieldbodyparent\empty - \scrn_field_check_category - \clf_definefield - name {\currentfieldbody}% - alternative {normal}% - type {\fieldbodyparameter\c!type}% - category {\fieldbodyparameter\c!category}% - values {\fieldbodyparameter\c!values}% - default {\fieldbodyparameter\c!default}% - \relax - \else - \clf_clonefield - children {\currentfieldbody}% - alternative {clone}% - parent {\currentfieldbodyparent}% - category {\fieldbodyparameter\c!category}% - values {\fieldbodyparameter\c!values}% - default {\fieldbodyparameter\c!default}% - \relax - \fi -\to \everydefinefieldbody - -\unexpanded\def\fieldbody - {\dodoubleempty\scrn_field_body} - -\def\scrn_field_body[#tag][#settings]% - {\iflocation - \hbox\bgroup - \edef\currentfieldbody{#tag}% - \ifsecondargument - \setupcurrentfieldbody[#settings]% - \fi - \scrn_field_body_typeset - \box\b_scrn_field_body - \egroup - \fi} - -\def\scrn_field_body_typeset % todo: fieldsymbol (checkfields /MK mess) - {\edef\currentfieldframecolor{\fieldbodyparameter\c!fieldframecolor}% - \ifx\currentfieldframecolor\empty\else - \getcolorattributevalue\currentfieldframecolor\currentfieldframecolorvalue - % == \edef\currentfieldframecolorvalue{\thecolorattribute\currentfieldframecolor}% - \fi - \edef\currentfieldbackgroundcolor{\fieldbodyparameter\c!fieldbackgroundcolor}% - \ifx\currentfieldbackgroundcolor\empty\else - \getcolorattributevalue\currentfieldbackgroundcolor\currentfieldbackgroundcolorvalue - % == \edef\currentfieldbackgroundcolorvalue{\thecolorattribute\currentfieldbackgroundcolor}% - \fi - \usefieldbodystyleandcolor\c!style\c!color - \clf_insertfield - {\currentfieldbody}% - {% - title {\currentfieldbody} - width \dimexpr\fieldbodyparameter\c!width \relax - height \dimexpr\fieldbodyparameter\c!height\relax - depth \dimexpr\fieldbodyparameter\c!depth \relax - align {\fieldbodyparameter\c!align}% - length {\fieldbodyparameter\c!n}% - fontstyle {\fontstyle}% - fontalternative {\fontalternative}% - fontsize {\fontbody}% - fontsymbol {\fieldbodyparameter\c!symbol}% - color {\fieldbodyparameter\c!color}% - colorvalue \attribute\colorattribute - \ifx\currentfieldbackgroundcolor\empty \else - backgroundcolor {\currentfieldbackgroundcolor}% - backgroundcolorvalue \numexpr\currentfieldbackgroundcolorvalue\relax - \fi - \ifx\currentfieldframecolor\empty \else - framecolor {\currentfieldframecolor}% - framecolorvalue \numexpr\currentfieldframecolorvalue\relax - \fi - layer {\fieldbodyparameter\c!fieldlayer}% - option {\fieldbodyparameter\c!option}% - align {\fieldbodyparameter\c!align}% - clickin {\fieldbodyparameter\c!clickin}% - clickout {\fieldbodyparameter\c!clickout}% - regionin {\fieldbodyparameter\c!regionin}% - regionout {\fieldbodyparameter\c!regionout}% - afterkey {\fieldbodyparameter\c!afterkey}% - format {\fieldbodyparameter\c!format}% - validate {\fieldbodyparameter\c!validate}% - calculate {\fieldbodyparameter\c!calculate}% - focusin {\fieldbodyparameter\c!focusin}% - focusout {\fieldbodyparameter\c!focusout}% - openpage {\fieldbodyparameter\c!openpage}% - closepage {\fieldbodyparameter\c!closepage}% - }% - \relax} - -%D The sets are used in grouped calculations. -%D -%D [name] [set] - -\unexpanded\def\definefieldbodyset - {\dodoubleempty\scrn_field_define_set} - -\def\scrn_field_define_set[#tag][#list]% - {\clf_definefieldset{#tag}{#list}} - -\let\dodefinefieldset\definefieldbodyset % compatibility - -%D A few testing macros: - -\def\doifelsefieldbody #tag{\clf_doifelsefield{#tag}} -\def\doifelsefieldcategory#tag{\clf_doifelsefieldcategory{#tag}} - -\let\doiffieldbodyelse \doifelsefieldbody -\let\doiffieldcategoryelse\doifelsefieldcategory - -\let\doiffieldelse \doifelsefieldbody % compatibility / will be dropped -\let\doifelsefield \doifelsefieldbody % compatibility / will be dropped - -%D We still support the traditional method of defining fields: -%D -%D \starttyping -%D \definefield [name] [type] [category] [values] [default] -%D -%D \definefield [WWWW] [text] [textsetup] [default text] -%D \definefield [XXXX] [push] [pushsetup] [yes,no] [yes] -%D \definefield [XXXX] [check] [checksetup] [yes,no] [yes] -%D \definefield [YYYY] [combo] [combosetup] [a,b,c,d] [b] -%D \definefield [ZZZZ] [radio] [radiosetup] [W,X,Y,Z] [Y] -%D -%D \definesubfield [W] [subsetup] [p,q] -%D \definesubfield [X,Y] [subsetup] [p,r] -%D \definesubfield [Z] [subsetup] [y,z] -%D -%D evt \definemainfield ... wanneer geplaatst voor subs gegeven -%D -%D \clonefield [XXXX] [XX,YY] [mysetup] [on,off] -%D \clonefield [Z] [AA,BB] [somesetup] [true,false] -%D \clonefield [Z] [CC,DD] [anothersetup] -%D -%D \copyfield [XXXX] [PP,QQ,RR] -%D \stoptyping -%D -%D Keep in mind that you can also use \type {\definefieldbody} to -%D achieve the same. - -\unexpanded\def\definefield {\doquintupleempty\scrn_field_define_field} -\unexpanded\def\definesubfield{\dotripleempty \scrn_field_define_subfield} -\unexpanded\def\clonefield {\doquadrupleempty\scrn_field_clone_field} -\unexpanded\def\copyfield {\dodoubleempty \scrn_field_copy_field} - -\let\definemainfield\definefield % obsolete ! - -\def\scrn_field_define_field[#tag][#type][#category][#values][#default]% - {\definefieldbody[#tag][\c!type=#type,\c!category=#category,\c!values={#values},\c!default={#default}]} - -\def\scrn_field_define_subfield[#tag][#category][#values]% - {\definefieldbody[#tag][\c!type=sub,\c!category=#category,\c!values={#values}]} - -\def\scrn_field_clone_field[#parent][#tag][#category][#values]% - {\definefieldbody[#tag][#parent][\c!category=#category,\c!values={#values}]} - -\def\scrn_field_copy_field[#parent][#tag]% - {\definefieldbody[#tag][#parent]} - -%D We hook fields into the (viewer based) layering mechanism -%D (implemented as properties). - -\appendtoks - \let\currentfieldcategory\empty - \doifelse{\interactionparameter\c!fieldlayer}\v!auto - {\setupcurrentfieldcategory[\c!fieldlayer=\currentviewerlayer]}% - {\setupcurrentfieldcategory[\c!fieldlayer=]}% -\to \everysetupinteraction - -\setupinteraction - [\c!fieldlayer=\v!auto] % auto by default - -%D The \type {\fieldbody} is the more bare one. One step further goes -%D \type {\fitfield}, in fact it (now) uses a dedicated instance of -%D framed: \type {fitfieldframed}. -%D -%D \starttyping -%D \ruledhbox{\fieldbody[Email][height=\strutht,depth=\strutdp,style=normal]} -%D \ruledhbox{\fitfield[Email][height=\strutht,depth=\strutdp,style=normal]} -%D \ruledhbox{\fitfield[buttona]} -%D \stoptyping - -\newbox\b_scrn_field_fit_symbol - -\defineframed - [fitfieldframed] - [\c!strut=\v!no, - \c!frame=off, - \c!offset=\v!overlay, - \c!align=] - -\unexpanded\def\fitfield - {\dodoubleempty\scrn_field_fit} - -\def\scrn_field_fit[#tag][#settings]% - {\iflocation - \begingroup - \edef\currentdefaultfieldvalue{\clf_getdefaultfieldvalue{#tag}}% - \setbox\b_scrn_field_fit_symbol\hbox{\symbol[\currentdefaultfieldvalue]}% - \fitfieldframed - {\fieldbody[#tag] - [\c!width=\wd\b_scrn_field_fit_symbol, - \c!height=\ht\b_scrn_field_fit_symbol, - \c!depth=\dp\b_scrn_field_fit_symbol, - #settings]}% - \endgroup - \fi} - -%D The traditional field command does some labeling and -%D boxing: - -\installcorenamespace{fieldlabel} -\installcorenamespace{fieldcontent} -\installcorenamespace{fieldtotal} - -\installparameterhandler \??fieldlabel {fieldlabelframed} -\installparameterhandler \??fieldcontent {fieldcontentframed} -\installparameterhandler \??fieldtotal {fieldtotalframed} - -\installsetuphandler \??fieldlabel {fieldlabelframed} -\installsetuphandler \??fieldcontent {fieldcontentframed} -\installsetuphandler \??fieldtotal {fieldtotalframed} - -\installinheritedframed {fieldlabelframed} -\installinheritedframed {fieldcontentframed} -\installinheritedframed {fieldtotalframed} - -\unexpanded\def\setupfield {\doquintupleempty\scrn_field_setup_field} -\unexpanded\def\setupfields{\doquadrupleempty\scrn_field_setup_fields} - -\setupfieldcontentframed - [\c!align=\v!flushleft, - \c!strut=\v!no, - \s!parent=\??regularframed] % needs checking - -\setupfieldcontentframed % independent - [\c!alternative=\v!normal, - \c!type=\v!line, - \c!width=5em, - \c!height=\lineheight, - \c!depth=\zeropoint, - \c!align=\v!flushleft, - \c!option=\v!printable, - \c!n=1024] - -\setupfieldlabelframed - [\c!style=, - \c!color=, - \c!align=\v!flushleft, - \s!parent=\??regularframed] % needs checking - -\setupfieldtotalframed - [%\c!alternative={\v!label,\v!frame,\v!horizontal}, - \c!strut=\v!no, - \c!align=, - \s!parent=\??regularframed] % needs checking - -% \setupcurrent - -\def\scrn_field_setup_field[#tag][#variant][#totalsettings][#labelsettings][#fieldsettings]% - {\iffifthargument - \definefieldcategory[#tag][\s!parent=\??fieldcontent#tag,#fieldsettings]% - \setupfieldtotalframed [#tag][\s!parent=\??fieldtotal,\c!alternative={#variant},#totalsettings]% - \setupfieldlabelframed [#tag][\s!parent=\??fieldlabel,#labelsettings]% - \setupfieldcontentframed[#tag][\s!parent=\??fieldcontent,#fieldsettings]% - \else\iffourthargument - \definefieldcategory[#tag][\s!parent=\??fieldcontent#tag,#labelsettings]% - \setupfieldtotalframed [#tag][\s!parent=\??fieldtotal,\c!alternative={#variant},#totalsettings]% - \setupfieldlabelframed [#tag][\s!parent=\??fieldlabel]% - \setupfieldcontentframed[#tag][\s!parent=\??fieldcontent,#labelsettings]% - \else\ifthirdargument - \definefieldcategory[#tag][\s!parent=\??fieldcontent#tag,#totalsettings]% - \setupfieldtotalframed [#tag][\s!parent=\??fieldtotal,\c!alternative={#variant}]% - \setupfieldlabelframed [#tag][\s!parent=\??fieldlabel]% - \setupfieldcontentframed[#tag][\s!parent=\??fieldcontent,#totalsettings]% - \else\ifsecondargument - \definefieldcategory[#tag][\s!parent=\??fieldcontent#tag,#variant]% - \setupfieldtotalframed [#tag][\s!parent=\??fieldtotal]% - \setupfieldlabelframed [#tag][\s!parent=\??fieldlabel]% - \setupfieldcontentframed[#tag][\s!parent=\??fieldcontent,#variant]% - \fi\fi\fi\fi} - -\def\scrn_field_setup_fields[#variant][#totalsettings][#labelsettings][#fieldsettings]% - {\iffourthargument - \setupfieldtotalframed [\c!alternative={#variant},#totalsettings]% - \setupfieldlabelframed [#labelsettings]% - \setupfieldcontentframed[#fieldsettings]% - \else\ifthirdargument - \setupfieldtotalframed [#variant]% - \setupfieldlabelframed [#totalsettings]% - \setupfieldcontentframed[#labelsettings]% - \else\ifsecondargument - \setupfieldtotalframed [#variant]% - \setupfieldcontentframed[#totalsettings]% - \else - \setupfieldtotalframed [#variant]% - \fi\fi\fi} - -% just to get the chain right for no category: - -\definefieldcategory [][\s!parent=\??fieldcontent] -%setupfieldtotalframed [][\s!parent=\??fieldtotal] -%setupfieldlabelframed [][\s!parent=\??fieldlabel] -%setupfieldcontentframed[][\s!parent=\??fieldcontent] - -% no longer supported: - -\let\resetfields\relax - -\def\scrn_field_load_scripts{\useJSscripts[fld]\globallet\scrn_field_load_scripts\relax} - -\newconditional\fieldlabelshown -\newconditional\fieldframeshown -\newconditional\fieldisvertical -\newconditional\fieldishorizontal - -\unexpanded\def\field - {\dodoubleempty\scrn_field_direct} - -\def\scrn_field_direct[#tag][#label]% can be sped up with \setupcurrentfieldtotalframed etc - {\iflocation - \dontleavehmode - \begingroup - \scrn_field_load_scripts - \edef\currentfieldbody {#tag}% - \edef\currentfieldlabel {#label}% - \edef\currentfieldcategory{\clf_getfieldcategory{#tag}}% - \ifx\currentfieldlabel\empty - \let\currentfieldlabel\currentfieldbody - \fi - \ifx\currentfieldcategory\empty - \setupfieldtotalframed [\currentfieldbody][\s!parent=\??fieldtotal]% - \setupfieldlabelframed [\currentfieldbody][\s!parent=\??fieldlabel]% - \setupfieldcontentframed[\currentfieldbody][\s!parent=\??fieldcontent]% - \definefieldcategory [\currentfieldbody]% - \setupfieldbody [\currentfieldbody][\c!category=\currentfieldbody]% - \let\currentfieldcategory\currentfieldbody - \fi - \let\currentfieldtotalframed \currentfieldcategory - \let\currentfieldlabelframed \currentfieldcategory - \let\currentfieldcontentframed\currentfieldcategory - \scrn_field_analyze_setups - \ifconditional\fieldframeshown - \inheritedfieldtotalframedframed % lower framedoffset - \bgroup - \else - \vbox - \bgroup - \fi - \dontcomplain - \ifconditional\fieldlabelshown - \scrn_field_set_label_box - \fi - \scrn_field_set_content_box - \ifconditional\fieldlabelshown - \ifconditional\fieldisvertical - \scrn_field_flush_vertical - \else - \scrn_field_flush_horizontal - \fi - \else - \scrn_field_flush_content - \fi - \egroup - \endgroup - \fi} - -% opties: veld, label, kader, vertikaal/horizontaal - -\newbox\b_scrn_field_label -\newbox\b_scrn_field_content - -% lower framedoffset - -\def\scrn_field_set_label_box - {\setbox\b_scrn_field_label\hbox - {\reshapeframeboxtrue % else wrong dimensions % still needed? - \inheritedfieldlabelframedframed - {\currentfieldlabel}}} - -% \c!fieldoffset=-\framedoffset,\c!fieldbackgroundcolor=, -% \hbox{\lower\@@fdfieldoffset\hbox{\typesetfield}} - -\def\scrn_field_set_content_box - {\setbox\b_scrn_field_content\hbox - {\reshapeframeboxtrue % else wrong dimensions (to be checked) - \doifnothing{\fieldcontentframedparameter\c!height} - {\ifconditional\fieldisvertical - \setfieldcontentframedparameter\c!height{6ex}% - \else\ifconditional\fieldishorizontal - \setfieldcontentframedparameter\c!height{\vsize}% - \else - \setfieldcontentframedparameter\c!height{2cm}% - \fi\fi}% - \doifnothing{\fieldcontentframedparameter\c!width} - {\ifconditional\fieldisvertical - \setfieldcontentframedparameter\c!width{\hsize}% - \else\ifconditional\fieldishorizontal - \setfieldcontentframedparameter\c!width{20em}% - \else - \setfieldcontentframedparameter\c!width{2cm}% - \fi\fi}% - \inheritedfieldcontentframedframed % lower framedoffset - {\fieldbody - [\currentfieldbody] - [\c!width=\framedwidth,\c!height=\framedheight]}}} - - -\def\scrn_field_flush_vertical - {\vbox - {\copy\b_scrn_field_label - \fieldtotalframedparameter\c!inbetween - \copy\b_scrn_field_content}} - -\def\scrn_field_flush_horizontal - {\hbox - {\vbox \ifdim\ht\b_scrn_field_content>\ht\b_scrn_field_label to \ht\b_scrn_field_content \fi - {\fieldtotalframedparameter\c!before - \copy\b_scrn_field_label - \fieldtotalframedparameter\c!after}% - \hskip\fieldtotalframedparameter\c!distance - \vbox \ifdim\ht\b_scrn_field_label>\ht\b_scrn_field_content to \ht\b_scrn_field_label \fi - {\fieldtotalframedparameter\c!before - \box\b_scrn_field_content - \fieldtotalframedparameter\c!after}}} - -\def\scrn_field_flush_content - {\box\b_scrn_field_content} - -%D todo: replace \processallactionsinset - -\def\scrn_field_analyze_setups - {\setfalse\fieldlabelshown - \setfalse\fieldframeshown - \setfalse\fieldishorizontal - \setfalse\fieldisvertical - \normalexpanded{\processallactionsinset[\fieldtotalframedparameter\c!alternative]} - [ \v!reset=>\setfalse\fieldlabelshown - \setfalse\fieldframeshown - \setfalse\fieldishorizontal - \setfalse\fieldisvertical, - \v!label=>\settrue\fieldlabelshown, - \v!frame=>\settrue\fieldframeshown, - \v!horizontal=>\settrue\fieldishorizontal, - \v!vertical=>\settrue\fieldisvertical]% - \ifconditional\fieldisvertical - \setupfieldtotalframed[\c!distance=\zeropoint,\c!inbetween=\vskip\d_framed_local_offset,\c!align=\v!right,\c!width=20em]% - \else\ifconditional\fieldishorizontal - \setupfieldtotalframed[\c!distance=\d_framed_local_offset,\c!inbetween=,\c!align=\c!left,\c!height=10ex]% - \else - \setupfieldtotalframed[\c!distance=\zeropoint,\c!inbetween=,\c!align=\c!left]% - \fi\fi - \setupfieldtotalframed[\c!n=,\c!before=,\c!after=\vss,\c!style=,\c!color=]} - -%D Common stuff (obsolete) - -\newcount\c_scrn_field_system_n - -\def\nextsystemfield - {\global\advance\c_scrn_field_system_n\plusone - \def\currentsystemfield{sys::\number\c_scrn_field_system_n}} - -%D \CONTEXT\ had tooltips right from the moment that it -%D supported fields. Due to the at that moment somewhat -%D limited \PDF\ specification, they were implemented -%D using \JAVASCRIPT, but nowadays more kind of actions -%D are supported, so we can do without. The \MKIV\ version -%D also supports definition of tooltips and configuration. -%D -%D \starttyping -%D before \tooltip[right]{inbetween}{a very nice tip} after\par -%D before \tooltip[align=normal]{inbetween}{a very\\nice tip} after\par -%D before \tooltip[middle]{inbetween}{a very nice tip} after\par -%D before \tooltip[left]{inbetween}{a very nice tip} after\par -%D \stoptyping - -\newbox \b_scrn_tooltip_anchor -\newbox \b_scrn_tooltip_text -\newcount\c_scrn_tooltip_n - -\installcorenamespace{tooltip} - -\installframedcommandhandler \??tooltip {tooltip} \??tooltip - -\setuptooltip - [\c!location=\v!right, - \c!frame=\v!off, - \c!offset=.1ex, - \c!background=\v!color, - \c!backgroundcolor=gray] - -\appendtoks - \setuevalue\currenttooltip{\scrn_tooltip_direct{\currenttooltip}}% -\to \everydefinetooltip - -\unexpanded\def\scrn_tooltip_direct#tag% - {\def\currenttooltip{#tag}% - \doifelselocation - {\dosingleempty\scrn_tooltip_indeed} - {\dosingleempty\scrn_tooltip_ignore}} - -\def\scrn_tooltip_ignore[#settings]#anchortext#tiptext% - {#anchortext} - -\def\scrn_tooltip_indeed[#settings]#anchortext#tiptext% a more modern aproach (push buttons) - {\dontleavehmode \hbox \bgroup - \dontcomplain - \global\advance\c_scrn_tooltip_n\plusone - \edef\currenttooltipname{tooltip:\number\c_scrn_tooltip_n}% - \setbox\b_scrn_tooltip_anchor\hbox - {\strut#anchortext}% - \doifelseassignment{#settings} - {\setupcurrenttooltip[#settings]}% - {\setupcurrenttooltip[\c!location=#settings]}% - \setbox\b_scrn_tooltip_text\hbox - {\lettooltipparameter\c!location\empty - \inheritedtooltipframed{#tiptext}}% - \definesymbol - [\currenttooltipname:txt] - [\copy\b_scrn_tooltip_text]% - \definefieldbody - [\currenttooltipname:txt] - [\c!type=push, - \c!width=\wd\b_scrn_tooltip_text, - \c!height=\ht\b_scrn_tooltip_text, - \c!depth=\dp\b_scrn_tooltip_text, - \c!option=\v!hidden, - \c!values=\currenttooltipname:txt]% - \setbox\b_scrn_tooltip_text\hbox - {\fieldbody[\currenttooltipname:txt]}% - \setbox\b_scrn_tooltip_text\hbox - {\strut\lower\dimexpr.25ex+\ht\b_scrn_tooltip_text\relax\box\b_scrn_tooltip_text}% - \edef\currenttooltiplocation{\tooltipparameter\c!location}% - \ifx\currenttooltiplocation\v!left - \hsmashed{\hskip\wd\b_scrn_tooltip_anchor\llap{\box\b_scrn_tooltip_text}}% - \else\ifx\currenttooltiplocation\v!middle - \hsmashed to \wd\b_scrn_tooltip_anchor{\hss\box\b_scrn_tooltip_text\hss}% - \else - \hsmashed{\box\b_scrn_tooltip_text}% - \fi\fi - \definesymbol - [\currenttooltipname:but] - [\hphantom{\copy\b_scrn_tooltip_anchor}]% - \definefieldbody - [\currenttooltipname:but] - [\c!type=push, - \c!regionin=action(show{\currenttooltipname:txt}), - \c!regionout=action(hide{\currenttooltipname:txt}), - \c!width=\wd\b_scrn_tooltip_anchor, - \c!height=\ht\b_scrn_tooltip_anchor, - \c!depth=\dp\b_scrn_tooltip_anchor]% - \hsmashed{\fieldbody[\currenttooltipname:but]}% - \egroup - #anchortext}% when hyphenated the text wil stick out ... such are fields and we cannot use a link here - -\definetooltip[tooltip] - -%D From messages on the mailing list we can conclude that -%D fieldstacks are used so we keep them in the core: -%D -%D \starttyping -%D \definesymbol[one] [one] -%D \definesymbol[two] [two] -%D \definesymbol[three][three] -%D -%D \definefieldstack[mine][one,two,three] -%D \fieldstack[mine] -%D \fieldstack[mine] -%D -%D \goto{walk field}[Walk{mine}] -%D \stoptyping - -% todo: expand #symbols - -\unexpanded\def\definefieldstack - {\dotripleargument\scrn_fieldstack_define} - -\def\scrn_fieldstack_define[#tag][#symbols][#settings]% - {\ifcsname scrn_fieldstack:#tag\endcsname \else - \setgvalue{scrn_fieldstack:#tag}{\scrn_fieldstack_construct[#tag][#symbols][#settings]}% - \fi} - -\unexpanded\def\fieldstack - {\dotripleempty\scrn_fieldstack_direct} - -\def\scrn_fieldstack_direct[#tag][#symbols][#settings]% - {\ifsecondargument - \scrn_fieldstack_define[#tag][#symbols][#settings]% - \fi - \getvalue{scrn_fieldstack:#tag}} - -\newbox\b_scrn_fieldstack_box - -\def\scrn_fieldstack_add#tag#settings#symbol% - {\advance\scratchcounter\plusone - \edef\currentfieldstackname{#tag:\number\scratchcounter}% - \ifnum\scratchcounter=\fieldcategoryparameter\c!start\relax - \definefieldbody[\currentfieldstackname][\c!type=check,\c!values={#symbol,\empty},\c!default={#symbol}]% - \else - \definefieldbody[\currentfieldstackname][\c!type=check,\c!values={#symbol,\empty},\c!default=]% - \fi - \setbox\b_scrn_fieldstack_box\hbox{\symbol[#symbol]}% - \setcollector - [fieldstack] - {\fieldbody - [\currentfieldstackname] - [\c!option=\v!readonly, - \c!width=\wd\b_scrn_fieldstack_box, - \c!height=\ht\b_scrn_fieldstack_box, - \c!depth=\dp\b_scrn_fieldstack_box, - #settings]}} - -\def\scrn_fieldstack_construct[#tag][#symbols][#settings]% start=n, 0 == leeg - {\iflocation - \dontleavehmode - \begingroup - \setupfieldcategory[\c!start=1,#settings]% was just \??fieldcategory - \scrn_field_load_scripts - \definecollector - [fieldstack]% - [\c!corner=\v!middle, - \c!location=\v!middle]% - \scratchcounter\zerocount - \processcommalist[#symbols]{\scrn_fieldstack_add{#tag}{#settings}}% - \flushcollector[fieldstack]% - \endgroup - \fi} - -%D Another goodie. Two actions can be hookes into an overlay. -%D -%D \starttyping -%D \defineviewerlayer[test] -%D -%D \startviewerlayer[test]Hide Me\stopviewerlayer -%D -%D \defineoverlay -%D [WithTest] -%D [{\overlayrollbutton[HideLayer{test}][VideLayer{test}]}] -%D -%D \framed[background=WithTest]{toggle} -%D \stoptyping - -\newcount\c_scrn_rollbutton_n - -\unexpanded\def\overlayrollbutton - {\dodoubleargument\scrn_rollbutton_overlay} - -\def\scrn_rollbutton_overlay[#regionin][#regionout]% - {\iflocation - \bgroup - \global\advance\c_scrn_rollbutton_n\plusone - \definesymbol - [rollbutton:\number\c_scrn_rollbutton_n] - [{\framed[\c!frame=\v!off,\c!width=\overlaywidth,\c!height=\overlayheight]{}}]% - \definefieldbody - [rollbutton:\number\c_scrn_rollbutton_n] - [\c!type=push, - \c!regionin={#regionin}, - \c!regionout={#regionout}, - \c!values=\currentsystemfield, - \c!default=\currentsystemfield]% - \fitfield[\currentsystemfield]% - \egroup - \fi} - -% \protect \endinput % THE FOLLOWING CODE IS NOT CHECKED - -%D I will redo these when I need them. - -% \setupinteraction[state=start] -% -% \definepushbutton [reset] -% -% \startuniqueMPgraphic{whatever}{color} -% fill fullcircle xysized (OverlayWidth,OverlayHeight) withcolor \MPvar{color} ; -% \stopuniqueMPgraphic -% -% \definepushsymbol [reset] [n] [\uniqueMPgraphic{whatever}{color=red}] -% \definepushsymbol [reset] [r] [\uniqueMPgraphic{whatever}{color=green}] -% \definepushsymbol [reset] [d] [\uniqueMPgraphic{whatever}{color=blue}] -% -% \starttext -% \startTEXpage -% \pushbutton [reset] [page(2)] -% \stopTEXpage -% \startTEXpage -% \pushbutton [reset] [page(1)] -% \stopTEXpage -% \stoptext - -\newcount\c_scrn_pushbutton_n - -\unexpanded\def\definepushbutton % name optional setup - {\dodoubleempty\scrn_pushbutton_define} - -\def\scrn_pushbutton_define[#tag][#settings]% - {\scrn_pushbutton_define_variant{#tag}{n}{push}% - \scrn_pushbutton_define_variant{#tag}{r}{\symbol[pushsymbol:#tag:n]}% - \scrn_pushbutton_define_variant{#tag}{d}{\symbol[pushsymbol:#tag:r]}% - \setvalue{pushbutton:#tag}{\scrn_pushbutton_handle{#tag}{#settings}}} - -\def\scrn_pushbutton_define_variant#tag#variant#content% - {\doifelsesymboldefined{pushsymbol:#tag:#variant} - \donothing - {\definesymbol[pushsymbol:#tag:#variant][{#content}]}} - -\def\scrn_pushbutton_handle#tag#settings#reference% - {\bgroup - \global\advance\c_scrn_pushbutton_n\plusone - \setupfield - [pushbutton] - [\c!frame=\v!overlay, - \c!offset=\v!overlay, - \c!clickout={#reference}, - #settings]% - \definefield - [pushbutton:\number\c_scrn_pushbutton_n]% - [push] - [pushbutton] - [pushsymbol:#tag:n,pushsymbol:#tag:r,pushsymbol:#tag:d]% - \fitfield - [pushbutton:\number\c_scrn_pushbutton_n]% - \egroup} - -\unexpanded\def\definepushsymbol - {\dotripleargument\scrn_pushsymbol_define} - -\def\scrn_pushsymbol_define[#tag][#variant]% [#reference] - {\definesymbol[pushsymbol:#tag:#variant]} - -\def\pushbutton - {\dodoubleargument\scrn_pushbutton_direct} - -\def\scrn_pushbutton_direct[#tag][#variant]% - {\executeifdefined{pushbutton:#tag}\gobbleoneargument{#variant}} - -%D We plug into the menu system - -\unexpanded\def\scrn_menu_psh_start[#reference]#text\stoppsh - {\starttxt\pushbutton[\currentmenu][#reference]\stoptxt} - -\unexpanded\def\scrn_menu_psh_direct[#reference]#text\\ - {\scrn_menu_psh_start[#reference]\stoprob} - -\appendtoks - \let\startpsh\scrn_menu_psh_start - \let\stoppsh \relax - \let\psh \scrn_menu_psh_direct -\to \everysetmenucommands - -%D Another goodie: (unchecked in \MKIV) - -% calls: -% {..} [JS..] -% [left] {..} [JS..] -% [a=b] {..} [JS..] -% [left] [a=b] {..} [JS..] -% -% \setupbuttons[offset=0pt,frame=off] % alternative=hidden -% -% \rollbutton {Manuals} [JS(Goto_File{show-man.pdf})] -% \rollbutton {Articles} [JS(Goto_File{show-art.pdf})] -% \rollbutton {Papers} [JS(Goto_File{show-pap.pdf})] -% \rollbutton {Presentations} [JS(Goto_File{show-pre.pdf})] -% \rollbutton {Resources} [JS(Goto_File{show-res.pdf})] -% -% \rob [JS(...)] bla bla \\ - -% \definecolor[rollover:n][red] -% \definecolor[rollover:r][green] -% \definecolor[rollover:d][blue] - -\definepalet - [rollover] - [n=red, - r=green, - d=blue] - -\newcount\c_scrn_rollbutton_n_button -\newcount\c_scrn_rollbutton_n_symbol - -\unexpanded\def\rollbutton - {\dodoubleempty\scrn_rollbutton} - -\def\scrn_rollbutton_symbol_m - {\scrn_rollbutton_symbol_indeed - \interactionmenuparameter - \inheritedinteractionmenuframed - \setinteractionmenuparameter - \useinteractionmenustyleandcolor} - -\def\scrn_rollbutton_symbol_b - {\scrn_rollbutton_symbol_indeed - \buttonparameter - \inheritedbuttonframed - \setbuttonparameter - \usebuttonstyleandcolor} - -\def\scrn_rollbutton[#tag][#settings]#text[#reference]% - {\dontleavehmode - \bgroup - \advance\c_scrn_rollbutton_n_button\plusone - \advance\c_scrn_rollbutton_n_symbol\plusone - \iffirstargument - \ifsecondargument - \edef\currentinteractionmenu{#tag}% - \setupcurrentinteractionmenu[#settings]% - \let\scrn_rollbutton_symbol\scrn_rollbutton_symbol_m - \else - \doifelseassignment{#tag} - {\let\currentbutton\empty - \setupcurrentbutton[#tag]% - \let\scrn_rollbutton_symbol\scrn_rollbutton_symbol_b}% - {\edef\currentinteractionmenu{#tag}% - \let\scrn_rollbutton_symbol\scrn_rollbutton_symbol_m}% - \fi - \else - \let\scrn_rollbutton_symbol\scrn_rollbutton_symbol_b - \fi - % todo: share symbols, tricky since different dimensions - \definesymbol[rollsymbol:\number\c_scrn_rollbutton_n_symbol:n][\scrn_rollbutton_symbol{n}{#text}]% - \definesymbol[rollsymbol:\number\c_scrn_rollbutton_n_symbol:r][\scrn_rollbutton_symbol{r}{#text}]% - \definesymbol[rollsymbol:\number\c_scrn_rollbutton_n_symbol:d][\scrn_rollbutton_symbol{d}{#text}]% - \setupfield - [rollbutton] - [\c!frame=\v!off, - \c!offset=\v!overlay, - \c!clickout={#reference}]% - \definefield - [rollbutton:\number\c_scrn_rollbutton_n_button][push][rollbutton] - [rollsymbol:\number\c_scrn_rollbutton_n_symbol:n,% - rollsymbol:\number\c_scrn_rollbutton_n_symbol:r,% - rollsymbol:\number\c_scrn_rollbutton_n_symbol:d]% - \fitfield[rollbutton:\number\c_scrn_rollbutton_n_button]% - \egroup} - -\unexpanded\def\scrn_rollbutton_symbol_indeed#getparameter#inheritedframed#setparameter#usestyleandcolor#what#text% - {\definecolor[rollover][rollover:#what]% - \doifelse{#what}{n}% ? - {\doifelse{#getparameter\c!alternative}\v!hidden\phantom\hbox}\hbox - {#setparameter\c!framecolor {rollover}% - #setparameter\c!backgroundcolor{rollover}% - #setparameter\c!color {rollover}% - #inheritedframed{#usestyleandcolor\c!style\c!color{#text}}}} - -%D We plug into the menu system - -\unexpanded\def\scrn_menu_rob_start[#reference]#text\stoprob - {\starttxt\rollbutton[\currentmenu]{\ignorespaces#text\unskip}[#reference]\stoptxt} - -\unexpanded\def\scrn_menu_rob_direct[#reference]#text\\ - {\scrn_menu_rob_start[#reference]#text\stoprob} - -\appendtoks - \let\startrob\scrn_menu_rob_start - \let\stoprob \relax - \let\rob \scrn_menu_rob_direct -\to \everysetmenucommands - -\protect \endinput |