Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/epubview/navmap.py
diff options
context:
space:
mode:
Diffstat (limited to 'epubview/navmap.py')
-rw-r--r--epubview/navmap.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/epubview/navmap.py b/epubview/navmap.py
new file mode 100644
index 0000000..0ba0b8f
--- /dev/null
+++ b/epubview/navmap.py
@@ -0,0 +1,64 @@
+from lxml import etree
+import gtk
+
+class NavPoint(object):
+ def __init__(self, label, contentsrc, children = []):
+ self._label = label
+ self._contentsrc = contentsrc
+ self._children = children
+
+ def get_label(self):
+ return self._label
+
+ def get_contentsrc(self):
+ return self._contentsrc
+
+ def get_children(self):
+ return self._children
+
+
+class NavMap(object):
+ def __init__(self, file, basepath):
+ self._basepath = basepath
+ self._tree = etree.parse(file)
+ self._root = self._tree.getroot()
+ self._gtktreestore = gtk.TreeStore(str, str)
+ self._flattoc = []
+
+ self._populate_toc()
+
+ def _populate_toc(self):
+ navmap = self._root.find('{http://www.daisy.org/z3986/2005/ncx/}navMap')
+ for navpoint in navmap.iterfind('./{http://www.daisy.org/z3986/2005/ncx/}navPoint'):
+ self._process_navpoint(navpoint)
+
+ def _gettitle(self, navpoint):
+ text = navpoint.find('./{http://www.daisy.org/z3986/2005/ncx/}navLabel/{http://www.daisy.org/z3986/2005/ncx/}text')
+ return text.text
+
+ def _getcontent(self, navpoint):
+ text = navpoint.find('./{http://www.daisy.org/z3986/2005/ncx/}content/')
+ return self._basepath + text.get('src')
+
+ def _process_navpoint(self, navpoint, parent = None):
+ title = self._gettitle(navpoint)
+ content = self._getcontent(navpoint)
+
+ iter = self._gtktreestore.append(parent, [title, content])
+ self._flattoc.append((title, content))
+
+ childnavpointlist = list(navpoint.iterfind('./{http://www.daisy.org/z3986/2005/ncx/}navPoint'))
+
+ if len(childnavpointlist):
+ for childnavpoint in childnavpointlist:
+ self._process_navpoint(childnavpoint, parent = iter)
+ else:
+ return
+
+ def get_gtktreestore(self):
+ return self._gtktreestore
+
+ def get_flattoc(self):
+ return self._flattoc
+
+#t = TocParser('/home/sayamindu/Desktop/Test/OPS/fb.ncx') \ No newline at end of file