summaryrefslogtreecommitdiff
path: root/tex/context/base/mkii/scrn-hlp.mkii
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkii/scrn-hlp.mkii')
-rw-r--r--tex/context/base/mkii/scrn-hlp.mkii171
1 files changed, 171 insertions, 0 deletions
diff --git a/tex/context/base/mkii/scrn-hlp.mkii b/tex/context/base/mkii/scrn-hlp.mkii
new file mode 100644
index 000000000..c526f51eb
--- /dev/null
+++ b/tex/context/base/mkii/scrn-hlp.mkii
@@ -0,0 +1,171 @@
+%D \module
+%D [ file=scrn-hlp,
+%D version=1998.10.10,
+%D title=\CONTEXT\ Screen Macros,
+%D subtitle=Help (Experimental),
+%D author={Hans Hagen \& Ton Otten},
+%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.
+
+% todo : dedicated vide/hide voor helps
+
+\writestatus{loading}{ConTeXt Screen Macros / Help popups}
+
+%D This is an experimental and private module, so the interface
+%D and functionality can change. Pieces of code will be moved
+%D to other modules. More features are possible but will be
+%D interfaces later. See m-chart for an application as well
+%D as the second tno-tpd manual (graphic in margin, click
+%D on it, pop up big one, use menu with hides, as well as
+%D background, etc. etc.
+
+\unprotect
+
+\defineframedtext
+ [\v!helptext]
+
+\setupframedtexts
+ [\v!helptext]
+ [\c!width=.75\textwidth,
+ \c!align=\v!normal,
+ \c!frame=\v!off,
+ \c!background=\v!screen]
+
+\newcounter \nofhelpdataentries
+\newconditional \somehelpdatadefined
+
+\appendtoks \getpagehelpdata \to \beforeeverypage
+\appendtoks \synchronizepagehelpdata \to \aftereverypage
+
+% will be proper state variable
+
+\let\pagehelpdata\empty
+
+\def\dontresetpagedata
+ {\let\synchronizepagehelpdata\relax}
+
+\def\resetpagehelpdata
+ {\iflocation
+ \let\synchronizepagehelpdata\resetpagehelpdata
+ \global\let\pagehelpdata\empty
+ \resetreference[HideHelp]%
+ \fi}
+
+\let\synchronizepagehelpdata\resetpagehelpdata
+
+\resetreference[HideHelp]
+
+\def\getpagehelpdata
+ {\iflocation\ifcase\nofhelpdataentries\else
+ \let\pagehelpdata\empty
+ \ifconditional\somehelpdatadefined
+ \definetwopasslist{hlp:\realfolio}%
+ \doloop
+ {\gettwopassdata{hlp:\realfolio}%
+ \iftwopassdatafound
+ \addtocommalist\twopassdata\pagehelpdata
+ \else
+ \exitloop
+ \fi}%
+ \fi
+ \ifx\pagehelpdata\empty \else
+ \useJSscripts[fld]%
+ \definereference[HideHelp][JS(Hide_Fields)]% for the moment
+ \fi
+ \fi\fi}
+
+\def\setpagehelpdata[#1]%
+ {\iflocation\expanded{\dosetpagehelpdata{#1}}\fi}
+
+\def\dosetpagehelpdata#1%
+ {\doglobal\increment\nofhelpdataentries
+ \savetwopassdata{hlp:\realfolio}{\nofhelpdataentries}{#1}}
+
+\setvalue{\e!start\v!helptext}[#1]%
+ {\iflocation
+ \global\settrue\somehelpdatadefined
+ \setvalue{\e!stop\v!helptext}%
+ %{\definesymbol[helpinfo:#1][{\doframedtext[\v!helptext]{\getbuffer[\v!helptext]}}]%
+ % \dopresetfieldsymbol{helpinfo:#1}}%
+ {\definesymbol[\v!helptext:#1][{\doframedtext[\v!helptext]{\getbuffer[\v!helptext]}}]%
+ \dopresetfieldsymbol{\v!helptext:#1}}%
+ \else
+ \letvalue{\e!stop\v!helptext}\relax
+ \fi
+ \dostartbuffer[\v!helptext][\e!start\v!helptext][\e!stop\v!helptext]}
+
+\long\def\helptext[#1]#2%
+ {\iflocation
+ \global\settrue\somehelpdatadefined
+ %\definesymbol[helpinfo:#1][{\doframedtext[\v!helptext]{#2}}]%
+ %\dopresetfieldsymbol{helpinfo:#1}%
+ \definesymbol[\v!helptext:#1][{\doframedtext[\v!helptext]{#2}}]%
+ \dopresetfieldsymbol{\v!helptext:#1}%
+ \fi}
+
+\let\definehelptext\helptext % for backward compabilities sake
+
+\def\dohelpdata#1%
+ {\setbox\scratchbox\hbox
+ {\startoverlay
+ {\box\scratchbox}
+ %{\definemainfield[help:#1][check][helpsetup][helpinfo:#1][helpinfo:#1]%
+ {\definemainfield[help:#1][check][helpsetup][\v!helptext:#1][\v!helptext:#1]%
+ \fitfield[help:#1]}
+ \stopoverlay}}
+
+\def\helpdata
+ {\iflocation
+ \bgroup
+ %\getpagehelpdata
+ \ifx\pagehelpdata\empty \else
+ \setupfields[\v!reset]%
+ \setupfield
+ [helpsetup]
+ [\c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!frame=\v!off,
+ \c!clickin=JS(Hide_Fields),
+ \c!option={\v!readonly,\v!hidden}]%
+ \setbox\scratchbox\emptybox
+ \processcommacommand[\pagehelpdata]\dohelpdata
+ \box\scratchbox
+ \fi
+ \egroup
+ \fi}
+
+\def\helpbutton % also gobble spaces between [][]
+ {\dodoubleempty\dohelpbutton}
+
+\def\dohelpbutton
+ {\ifsecondargument
+ \expandafter\donohelpbutton
+ \else
+ \expandafter\dodohelpbutton
+ \fi}
+
+\def\dodohelpbutton[#1][#2]#3[#4]% #2 is space gobbling dummy
+ {\iflocation
+ \setpagehelpdata[#4]%
+ \useJSscripts[fld]%
+ \button[#1]{#3}[JS(Vide_Hide_Fields{help:#4})]%
+ \fi}
+
+\def\donohelpbutton[#1][#2]%
+ {\dodohelpbutton[#1][]{}[#2]}
+
+\def\doifhelpinfo#1#2%
+ {\iflocation
+ \doifsymboldefinedelse{helpinfo:#1}{#2}\donothing
+ \fi}
+
+\def\doifelsehelpinfo#1#2#3%
+ {\iflocation
+ \doifsymboldefinedelse{helpinfo:#1}{#2}{#3}%
+ \fi}
+
+\protect \endinput