docbook: expand image objects per page
authorFredrik Unger <fred@tree.se>
Tue, 31 Mar 2015 12:24:28 +0000 (14:24 +0200)
committerFredrik Unger <fred@tree.se>
Tue, 31 Mar 2015 12:24:28 +0000 (14:24 +0200)
Introducing expanded docbook parts for images. Captions are
read from the image file and the image file is appropriately
resized.

treecutter/docbook.py
treecutter/page.py

index fd822ce8fe2cf6058fafa7528c56e0af0e38e0c8..a143487f7c071a2d8ed23805f56797bcac88beaa 100644 (file)
@@ -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()
index 8843df975a45bf45204f5db7c1a3fe08b698341a..9b8b2441277264625abea7e9f657509810bcfb0b 100644 (file)
@@ -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()