as I've said earlier, I have a wip version, but I won't be able to provide
it to you before tuesday....

stay tuned.

in the mean time, you can have a look at the lua API and documentation in
the user-manual

* even better, if you compile DT yourself, go in the build/ subdirectory
and run "make darktable-usermanual" to have an up to date API documentation
* you can also go to https://github.com/darktable-org/lua-scripts to see
examples of darktable scripts

On Fri, May 22, 2015 at 5:09 PM, Matthias Bodenbinder <
matth...@bodenbinder.de> wrote:

> Hi,
>
> triggered by a question on the user list I created a lua script which
> creates a contact sheet (Kontaktabzug) for a set of JPGs. The output is a
> PDF document. The script uses lualatex to do the job. How do I incorporate
> that script into darktable?
>
> The script works pretty well on the commandline. You can try it out. It is
> attached below. Just say
>
>         do_contactsheet.lua /path/to/pictures/*.jpg
> /path/to/otherpictures/*.png
>
> This will create a contactsheet.pdf in the current directory. With
> optional commandline parameters --title and --count you can set a different
> document title and a different number of pictures per line (default is 4)
>
> What I would like to do is:
>         - include it into darktable to excecute it for the current film
> roll
>         - set the title to the name of the film roll
>         - retrieve all JPGs/PNGs from the current export directory and
> create the contactsheet.pdf in that directory
>         - call the pdf viewer when the script is finished (how to
> determine the default pdf viewer?)
>         - eventually allow the user to set the "count" parameter to a
> different value
>         - eventually allow the user to set the "title" parameter to a
> different value
>
>
> I need some help to get there. I dont know how to retrieve the internal
> darktable parameters, like the current filmroll, nor do I now how to
> interact with the user in darktable.
>
> Your advice is appreciated
> Matthias
>
> Here is the script:
> -------------------
>
> #!/usr/bin/lua
> -- do_contactsheet.lua creates a contact sheet (Kontakabzug) for a set of
> pictures
> -- it uses LaTeX to create a PDF document
> -- it supports JPG and PNG files
> -- (c) Matthias Bodenbinder, May 2015
>
> -- default values
> title = "Kontaktabzüge"
> thumbs_per_line = 4
>
> -- LaTeX preamble
> tex_start="\\documentclass[a4paper,10pt]{article}\
> \\usepackage{graphicx}\
> \\usepackage{fontspec}\
> \\pagestyle{empty}\
> \\parindent0pt\
> \\parskip1em\
> \\usepackage{geometry}\
> \\geometry{a4paper,left=5mm,right=5mm, top=5mm, bottom=5mm}\
> \\begin{document}"
>
> -- place a thumbnail
> function thumbnail(i,f)
>         -- i = number of this picture
>         -- f = fullpath to picture
>         -- remove leading path to retrieve filename
>         label = string.gsub(f, ".*/", "")
>         -- print thumbnail in minipage
>         return "\\begin{minipage}[b]{" .. w .. "\\textwidth}\n" ..
>         "  \\includegraphics[width=\\textwidth]{" .. f .. "}\\newline\n" ..
>         "  \\centering{\\verb|" .. i .. ": " .. label .. "|}\n" ..
>         "\\end{minipage}\n"
> end
>
> -- print usage message
> function usage()
>         print("Usage: " .. arg[0] .. " --title <title> --count <thumbs per
> line> <pictures jpg/png>")
> end
>
> -- main loop
>
> -- check for lualatex and exit if it does not exist
> if( not os.execute("which lualatex >/dev/null") )then
>         print("lualatex not found. Aborting!")
>         os.exit()
> end
>
> pictures = ""
> pcount = 0
> i = 1
>
> -- width of a single picture
> w = 1/thumbs_per_line - 0.01;
>
> while i<=#arg do
>         if (arg[i] == "--title" or arg[i] == "-t") then
>                 -- next arg is the title
>                 title = arg[i+1]
>                 -- go to next picture
>                 i=i+2
>         elseif (arg[i] == "--count" or arg[i] == "-c") then
>                 -- next arg is thumbs per line
>                 thumbs_per_line = arg[i+1]
>                 -- calculate new picture width
>                 w = 1/thumbs_per_line - 0.01;
>                 -- go to next picture
>                 i=i+2
>         elseif (arg[i] == "--help" or arg[i] == "-h") then
>                 usage()
>                 os.exit()
>         else
>                 pcount=pcount+1;
>                 pictures = pictures .. thumbnail(pcount, arg[i])
>                 i=i+1
>                 if( pcount % thumbs_per_line == 0 ) then
>                         -- enough pictures in one line =>
>                         pictures = pictures .. "\\par\n"
>                 else
>                         pictures = pictures .. "\\hspace{1mm}\n"
>                 end
>         end
> end
>
> -- write tex file to /tmp
> basefile = "/tmp/contactsheet"
> texfile = basefile .. ".tex"
> pdffile = basefile .. ".pdf"
>
> f = io.output(texfile, "w")
> io.write(tex_start)
> io.write("{\\Large\\bfseries " .. title .. "}\\par\n")
> io.write(pictures)
> io.write("\\end{document}")
> io.close()
>
> -- execute lualatex to create pdf file
> os.execute("cd /tmp; lualatex " .. texfile)
>
> -- move pdf to current folder
> if( not os.execute("mv " .. pdffile .. " .") ) then
>         print("file does not exist: " .. pdffile)
> end
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> darktable-devel mailing list
> darktable-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/darktable-devel
>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
darktable-devel mailing list
darktable-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/darktable-devel

Reply via email to