From 50c8b1ff1feb0a5f445911f9dd1d234f2ea3e54e Mon Sep 17 00:00:00 2001 From: Fredrik Unger Date: Tue, 31 Mar 2015 14:24:28 +0200 Subject: [PATCH] docbook: expand image objects per page Introducing expanded docbook parts for images. Captions are read from the image file and the image file is appropriately resized. --- treecutter/docbook.py | 26 ++++++++++++++++++++------ treecutter/page.py | 2 +- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/treecutter/docbook.py b/treecutter/docbook.py index fd822ce..a143487 100644 --- a/treecutter/docbook.py +++ b/treecutter/docbook.py @@ -29,14 +29,28 @@ class Docbook(): return (t, ta) def expand_imageobjects(self): + cwd = os.getcwd() db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP) images = self._doc.xpath(u"//db:imageobject/db:imagedata[@fileref]",namespaces=const.XPATH) - for io in images: - image = Image(io) - link = db.link(image.infostr(),**{const.XLINK+"href": f}) - io = db.imageobject( - db.imagedata(fileref=image.format(800,600), width=str(800), depth=str(600)), - db.caption(db.para(image.caption()))) + for i in images: + os.chdir(self._dirname) + im = i.get('fileref') + img = Image(im) + caption = db.caption() + for p in img.caption().split('\n\n'): + caption.append(db.para(p)) + link = db.para(db.link(img.infostr(), + **{const.XLINK+"href": img.filename()})) + caption.append(link) + mo = db.mediaobject(db.imageobject( + db.imagedata(fileref=img.resize(800,600))),caption) + iop = i.getparent() + mop = iop.getparent() + mopp = mop.getparent() + mopp.insert(mopp.index(mop)+1,mo) + mopp.remove(mop) + os.chdir(cwd) + def parse_xincludes(self): cwd = os.getcwd() diff --git a/treecutter/page.py b/treecutter/page.py index 8843df9..9b8b244 100644 --- a/treecutter/page.py +++ b/treecutter/page.py @@ -42,7 +42,7 @@ class Page(): def prepare(self): self._doc = Docbook(self._file) (self._title, self._menu) = self._doc.title() -# self._doc.expand_imageobjects() + self._doc.expand_imageobjects() self._doc.parse_xincludes() doc = self._doc.collect_links() img = self._doc.collect_images() -- 2.30.2