%D \module %D [ file=prop-lay, %D version=2003.04.20, %D title=\CONTEXT\ Property Macros, %D subtitle=Layers, %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. \writestatus{loading}{ConTeXt Property Macros / Layers} %D Highly experimental, will probably change/evolve. Also, quite certainly %D we will no longer share code between mkii and mkiv. \unprotect \let\currentlayerproperty\empty \def\checklayerproperty {\doifelse{\checkedpropertyparameter\v!printable\currentproperty}\v!no {\def\printviewerlayer{0}} {\def\printviewerlayer{1}}% \dodefineviewerlayer \currentproperty % tag {\checkedpropertyparameter\c!title\currentproperty}% {\checkedpropertyparameter\c!state\v!start}% visible or hidden {0}% type (1=frozen) {\printviewerlayer}}% 1=printable \def\startlayerproperty {\let\currentlayerproperty\currentproperty \dostartviewerlayer\currentproperty} \def\stoplayerproperty {\dostopviewerlayer \let\currentlayerproperty\previousproperty} \def\domakelayerpropertylist {\iflocation \expandafter\domakeviewerlayerlist \else \expandafter\gobbleoneargument \fi} \setglobalsystemreference \rt!exec \v!HideLayer {hidelayer} \setglobalsystemreference \rt!exec \v!VideLayer {videlayer} \setglobalsystemreference \rt!exec \v!ToggleLayer {togglelayer} \setexecutecommandcheck {hidelayer} \domakelayerpropertylist \setexecutecommandcheck {videlayer} \domakelayerpropertylist \setexecutecommandcheck {togglelayer} \domakelayerpropertylist % \currentlayerproperty % \checklayerproperty % \startlayerproperty % \stoplayerproperty % \domakelayerpropertylist %D \starttext %D %D \setuppapersize[S4][S4] %D \setuplayout[middle] %D \setupcolors[state=start] %D \setupinteraction[state=start,color=,contrastcolor=] %D %D \defineproperty [L1] [layer] [title=layer 1] %D \defineproperty [L2] [layer] [title=layer 2] %D %D \button{HIDE L1}[HideLayer{L1}] %D \button{VIDE L1}[VideLayer{L1}] %D \button{TOGGLE L1}[ToggleLayer{L1}] %D %D \button{HIDE L2}[HideLayer{L2}] %D \button{VIDE L2}[VideLayer{L2}] %D \button{TOGGLE L2}[ToggleLayer{L2}] %D %D \noheaderandfooterlines \centerbox{\startoverlay %D {\definedfont[Mono at 150pt]% %D \startproperty[L1]\red TEST\stopproperty} %D {\definedfont[Mono at 150pt]% %D \startproperty[L2]\green TEST\stopproperty} %D \stopoverlay} \page %D %D \noheaderandfooterlines \centerbox{\startoverlay %D {\definedfont[Mono at 15pt]% %D \goto{\startproperty[L1]\red TEST\stopproperty}[CloseDocument]} %D {\definedfont[Mono at 15pt]% %D \goto{\startproperty[L2]\green TEST\stopproperty}[CloseDocument]} %D \stopoverlay} \page %D %D \startproperty[L1] %D level 1 \startproperty[L2]level 2 \stopproperty level 1 %D \stopproperty %D %D \startproperty[L1] %D level 1 \page \startproperty[L2]level 2 \stopproperty level 1 %D \stopproperty %D %D \stoptext %D Handy for tracing: \def\showlayoutcomponents {\let\startlayoutcomponent\dostartlayoutcomponent \let\stoplayoutcomponent \dostoplayoutcomponent} \def\dodefinelayoutcomponent#1#2% {\doifelsenothing{#2}% {\defineproperty[#1][\s!layer]}% {\defineproperty[#1][\s!layer][\c!title=#2]}} \def\dostartlayoutcomponent#1#2% {\doifelseproperty{#1}\donothing{\dodefinelayoutcomponent{#1}{#2}}% \startproperty[#1]} \def\dostoplayoutcomponent {\stopproperty} \let\startlayoutcomponent\gobbletwoarguments \let\stoplayoutcomponent \relax \protect \endinput % \def\remaplayering % {\dodoubleargument\doremaplayering} % % \def\remaplayering[#1][#2]% % {\setvalue{\??lm#1}{#2}} % % \def\remappedlayering#1% % {\ifcsname\??lm#1\endcsname % \@EA\remappedlayering\csname\??lm#1\endcsname\else#1% % \fi} % % \def\startshowlayering#1#2% % {\ifshowlayering % \defineproperty[\remappedlayering{#1}][\s!layer][\c!titel=#2]% % \startproperty[\remappedlayering{#1}]% % \fi}