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
___________________________________________________________________________________

Reply via email to