diff options
-rw-r--r-- | tex/context/base/buff-ini.lua | 4 | ||||
-rw-r--r-- | tex/context/base/context-version.pdf | bin | 4091 -> 4095 bytes | |||
-rw-r--r-- | tex/context/base/context-version.png | bin | 106493 -> 106555 bytes | |||
-rw-r--r-- | tex/context/base/java-ini.lua | 3 | ||||
-rw-r--r-- | tex/context/base/lpdf-fld.lua | 13 | ||||
-rw-r--r-- | tex/context/base/pack-rul.mkiv | 57 | ||||
-rw-r--r-- | tex/context/base/s-pre-61.tex | 2 | ||||
-rw-r--r-- | tex/context/base/scrn-bar.mkvi | 8 | ||||
-rw-r--r-- | tex/context/base/scrn-but.mkvi | 18 | ||||
-rw-r--r-- | tex/context/base/scrn-fld.mkvi | 79 | ||||
-rw-r--r-- | tex/context/base/scrn-hlp.mkvi | 2 | ||||
-rw-r--r-- | tex/context/base/scrn-wid.mkvi | 12 | ||||
-rw-r--r-- | tex/context/base/status-files.pdf | bin | 23870 -> 23872 bytes | |||
-rw-r--r-- | tex/context/base/status-lua.pdf | bin | 162209 -> 162212 bytes |
14 files changed, 127 insertions, 71 deletions
diff --git a/tex/context/base/buff-ini.lua b/tex/context/base/buff-ini.lua index 4f2e27db0..0a52151d6 100644 --- a/tex/context/base/buff-ini.lua +++ b/tex/context/base/buff-ini.lua @@ -168,13 +168,13 @@ local function prepared(name,list) -- list is optional list = name end if not name or name == "" then - name = tex.jobname .. "-" .. list .. ".tmp" + name = list end local content = collectcontent(list,nil) or "" if content == "" then content = "empty buffer" end - return name, content + return tex.jobname .. "-" .. name .. ".tmp", content end local capsule = "\\starttext\n%s\n\\stoptext\n" diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex 016ce323d..0c9566b18 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png Binary files differindex 31bb66840..d8e17946a 100644 --- a/tex/context/base/context-version.png +++ b/tex/context/base/context-version.png diff --git a/tex/context/base/java-ini.lua b/tex/context/base/java-ini.lua index 6f629cec0..8ffabab05 100644 --- a/tex/context/base/java-ini.lua +++ b/tex/context/base/java-ini.lua @@ -32,6 +32,9 @@ local codes, preambles, functions = javascripts.codes, javascripts.preambles, ja local preambled = { } local function storefunction(s,preamble) + if trace_javascript then + report_javascripts("found: function '%s'",s) + end functions[s] = preamble end diff --git a/tex/context/base/lpdf-fld.lua b/tex/context/base/lpdf-fld.lua index 1aa1377e5..0b78821b6 100644 --- a/tex/context/base/lpdf-fld.lua +++ b/tex/context/base/lpdf-fld.lua @@ -577,11 +577,11 @@ function codeinjections.clonefield(specification) -- obsolete local p, c, v = specification.parent, specification.children, specification.alternative if not p or not c then if trace_fields then - report_fields("invalid clone: children: '%s', parent '%s', alternative: '%s'",p or "?",c or "?", v or "?") + report_fields("invalid clone: children: '%s', parent '%s', alternative: '%s'",c or "?",p or "?", v or "?") end return end - local x = fields[p] + local x = fields[p] or radios[p] if not x then if trace_fields then report_fields("cloning: unknown parent '%s'",p) @@ -592,11 +592,11 @@ function codeinjections.clonefield(specification) -- obsolete local f, r, c = fields[n], radios[n], clones[n] if f or r or c then if trace_fields then - report_fields("already cloned: child: '%s', parent '%s', alternative: '%s'",p,n, v or "?") + report_fields("already cloned: child: '%s', parent '%s', alternative: '%s'",n,p,v or "?") end else if trace_fields then - report_fields("cloning: child: '%s', parent '%s', alternative: '%s'",p,n, v or "?") + report_fields("cloning: child: '%s', parent '%s', alternative: '%s'",n,p,v or "?") end clones[n] = specification predefinesymbols(specification) @@ -1033,9 +1033,12 @@ local function makeradiochild(name,specification) end makeradioparent(parent,parent) end - field = radios[name] else field = radios[name] + if not field then + report_fields("there is some problem with field '%s'",name) + return nil + end parent = fields[field.parent] if not parent.pobj then if trace_fields then diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv index b1107c3a3..babcc446a 100644 --- a/tex/context/base/pack-rul.mkiv +++ b/tex/context/base/pack-rul.mkiv @@ -664,8 +664,7 @@ \unexpanded\def\fastlocalframed[#1]#2[#3]#4% 3-4 {\bgroup - \inframedtrue - \edef\@@framed{#1}% + \doinitializeframed{#1}% \setbox\framebox\hbox{#4}% \getparameters[\@@framed][#3]% no \expanded ! \!!framedframeoffset\framedparameter\c!frameoffset @@ -700,8 +699,7 @@ \def\localbackgroundframed#1#2#3#4% tag box wd ht {\setbox#2\vbox\bgroup - \inframedtrue - \edef\@@framed{\??ma#1}% + \doinitializeframed{\??ma#1}% \expandafter\def\csname\??ma#1\c!component\endcsname{#1}% \expandafter\def\csname\??ma#1\c!width \endcsname{#3}% \expandafter\def\csname\??ma#1\c!height \endcsname{#4}% @@ -750,7 +748,8 @@ %D Because it is used so often the he next macro is (and %D looks) rather optimized. -% todo: see if we can use commandhandler +% eventually all will ue the commandhandler but now we have a +% hybrid (with and without colon) \let\postprocessframebox\relax @@ -768,14 +767,23 @@ \def\doframedparentparameter#1#2{\ifx#1\relax\doframedrootparameter#2\else\doframedparameter#1{#2}\fi} \def\doframedrootparameter #1{\ifcsname\??oi#1\endcsname\??oi#1\else\s!empty\fi} -\def\frameddimension#1{\the\dimexpr\framedparameter{#1}\relax} - \def\dosetframedattributes#1#2% style color {\edef\fontattributehash {\framedparameterhash#1}% \edef\colorattributehash{\framedparameterhash#2}% \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash #1\fi \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash#2\fi} +\def\frameddimension#1{\the\dimexpr\framedparameter{#1}\relax} + +\let\normalframedparameter \framedparameter +\let\normalframedparameterhash\framedparameterhash + +\def\doinitializeframed#1% + {\inframedtrue + \edef\@@framed{#1}% + \let\framedparameter \normalframedparameter + \let\framedparameterhash\normalframedparameterhash} + % defaults, kind of isolated now \getparameters @@ -858,8 +866,7 @@ \unexpanded\def\dolocalframed[#1][#2]% assumes a \dodoubleempty (slows down), also should have leading \bgroup {\bgroup - \inframedtrue - \edef\@@framed{#1}% + \doinitializeframed{#1}% \ifsecondargument % faster \getparameters[\@@framed][#2]% here ! \fi @@ -868,18 +875,39 @@ \unexpanded\def\directlocalframed[#1]% no optional {\bgroup \bgroup - \inframedtrue - \edef\@@framed{#1}% + \doinitializeframed{#1}% \dodolocalframed} \unexpanded\def\localframedwithsettings[#1][#2]% no checking (so no spaces between) {\bgroup \bgroup - \inframedtrue - \edef\@@framed{#1}% + \doinitializeframed{#1}% \getparameters[\@@framed][#2]% here ! \dodolocalframed} +\def\installinheritedframed#1#2% + {\normalexpanded{\doinstallinheritedframed + \expandafter\noexpand\csname current#1\endcsname + \expandafter\noexpand\csname #1parameter\endcsname + \expandafter\noexpand\csname #1parameterhash\endcsname + \expandafter\noexpand\csname do#1parameter\endcsname + \expandafter\noexpand\csname do#1parentparameter\endcsname + \expandafter\noexpand\csname do#1rootparameter\endcsname + \expandafter\noexpand\csname inherited#1framed\endcsname + \noexpand{#2}}} + +\unexpanded\def\doinstallinheritedframed#1#2#3#4#5#6#7#8% + {\def#5##1##2{\ifx##1\relax#6{##2}\else#4##1{##2}\fi}% + \def#6##1{\ifcsname#8##1\endcsname#8##1\else\s!empty\fi}% + \unexpanded\def#7% + {\bgroup + \bgroup + \inframedtrue + \let\@@framed #1% not used (more for tracing) + \let\framedparameter #2% + \let\framedparameterhash#3% + \dodolocalframed}} + \def\c!fr!analyze{fr:analyze} % private option % we can make macros for the offset, width, and height branches or do an \csname @@ -960,7 +988,8 @@ \boxisoverlaidfalse \ifx\localoffset\v!default % new per 2-6-2000 \let\localoffset\defaultframeoffset - \expandafter\let\csname\@@framed\c!offset\endcsname\defaultframeoffset + %\expandafter\let\csname\@@framed\c!offset\endcsname\defaultframeoffset + \letframedparameter\c!offset\defaultframeoffset \else \let\defaultframeoffset\localoffset \fi diff --git a/tex/context/base/s-pre-61.tex b/tex/context/base/s-pre-61.tex index 477b622c3..d4e06d0a7 100644 --- a/tex/context/base/s-pre-61.tex +++ b/tex/context/base/s-pre-61.tex @@ -221,7 +221,7 @@ [bottom] [text] [background=topics] -\doifnotmode{demo}{\endinput} +\continueifinputfile{s-pre-61.tex} \starttext diff --git a/tex/context/base/scrn-bar.mkvi b/tex/context/base/scrn-bar.mkvi index 576b1d62b..5c10e0277 100644 --- a/tex/context/base/scrn-bar.mkvi +++ b/tex/context/base/scrn-bar.mkvi @@ -59,7 +59,7 @@ \installcommandhandler \??ib {interactionbar} \??ib -\presetlocalframed[\??ib] +\presetlocalframed[\namedinteractionbarhash\empty] \unexpanded\def\interactionbar {\dodoubleempty\scrn_bar_direct} @@ -68,8 +68,9 @@ {\iflocation \begingroup \doifassignmentelse{#tag} - {\edef\currentinteractionbar{\interactionbarparameter\c!alternative}% - \setupcurrentinteractionbar[#tag]}% + {\let\currentinteractionbar\empty + \setupcurrentinteractionbar[#tag]% + \edef\currentinteractionbar{\interactionbarparameter\c!alternative}}% {\edef\currentinteractionbar{#tag}% \ifsecondargument\setupcurrentinteractionbar[#settings]\fi}% \doif{\interactionbarparameter\c!state}\v!start @@ -77,6 +78,7 @@ \endgroup \fi} + \newdimen\scrn_bar_width \newdimen\scrn_bar_height \newdimen\scrn_bar_depth diff --git a/tex/context/base/scrn-but.mkvi b/tex/context/base/scrn-but.mkvi index c5c002150..8a0203bb2 100644 --- a/tex/context/base/scrn-but.mkvi +++ b/tex/context/base/scrn-but.mkvi @@ -50,11 +50,11 @@ \let\setupbuttons\setupbutton -\presetlocalframed[\??bt] +\presetlocalframed[\namedbuttonhash\empty] \appendtoks \setuevalue\currentbutton{\scrn_button_direct{\currentbutton}}% - \setevalue{\??bt:\currentbutton\s!parent}{\??bt\currentbutton}% framed + \setevalue{\??bt:\currentbutton\s!parent}{\currentbuttonhash}% framed \to \everydefinebutton \unexpanded\def\scrn_button_direct#tag% @@ -75,7 +75,7 @@ \def\scrn_button_direct_indeed[#settings]#text[#action]% {\iffirstargument - \setupbuttons[\currentbutton][#settings]% + \setupcurrentbutton[#settings]% \fi \scrn_button_make\??bt\currentbutton\buttonparameter{#text}{#action}% \endgroup} @@ -320,7 +320,7 @@ \let\setupinteractionmenus\setupinteractionmenu -\presetlocalframed[\??am] +\presetlocalframed[\namedinteractionmenuhash\empty] \let\scrn_menu_action\relax @@ -335,17 +335,17 @@ {\scrn_menu_define_original[#tag][#category][\c!category=#category,#settings]}% child definition {\scrn_menu_define_original[#tag][#settings][\c!category=#category]}% % child definition \scrn_menu_register{#tag}{#category}% - \setevalue{\??am:#tag\s!parent}{\??am#tag}% framed + \setevalue{\??am:#tag\s!parent}{\namedinteractionmenuhash{#tag}}% framed \else\ifsecondargument \doifassignmentelse{#category}% {\scrn_menu_define_original[#tag][#category]% % root definition - \setevalue{\??am:#tag\s!parent}{\??am}}% framed + \setevalue{\??am:#tag\s!parent}{\namedinteractionmenuhash\empty}}% framed {\scrn_menu_define_original[#tag][#category][\c!category=#category]% % child definition \scrn_menu_register{#tag}{#category}% - \setevalue{\??am:#tag\s!parent}{\??am#tag}}% framed + \setevalue{\??am:#tag\s!parent}{\namedinteractionmenuhash{#tag}}}% framed \else \scrn_menu_define_original[#tag]% % root definition - \setevalue{\??am:#tag\s!parent}{\??am}% framed + \setevalue{\??am:#tag\s!parent}{\namedinteractionmenuhash\empty}% framed \fi\fi} \def\scrn_menu_register#tag#category% @@ -687,7 +687,7 @@ \unexpanded\def\scrn_menu_got_start[#action]#text\stopgot {\scrn_menu_action_start - \setupbuttons[\currentinteractionmenu][\c!frame=\v!off,\c!background=]% + \setupcurrentinteractionmenu[\c!frame=\v!off,\c!background=]% needs checking, was buttons \scrn_button_make\??am\currentinteractionmenu\interactionmenuparameter{#text}{#action}% \scrn_menu_action_stop} diff --git a/tex/context/base/scrn-fld.mkvi b/tex/context/base/scrn-fld.mkvi index 628b68866..6e4d6ba85 100644 --- a/tex/context/base/scrn-fld.mkvi +++ b/tex/context/base/scrn-fld.mkvi @@ -165,9 +165,11 @@ \def\scrn_field_check_category {\edef\currentfieldbodycategory{\fieldbodyparameter\c!category}% \ifx\currentfieldbodycategory\empty - \setevalue{\??fb\currentfieldbody\s!parent}{\??fd}% + letfieldbodyparameter\s!parent\??fd + %\setevalue{\currentfieldbodyhash\s!parent}{\namedfieldcategoryhash\empty}% to WS: not hash ! \else - \setevalue{\??fb\currentfieldbody\s!parent}{\??fd\currentfieldbodycategory}% + \normalexpanded{\setfieldbodyparameter{\s!parent}{\??fd\currentfieldbodycategory}}% + %\setevalue{\currentfieldbodyhash\s!parent}{\namedfieldcategoryhash\currentfieldbodycategory}% to WS: not hash ! \fi} \appendtoks % we cannot use parent .. maybe s!parent has to change @@ -201,7 +203,7 @@ \hbox\bgroup \edef\currentfieldbody{#tag}% \ifsecondargument - \setupfieldbody[#tag][#settings]% + \setupcurrentfieldbody[#settings]% \fi \scrn_field_body_typeset \box\scrn_field_box_body @@ -326,9 +328,10 @@ %D (implemented as properties). \appendtoks + \let\currentfieldcategory\empty \doifelse{\interactionparameter\c!fieldlayer}\v!auto - {\setupfieldcategory[\c!fieldlayer=\currentviewerlayer]}% - {\setupfieldcategory[\c!fieldlayer=]}% + {\setupcurrentfieldcategory[\c!fieldlayer=\currentviewerlayer]}% + {\setupcurrentfieldcategory[\c!fieldlayer=]}% \to \everysetupinteraction \setupinteraction @@ -373,13 +376,17 @@ %D The traditional field command does some labeling and %D boxing: -\installparameterhandler \??wl {fieldlabelframed} -\installparameterhandler \??wc {fieldcontentframed} -\installparameterhandler \??wt {fieldtotalframed} +\installparameterhandler \??wl {fieldlabelframed} +\installparameterhandler \??wc {fieldcontentframed} +\installparameterhandler \??wt {fieldtotalframed} -\installsetuphandler \??wl {fieldlabelframed} -\installsetuphandler \??wc {fieldcontentframed} -\installsetuphandler \??wt {fieldtotalframed} +\installsetuphandler \??wl {fieldlabelframed} +\installsetuphandler \??wc {fieldcontentframed} +\installsetuphandler \??wt {fieldtotalframed} + +\installinheritedframed {fieldlabelframed} \??oi +\installinheritedframed {fieldcontentframed} \??oi +\installinheritedframed {fieldtotalframed} \??oi \unexpanded\def\setupfield {\doquintupleempty\scrn_field_setup_field} \unexpanded\def\setupfields{\doquadrupleempty\scrn_field_setup_fields} @@ -415,6 +422,8 @@ \c!align=, \s!parent=\??ol] +% \setupcurrent + \def\scrn_field_setup_field[#tag][#variant][#totalsettings][#labelsettings][#fieldsettings]% {\iffifthargument \definefieldcategory[#tag][\s!parent=\??wc#tag,#fieldsettings] @@ -457,9 +466,9 @@ % just to get the chain right for no category: \definefieldcategory [][\s!parent=\??wc] -\setupfieldtotalframed [][\s!parent=\??wt] -\setupfieldlabelframed [][\s!parent=\??wl] -\setupfieldcontentframed[][\s!parent=\??wc] +% \setupfieldtotalframed [][\s!parent=\??wt] +% \setupfieldlabelframed [][\s!parent=\??wl] +% \setupfieldcontentframed[][\s!parent=\??wc] % no longer supported: @@ -475,7 +484,7 @@ \unexpanded\def\field {\dodoubleempty\scrn_field_direct} -\def\scrn_field_direct[#tag][#label]% +\def\scrn_field_direct[#tag][#label]% can be sped up with \setupcurrentfieldtotalframed etc {\iflocation \dontleavehmode \begingroup @@ -499,9 +508,11 @@ \let\currentfieldcontentframed\currentfieldcategory \scrn_field_analyze_setups \ifconditional\fieldframeshown - \localframed[\??wt\currentfieldcategory]\bgroup + \inheritedfieldtotalframedframed % lower framedoffset + \bgroup \else - \vbox\bgroup + \vbox + \bgroup \fi \dontcomplain \ifconditional\fieldlabelshown @@ -531,8 +542,7 @@ \def\scrn_field_set_label_box {\setbox\scrn_field_box_label\hbox {\reshapeframeboxtrue % else wrong dimensions % still needed? - \localframed - [\??wl\currentfieldcategory] + \inheritedfieldlabelframedframed {\currentfieldlabel}}} % \c!fieldoffset=-\framedoffset,\c!fieldbackgroundcolor=, @@ -541,19 +551,28 @@ \def\scrn_field_set_content_box {\setbox\scrn_field_box_content\hbox {\reshapeframeboxtrue % else wrong dimensions (to be checked) - \ifconditional\fieldisvertical - \setupfieldcontentframed[\c!height=6ex,\c!width=\hsize]% - \else\ifconditional\fieldishorizontal - \setupfieldcontentframed[\c!height=\vsize,\c!width=20em]% - \else - \setupfieldcontentframed[\c!height=2cm,\c!width=2cm]% - \fi\fi - \localframed % lower framedoffset - [\??wc\currentfieldcategory] + \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\scrn_field_box_label @@ -633,7 +652,7 @@ \c!background=\v!color, \c!backgroundcolor=gray] -\presetlocalframed[\??wh] +\presetlocalframed[\namedtooltiphash\empty] \appendtoks \setuevalue\currenttooltip{\scrn_tooltip_direct{\currenttooltip}}% @@ -757,7 +776,7 @@ {\iflocation \dontleavehmode \begingroup - \getparameters[\??fd][\c!start=1,#settings]% + \setupfieldcategory[\c!start=1,#settings]% was just \??fd \scrn_field_load_scripts \definecollector [fieldstack]% diff --git a/tex/context/base/scrn-hlp.mkvi b/tex/context/base/scrn-hlp.mkvi index 2d158d762..f729a3c73 100644 --- a/tex/context/base/scrn-hlp.mkvi +++ b/tex/context/base/scrn-hlp.mkvi @@ -68,7 +68,7 @@ \c!background=\v!color, \c!backgroundcolor=gray] -\presetlocalframed[\??wp] %% not needed +\presetlocalframed[\namedhelphash\empty] \appendtoks \setuevalue \currenthelp {\scrn_help_argument{\currenthelp}}% diff --git a/tex/context/base/scrn-wid.mkvi b/tex/context/base/scrn-wid.mkvi index 8bf60e61a..86152f0c4 100644 --- a/tex/context/base/scrn-wid.mkvi +++ b/tex/context/base/scrn-wid.mkvi @@ -94,7 +94,7 @@ {\ifsecondargument \begingroup \def\currentattachment{_}% - \setupattachment[_][#settings,\s!parent=\??at]% + \setupcurrentattachment[#settings,\s!parent=\??at]% \ctxcommand{registerattachment{ tag = "#tag", registered = "#tag", @@ -371,7 +371,7 @@ \c!ny=10, \c!location=\v!high] -\presetlocalframed[\??cc] +\presetlocalframed[\namedcommenthash\empty] \appendtoks \setuevalue \currentcomment {\scrn_comment_argument{\currentcomment}}% @@ -392,8 +392,8 @@ \def\scrn_comment_argument_indeed[#title][#settings]#text% {\doifassignmentelse{#title} - {\setupcomment[\currentcomment][#title]} - {\setupcomment[\currentcomment][\c!title=#title,#settings]}% + {\setupcurrentcomment[#title]} + {\setupcurrentcomment[\c!title=#title,#settings]}% \ctxlua{buffers.assign("\v!comment",\!!bs#text\!!es)}% todo: expansion control, but expanded by default (xml) \scrn_comment_inject \ignorespaces} @@ -415,8 +415,8 @@ \def\scrn_comment_start_indeed[#title][#settings]% {\bgroup \doifassignmentelse{#title} - {\setupcomment[\currentcomment][#title]} - {\setupcomment[\currentcomment][\c!title=#title,#settings]}% + {\setupcurrentcomment[\currentcomment][#title]} + {\setupcurrentcomment[\currentcomment][\c!title=#title,#settings]}% \def\scrn_comment_stop{\scrn_comment_inject\egroup}% \dostartbuffer[\v!comment][\e!start\currentcomment][\e!stop\currentcomment]} diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex f6ffd5357..a5ed9b1f8 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf Binary files differindex 12b201214..10b93574c 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf |