Dear Hans,
On Mon, 21 Feb 2011, Hans Hagen wrote:
i'll patch lpdf-wid but somehow I get the impression that it's more a viewer
issue (the list shown seems to be a merge of filename as well as symbolic
names while a clever list builder should look at the referred objects) ...
but maybe no one else usesvdifferent symbolic names (we had similar issues
with fields in the past and even now advanced field support is somewhat
bugged one or the other way, depending on the viewer version, esp chained
ones)
to say the truth I do not understand what are you talking about :(
The issues I have in mind - separating global attachments and attachments
linked to icons on pages, additional descriptions for attached files -
are addressed in the attached patches.
I am not sure about using attachment lebel as "T" key, that is indended for
following:
The text label that shall be displayed in the title bar of the annotation’s
pop-up window when open and active. This entry shall identify the user who
added the annotation.
and shows as the upper line when mouse pointer is above attachment icon.
Did not try to have file size and time information added to file stream -
but it'd be nice to have.
Sincerely, Michail
PS. Patches show what I want done, not how it is to be done.
Just hope that my lua may be more clear than my English.
--- back-ini.lua.org 2011-02-16 01:53:17.000000000 +0300
+++ back-ini.lua 2011-02-23 09:17:50.000000000 +0300
@@ -67,6 +67,7 @@
registercomment = nothing,
embedfile = nothing,
+ globattachfile = nothing,
attachfile = nothing,
attachmentid = nothing,
--- scrn-int.mkiv.org 2011-01-31 13:26:23.000000000 +0300
+++ scrn-int.mkiv 2011-02-23 12:34:22.000000000 +0300
@@ -405,6 +405,25 @@
% % \setupattachments[\c!symbol={symbol-normal,symbol-down}]
%
% \starttext \attachment[whatever] \stoptext
+%
+% \globattachment[test.tex]
+% \globattachment[description][test.tex]
+% \globattachment[description][newname.tex][test.tex]
+
+\def\globattachment
+ {\dotripleempty\doglobattachment}
+
+\def\doglobattachment[#1][#2][#3]% description newfilename filename
+ {\ifthirdargument
+ \dodoglobattachment{#1}{#2}{#3}%
+ \else\ifsecondargument
+ \dodoglobattachment{#1}{}{#2}%
+ \else
+ \dodoglobattachment{}{}{#1}%
+ \fi\fi}
+
+\def\dodoglobattachment#1#2#3% description newfilename filename
+
{\ctxlua{backends.codeinjections.globattachfile{description="#1",newname="#2",filename="#3"}}}
\def\useattachment
{\doquadrupleempty\douseattachment}
--- lpdf-wid.lua.org 2011-02-08 22:41:44.000000000 +0300
+++ lpdf-wid.lua 2011-02-23 12:27:53.000000000 +0300
@@ -160,14 +160,14 @@
--
-local nofattachments, attachments, filestreams = 0, { }, { }
+local nofattachments, attachments, filestreams, globfilestreams = 0, { }, { },
{ }
-- todo: hash and embed once
local function flushembeddedfiles()
- if next(filestreams) then
+ if next(globfilestreams) then
local e = pdfarray()
- for name, reference in next, filestreams do
+ for name, reference in next, globfilestreams do
if reference then
e[#e+1] = pdfstring(name)
e[#e+1] = reference -- already a reference
@@ -181,7 +181,7 @@
lpdf.registerdocumentfinalizer(flushembeddedfiles,"embeddedfiles")
-function codeinjections.embedfile(filename)
+function codeinjections.embedfile(filename,newname,description)
local r = filestreams[filename]
if r == false then
return nil
@@ -201,12 +201,28 @@
UF = pdfstring(newname or basename),
EF = pdfdictionary { F = pdfreference(f) },
}
+ if description then
+ d["Desc"] = pdfstring(description)
+ end
local r = pdfreference(pdfflushobject(d))
filestreams[filename] = r
return r
end
end
+function codeinjections.globattachfile(specification)
+ local filename = specification.filename
+ if not filename or filename == "" then
+ -- todo: message
+ return
+ end
+ local description = specification.description or ""
+ local newname = specification.newname or ""
+ if description == "" then description = nil end
+ if newname == "" then newname = nil end
+ globfilestreams[filename] =
codeinjections.embedfile(filename,newname,description)
+end
+
function codeinjections.attachfile(specification)
local attachment = interactions.attachments.attachment(specification.label)
if not attachment then
@@ -239,6 +255,7 @@
AP = appearance,
OC = analyzelayer(specification.layer),
C =
pdfcolorspec(specification.colormodel,specification.colorvalue),
+ T = pdfstring(label),
}
-- as soon as we can ask for the dimensions of an xform we can
-- use them here
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________