Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/epubview
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2010-12-05 17:00:21 (GMT)
committer Gonzalo Odiard <godiard@sugarlabs.org>2011-01-20 16:48:25 (GMT)
commit563347fd1ae1352a1c518d4ae12c5accf0a534bc (patch)
treeac0a996f3647648708bde10b6589f2f4c4255590 /epubview
parent91eab1caa3bcf96e0027674e112018f689233c5e (diff)
fix EOL spaces
Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
Diffstat (limited to 'epubview')
-rw-r--r--epubview/__init__.py2
-rw-r--r--epubview/epub.py66
-rw-r--r--epubview/epubinfo.py30
-rw-r--r--epubview/epubview.py172
-rw-r--r--epubview/jobs.py92
-rw-r--r--epubview/navmap.py50
-rw-r--r--epubview/widgets.py10
7 files changed, 211 insertions, 211 deletions
diff --git a/epubview/__init__.py b/epubview/__init__.py
index 81a3175..5051bdf 100644
--- a/epubview/__init__.py
+++ b/epubview/__init__.py
@@ -21,4 +21,4 @@ gobject.threads_init()
from epub import _Epub as Epub
from epubview import _View as EpubView
-from jobs import _JobFind as JobFind \ No newline at end of file
+from jobs import _JobFind as JobFind
diff --git a/epubview/epub.py b/epubview/epub.py
index 71267aa..86f6ec9 100644
--- a/epubview/epub.py
+++ b/epubview/epub.py
@@ -32,22 +32,22 @@ class _Epub(object):
self._ncxpath = None
self._basepath = None
self._tempdir = tempfile.mkdtemp()
-
+
if not self._verify():
print 'Warning: This does not seem to be a valid epub file'
-
+
self._get_opf()
self._get_ncx()
-
+
ncxfile = self._zobject.open(self._ncxpath)
- opffile = self._zobject.open(self._opfpath)
+ opffile = self._zobject.open(self._opfpath)
self._navmap = navmap.NavMap(opffile, ncxfile, self._basepath)
-
+
opffile = self._zobject.open(self._opfpath)
- self._info = epubinfo.EpubInfo(opffile)
-
+ self._info = epubinfo.EpubInfo(opffile)
+
self._unzip()
-
+
def _unzip(self):
#self._zobject.extractall(path = self._tempdir) # This is broken upto python 2.7
orig_cwd = os.getcwd()
@@ -61,28 +61,28 @@ class _Epub(object):
self._zobject.extract(name)
os.chdir(orig_cwd)
-
+
def _get_opf(self):
containerfile = self._zobject.open('META-INF/container.xml')
-
+
tree = etree.parse(containerfile)
root = tree.getroot()
-
+
for element in root.iterfind('.//{urn:oasis:names:tc:opendocument:xmlns:container}rootfile'):
if element.get('media-type') == 'application/oebps-package+xml':
self._opfpath = element.get('full-path')
-
- if self._opfpath.rpartition('/')[0]:
+
+ if self._opfpath.rpartition('/')[0]:
self._basepath = self._opfpath.rpartition('/')[0] + '/'
else:
self._basepath = ''
-
+
containerfile.close()
def _get_ncx(self):
opffile = self._zobject.open(self._opfpath)
-
+
tree = etree.parse(opffile)
root = tree.getroot()
@@ -92,61 +92,61 @@ class _Epub(object):
for element in root.iterfind('.//{http://www.idpf.org/2007/opf}item'):
if element.get('id') == tocid:
self._ncxpath = self._basepath + element.get('href')
-
+
opffile.close()
def _verify(self):
'''
- Method to crudely check to verify that what we
+ Method to crudely check to verify that what we
are dealing with is a epub file or not
'''
if not os.path.exists(self._filepath):
return False
-
+
self._zobject = zipfile.ZipFile(self._filepath)
-
+
if not 'mimetype' in self._zobject.namelist():
return False
-
+
mtypefile = self._zobject.open('mimetype')
mimetype = mtypefile.readline()
-
+
if not mimetype.startswith('application/epub+zip'): # Some files seem to have trailing characters
return False
-
+
return True
-
+
def get_toc_model(self):
'''
Returns a GtkTreeModel representation of the
Epub table of contents
- '''
+ '''
return self._navmap.get_gtktreestore()
-
+
def get_flattoc(self):
'''
Returns a flat (linear) list of files to be
rendered.
- '''
+ '''
return self._navmap.get_flattoc()
-
+
def get_basedir(self):
'''
Returns the base directory where the contents of the
epub has been unzipped
'''
return self._tempdir
-
+
def get_info(self):
'''
Returns a EpubInfo object for the open Epub file
- '''
+ '''
return self._info
-
+
def close(self):
'''
- Cleans up (closes open zip files and deletes uncompressed content of Epub.
- Please call this when a file is being closed or during application exit.
- '''
+ Cleans up (closes open zip files and deletes uncompressed content of Epub.
+ Please call this when a file is being closed or during application exit.
+ '''
self._zobject.close()
shutil.rmtree(self._tempdir)
diff --git a/epubview/epubinfo.py b/epubview/epubinfo.py
index d25dfc2..27cfe3e 100644
--- a/epubview/epubinfo.py
+++ b/epubview/epubinfo.py
@@ -7,7 +7,7 @@ class EpubInfo(): #TODO: Cover the entire DC range
self._tree = etree.parse(opffile)
self._root = self._tree.getroot()
self._e_metadata = self._root.find('{http://www.idpf.org/2007/opf}metadata')
-
+
self.title = self._get_title()
self.creator = self._get_creator()
self.date = self._get_date()
@@ -16,34 +16,34 @@ class EpubInfo(): #TODO: Cover the entire DC range
self.rights = self._get_rights()
self.identifier = self._get_identifier()
self.language = self._get_language()
-
-
+
+
def _get_data(self, tagname):
element = self._e_metadata.find(tagname)
return element.text
-
+
def _get_title(self):
try:
ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}title')
except AttributeError:
return None
-
+
return ret
-
+
def _get_creator(self):
try:
ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}creator')
except AttributeError:
- return None
+ return None
return ret
-
+
def _get_date(self):
#TODO: iter
try:
ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}date')
except AttributeError:
return None
-
+
return ret
def _get_source(self):
@@ -51,7 +51,7 @@ class EpubInfo(): #TODO: Cover the entire DC range
ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}source')
except AttributeError:
return None
-
+
return ret
def _get_rights(self):
@@ -59,12 +59,12 @@ class EpubInfo(): #TODO: Cover the entire DC range
ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}rights')
except AttributeError:
return None
-
+
return ret
def _get_identifier(self):
#TODO: iter
- element = self._e_metadata.find('.//{http://purl.org/dc/elements/1.1/}identifier')
+ element = self._e_metadata.find('.//{http://purl.org/dc/elements/1.1/}identifier')
if element is not None:
return {'id':element.get('id'), 'value':element.text}
@@ -76,7 +76,7 @@ class EpubInfo(): #TODO: Cover the entire DC range
ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}language')
except AttributeError:
return None
-
+
return ret
def _get_subject(self):
@@ -86,5 +86,5 @@ class EpubInfo(): #TODO: Cover the entire DC range
subjectlist.append(element.text)
except AttributeError:
return None
-
- return subjectlist \ No newline at end of file
+
+ return subjectlist
diff --git a/epubview/epubview.py b/epubview/epubview.py
index 595eb20..e9cc276 100644
--- a/epubview/epubview.py
+++ b/epubview/epubview.py
@@ -37,20 +37,20 @@ class _View(gtk.HBox):
__gproperties__ = {
'has-selection' : (gobject.TYPE_BOOLEAN, 'whether has selection',
'whether the widget has selection or not',
- 0, gobject.PARAM_READABLE),
+ 0, gobject.PARAM_READABLE),
'zoom' : (gobject.TYPE_FLOAT, 'the zoom level',
'the zoom level of the widget',
0.5, 4.0, 1.0, gobject.PARAM_READWRITE)
- }
+ }
__gsignals__ = {
'page-changed': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
([]))
- }
+ }
def __init__(self):
gobject.threads_init()
gtk.HBox.__init__(self)
-
+
self.connect("destroy", self._destroy_cb)
self._ready = False
@@ -68,7 +68,7 @@ class _View(gtk.HBox):
self._findjob = None
self.__in_search = False
self.__search_fwd = True
-
+
self._sw = gtk.ScrolledWindow()
self._view = widgets._WebView()
self._view.load_string(LOADING_HTML, 'text/html', 'utf-8', '/')
@@ -82,7 +82,7 @@ class _View(gtk.HBox):
self._view.connect('button-release-event', self._view_buttonrelease_event_cb)
self._view.connect('selection-changed', self._view_selection_changed_cb)
self._view.connect_after('populate-popup', self._view_populate_popup_cb)
-
+
self._sw.add(self._view)
self._sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
self._v_vscrollbar = self._sw.get_vscrollbar()
@@ -94,13 +94,13 @@ class _View(gtk.HBox):
self._scrollbar_change_value_cb)
self.pack_start(self._sw, expand = True, fill = True)
self.pack_start(self._scrollbar, expand = False, fill = False)
-
- self._view.set_flags(gtk.CAN_DEFAULT|gtk.CAN_FOCUS)
-
+
+ self._view.set_flags(gtk.CAN_DEFAULT|gtk.CAN_FOCUS)
+
def set_document(self, epubdocumentinstance):
'''
Sets document (should be a Epub instance)
- '''
+ '''
self._epub = epubdocumentinstance
gobject.idle_add(self._paginate)
@@ -117,29 +117,29 @@ class _View(gtk.HBox):
self.__set_zoom(value)
else:
raise AttributeError, 'unknown property %s' % property.name
-
+
def get_has_selection(self):
'''
Returns True if any part of the content is selected
- '''
+ '''
return self.get_property('has-selection')
-
+
def get_zoom(self):
'''
Returns the current zoom level
- '''
+ '''
return self.get_property('zoom')
-
+
def set_zoom(self, value):
'''
Sets the current zoom level
- '''
+ '''
self.set_property('zoom', value)
-
+
def zoom_in(self):
'''
Zooms in (increases zoom level by 0.1)
- '''
+ '''
if self.can_zoom_in():
self.set_zoom(self.get_zoom() + 0.1)
return True
@@ -149,17 +149,17 @@ class _View(gtk.HBox):
def zoom_out(self):
'''
Zooms out (decreases zoom level by 0.1)
- '''
+ '''
if self.can_zoom_out():
self.set_zoom(self.get_zoom() - 0.1)
return True
else:
return False
-
+
def can_zoom_in(self):
'''
Returns True if it is possible to zoom in further
- '''
+ '''
if self.zoom < 4:
return True
else:
@@ -168,58 +168,58 @@ class _View(gtk.HBox):
def can_zoom_out(self):
'''
Returns True if it is possible to zoom out further
- '''
+ '''
if self.zoom > 0.5:
return True
else:
return False
-
+
def get_current_page(self):
'''
Returns the currently loaded page
- '''
+ '''
return self._loaded_page
-
+
def get_current_file(self):
'''
Returns the currently loaded XML file
- '''
+ '''
#return self._loaded_filename
- if self._paginator:
+ if self._paginator:
return self._paginator.get_file_for_pageno(self._loaded_page)
else:
return None
-
+
def get_pagecount(self):
'''
Returns the pagecount of the loaded file
- '''
+ '''
return self._pagecount
-
+
def set_current_page(self, n):
'''
Loads page number n
- '''
+ '''
if n < 1 or n > self._pagecount:
return False
self._load_page(n)
return True
-
+
def next_page(self):
'''
Loads next page if possible
Returns True if transition to next page is possible and done
- '''
+ '''
if self._loaded_page == self._pagecount:
return False
self._load_next_page()
return True
-
+
def previous_page(self):
'''
Loads previous page if possible
Returns True if transition to previous page is possible and done
- '''
+ '''
if self._loaded_page == 1:
return False
self._load_prev_page()
@@ -229,8 +229,8 @@ class _View(gtk.HBox):
'''
Scrolls through the pages.
Scrolling is horizontal if horizontal is set to True
- Valid scrolltypes are: gtk.SCROLL_PAGE_BACKWARD and gtk.SCROLL_PAGE_FORWARD
- '''
+ Valid scrolltypes are: gtk.SCROLL_PAGE_BACKWARD and gtk.SCROLL_PAGE_FORWARD
+ '''
if scrolltype == gtk.SCROLL_PAGE_BACKWARD:
self.__going_back = True
self.__going_fwd = False
@@ -243,17 +243,17 @@ class _View(gtk.HBox):
self._view.move_cursor(gtk.MOVEMENT_PAGES, 1)
else:
print ('Got unsupported scrolltype %s' % str(scrolltype))
-
+
def copy(self):
'''
Copies the current selection to clipboard.
- '''
+ '''
self._view.copy_clipboard()
-
+
def find_next(self):
'''
Highlights the next matching item for current search
- '''
+ '''
self._view.grab_focus()
self._view.grab_default()
@@ -265,11 +265,11 @@ class _View(gtk.HBox):
self.__in_search = True
self.__search_fwd = True
self._load_file(path)
-
+
def find_previous(self):
'''
Highlights the previous matching item for current search
- '''
+ '''
self._view.grab_focus()
self._view.grab_default()
@@ -289,39 +289,39 @@ class _View(gtk.HBox):
#self._view.search_text(self._findjob.get_search_text(), \
# self._findjob.get_case_sensitive(), True, False)
self.find_next()
-
+
def __set_zoom(self, value):
self._view.set_zoom_level(value)
self.zoom = value
-
+
def __set_has_selection(self, value):
if value != self.has_selection:
self.has_selection = value
self.notify('has-selection')
-
+
def _view_populate_popup_cb(self, view, menu):
menu.destroy() #HACK
return
-
+
def _view_selection_changed_cb(self, view):
- # FIXME: This does not seem to be implemented in
+ # FIXME: This does not seem to be implemented in
# webkitgtk yet
print view.has_selection()
-
+
def _view_buttonrelease_event_cb(self, view, event):
# Ugly hack
self.__set_has_selection(view.can_copy_clipboard() \
| view.can_cut_clipboard())
-
+
def _view_keypress_event_cb(self, view, event):
name = gtk.gdk.keyval_name(event.keyval)
- if name == 'Page_Down' or name == 'Down':
+ if name == 'Page_Down' or name == 'Down':
self.__going_back = False
self.__going_fwd = True
elif name == 'Page_Up' or name == 'Up':
self.__going_back = True
self.__going_fwd = False
-
+
self._do_page_transition()
def _view_scroll_event_cb(self, view, event):
@@ -332,8 +332,8 @@ class _View(gtk.HBox):
self.__going_back = True
self.__going_fwd = False
- self._do_page_transition()
-
+ self._do_page_transition()
+
def _do_page_transition(self):
if self.__going_fwd:
if self._v_vscrollbar.get_value() >= \
@@ -345,32 +345,32 @@ class _View(gtk.HBox):
if self._v_vscrollbar.get_value() == self._v_vscrollbar.props.adjustment.props.lower:
self._load_prev_file()
return True
-
+
return False
-
+
def _view_load_finished_cb(self, v, frame):
-
- # Normally the line below would not be required - ugly workaround for
+
+ # Normally the line below would not be required - ugly workaround for
# possible Webkit bug. See : https://bugs.launchpad.net/bugs/483231
self._sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
-
+
filename = self._view.props.uri.replace('file://', '')
if os.path.exists(filename.replace('xhtml', 'xml')):
filename = filename.replace('xhtml', 'xml') # Hack for making javascript work
-
+
filename = filename.split('#')[0] # Get rid of anchors
-
+
if self._loaded_page < 1 or filename == None:
return False
-
+
self._loaded_filename = filename
-
+
remfactor = self._paginator.get_remfactor_for_file(filename)
pages = self._paginator.get_pagecount_for_file(filename)
extra = int(math.ceil(remfactor * self._view.get_page_height()/(pages-remfactor)))
if extra > 0:
self._view.add_bottom_padding(extra)
-
+
if self.__in_search:
self._view.search_text(self._findjob.get_search_text(), \
self._findjob.get_case_sensitive(), \
@@ -382,7 +382,7 @@ class _View(gtk.HBox):
self._scroll_page_end()
else:
self._scroll_page()
-
+
base_pageno = self._paginator.get_base_pageno_for_file(filename)
scrollval = self._v_vscrollbar.get_value()
scroll_upper = self._v_vscrollbar.props.adjustment.props.upper
@@ -392,39 +392,39 @@ class _View(gtk.HBox):
else:
offset = (scrollval/scroll_upper) * self._paginator.get_pagecount_for_file(filename)
pageno = math.floor(base_pageno + offset)
-
+
if pageno != self._loaded_page:
self._on_page_changed(int(pageno))
-
+
def _scroll_page_end(self):
v_upper = self._v_vscrollbar.props.adjustment.props.upper
v_page_size = self._v_vscrollbar.props.adjustment.props.page_size
self._v_vscrollbar.set_value(v_upper)
-
+
def _scroll_page(self):
pageno = self._loaded_page
-
+
v_upper = self._v_vscrollbar.props.adjustment.props.upper
v_page_size = self._v_vscrollbar.props.adjustment.props.page_size
-
+
scrollfactor = self._paginator.get_scrollfactor_pos_for_pageno(pageno)
self._v_vscrollbar.set_value((v_upper - v_page_size) * scrollfactor)
-
+
def _paginate(self):
filelist = []
for i in self._epub._navmap.get_flattoc():
filelist.append(os.path.join(self._epub._tempdir, i))
-
+
self._paginator = _Paginator(filelist)
self._paginator.connect('paginated', self._paginated_cb)
-
+
def _load_next_page(self):
self._load_page(self._loaded_page + 1)
def _load_prev_page(self):
self._load_page(self._loaded_page - 1)
-
+
def _v_scrollbar_value_changed_cb(self, scrollbar):
if self._loaded_page < 1:
return
@@ -457,7 +457,7 @@ class _View(gtk.HBox):
if scrollfactor <= scrollfactor_cur:
self._on_page_changed(self._loaded_page - 1)
-
+
def _on_page_changed(self, pageno):
self.__page_changed = True
self._loaded_page = pageno
@@ -465,7 +465,7 @@ class _View(gtk.HBox):
self._scrollbar.set_value(pageno)
self._scrollbar.handler_unblock(self._scrollbar_change_value_cb_id)
self.emit('page-changed')
-
+
def _load_page(self, pageno):
if pageno > self._pagecount or pageno < 1:
#TODO: Cause an exception
@@ -483,7 +483,7 @@ class _View(gtk.HBox):
self._view.open(filename)
else:
self._scroll_page()
-
+
def _load_next_file(self):
if self._loaded_page == self._pagecount:
return
@@ -493,7 +493,7 @@ class _View(gtk.HBox):
pageno += 1
if self._paginator.get_file_for_pageno(pageno) != cur_file:
break
-
+
self._load_page(pageno)
def _load_file(self, path):
@@ -513,7 +513,7 @@ class _View(gtk.HBox):
pageno -= 1
if self._paginator.get_file_for_pageno(pageno) != cur_file:
break
-
+
self._load_page(pageno)
def _scrollbar_change_value_cb(self, range, scrolltype, value):
@@ -526,7 +526,7 @@ class _View(gtk.HBox):
self.__going_fwd = False
self.__going_back = True
if not self._do_page_transition():
- self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, -1)
+ self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, -1)
elif scrolltype == gtk.SCROLL_JUMP or \
scrolltype == gtk.SCROLL_PAGE_FORWARD or \
scrolltype == gtk.SCROLL_PAGE_BACKWARD:
@@ -536,18 +536,18 @@ class _View(gtk.HBox):
self._load_page(round(value))
else:
print 'Warning: unknown scrolltype %s with value %f' % (str(scrolltype), value)
-
+
self._scrollbar.set_value(self._loaded_page) #FIXME: This should not be needed here
-
+
if self.__page_changed == True:
self.__page_changed = False
return False
else:
return True
-
+
def _paginated_cb(self, object):
self._ready = True
-
+
self._pagecount = self._paginator.get_total_pagecount()
self._scrollbar.set_range(1.0, self._pagecount - 1.0)
self._scrollbar.set_increments(1.0, 1.0)
@@ -555,8 +555,8 @@ class _View(gtk.HBox):
self._view.grab_default()
if self._loaded_page < 1:
self._load_page(1)
-
-
+
+
def _destroy_cb(self, widget):
self._epub.close()
diff --git a/epubview/jobs.py b/epubview/jobs.py
index 19c8434..6fe5b25 100644
--- a/epubview/jobs.py
+++ b/epubview/jobs.py
@@ -57,28 +57,28 @@ class SearchThread(threading.Thread):
if self._searchfile(f):
self.obj._matchfilelist.append(entry)
f.close()
-
+
gtk.gdk.threads_enter()
- self.obj._finished = True
+ self.obj._finished = True
self.obj.emit('updated')
gtk.gdk.threads_leave()
-
+
return False
-
+
def _searchfile(self, fileobj):
soup = BeautifulSoup.BeautifulSoup(fileobj)
body = soup.find('body')
tags = body.findChildren(True)
for tag in tags:
- if not tag.string is None:
+ if not tag.string is None:
if tag.string.find(self.obj._text) > -1:
return True
-
+
return False
def run (self):
self._start_search()
-
+
def stop(self):
self.stopthread.set()
@@ -89,18 +89,18 @@ class _JobPaginator(gobject.GObject):
'paginated': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
([]))
- }
+ }
def __init__(self, filelist):
gobject.GObject.__init__(self)
-
+
self._filelist = filelist
self._filedict = {}
self._pagemap = {}
-
+
self._bookheight = 0
self._count = 0
self._pagecount = 0
-
+
self._screen = gtk.gdk.screen_get_default()
self._old_fontoptions = self._screen.get_font_options()
options = cairo.FontOptions()
@@ -109,7 +109,7 @@ class _JobPaginator(gobject.GObject):
options.set_subpixel_order(cairo.SUBPIXEL_ORDER_DEFAULT)
options.set_hint_metrics(cairo.HINT_METRICS_DEFAULT)
self._screen.set_font_options(options)
-
+
self._temp_win = gtk.Window()
self._temp_view = widgets._WebView()
@@ -124,7 +124,7 @@ class _JobPaginator(gobject.GObject):
settings.props.default_font_size = 12
settings.props.default_monospace_font_size = 10
settings.props.default_encoding = 'utf-8'
-
+
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
self._dpi = 96
@@ -132,16 +132,16 @@ class _JobPaginator(gobject.GObject):
sw.add(self._temp_view)
self._temp_win.add(sw)
self._temp_view.connect('load-finished', self._page_load_finished_cb)
-
+
self._temp_win.show_all()
self._temp_win.unmap()
-
+
self._temp_view.open(self._filelist[self._count])
-
+
def _page_load_finished_cb(self, v, frame):
f = v.get_main_frame()
pageheight = v.get_page_height()
-
+
if pageheight <= _mm_to_pixel(PAGE_HEIGHT, self._dpi):
pages = 1
else:
@@ -152,11 +152,11 @@ class _JobPaginator(gobject.GObject):
else:
pagelen = 1/pages
self._pagemap[float(self._pagecount + i)] = (f.props.uri, (i-1)/math.ceil(pages), pagelen)
-
+
self._pagecount += math.ceil(pages)
self._filedict[f.props.uri.replace('file://', '')] = (math.ceil(pages), math.ceil(pages) - pages)
self._bookheight += pageheight
-
+
if self._count+1 >= len(self._filelist):
self._temp_win.destroy()
self._screen.set_font_options(self._old_fontoptions)
@@ -164,48 +164,48 @@ class _JobPaginator(gobject.GObject):
else:
self._count += 1
self._temp_view.open(self._filelist[self._count])
-
-
+
+
def get_file_for_pageno(self, pageno):
'''
Returns the file in which pageno occurs
- '''
+ '''
return self._pagemap[pageno][0]
-
+
def get_scrollfactor_pos_for_pageno(self, pageno):
'''
Returns the position scrollfactor (fraction) for pageno
- '''
+ '''
return self._pagemap[pageno][1]
def get_scrollfactor_len_for_pageno(self, pageno):
'''
Returns the length scrollfactor (fraction) for pageno
- '''
+ '''
return self._pagemap[pageno][2]
-
+
def get_pagecount_for_file(self, filename):
'''
Returns the number of pages in file
- '''
+ '''
return self._filedict[filename][0]
def get_base_pageno_for_file(self, filename):
'''
Returns the pageno which begins in filename
- '''
+ '''
for key in self._pagemap.keys():
if self._pagemap[key][0].replace('file://', '') == filename:
return key
-
+
return None
def get_remfactor_for_file(self, filename):
'''
Returns the remainder factor (1 - fraction length of last page in file)
- '''
+ '''
return self._filedict[filename][1]
-
+
def get_total_pagecount(self):
'''
Returns the total pagecount for the Epub file
@@ -215,7 +215,7 @@ class _JobPaginator(gobject.GObject):
def get_total_height(self):
'''
Returns the total height of the Epub in pixels
- '''
+ '''
return self._bookheight
@@ -228,7 +228,7 @@ class _JobFind(gobject.GObject):
def __init__(self, document, start_page, n_pages, text, case_sensitive=False):
gobject.GObject.__init__(self)
gtk.gdk.threads_init()
-
+
self._finished = False
self._document = document
self._start_page = start_page
@@ -239,58 +239,58 @@ class _JobFind(gobject.GObject):
self._matchfilelist = []
self._current_file_index = 0
self.threads = []
-
+
s_thread = SearchThread(self)
self.threads.append(s_thread)
s_thread.start()
-
+
def cancel(self):
'''
Cancels the search job
- '''
+ '''
for s_thread in self.threads:
s_thread.stop()
-
+
def is_finished(self):
'''
Returns True if the entire search job has been finished
- '''
+ '''
return self._finished
-
+
def get_next_file(self):
'''
Returns the next file which has the search pattern
- '''
+ '''
self._current_file_index += 1
try:
path = self._matchfilelist[self._current_file_index]
except IndexError:
self._current_file_index = 0
path = self._matchfilelist[self._current_file_index]
-
+
return path
def get_prev_file(self):
'''
Returns the previous file which has the search pattern
- '''
+ '''
self._current_file_index -= 1
try:
path = self._matchfilelist[self._current_file_index]
except IndexError:
self._current_file_index = -1
path = self._matchfilelist[self._current_file_index]
-
+
return path
def get_search_text(self):
'''
Returns the search text
- '''
+ '''
return self._text
-
+
def get_case_sensitive(self):
'''
Returns True if the search is case-sensitive
- '''
+ '''
return self._case_sensitive
diff --git a/epubview/navmap.py b/epubview/navmap.py
index a0a1799..314752a 100644
--- a/epubview/navmap.py
+++ b/epubview/navmap.py
@@ -5,14 +5,14 @@ class NavPoint(object):
def __init__(self, label, contentsrc, children = []):
self._label = label
self._contentsrc = contentsrc
- self._children = children
-
+ self._children = children
+
def get_label(self):
return self._label
-
+
def get_contentsrc(self):
return self._contentsrc
-
+
def get_children(self):
return self._children
@@ -25,32 +25,32 @@ class NavMap(object):
self._root = self._tree.getroot()
self._gtktreestore = gtk.TreeStore(str, str)
self._flattoc = []
-
+
self._populate_flattoc()
self._populate_toc()
-
+
def _populate_flattoc(self):
tree = etree.parse(self._opffile)
root = tree.getroot()
-
+
itemmap = {}
manifest = root.find('.//{http://www.idpf.org/2007/opf}manifest')
for element in manifest.iterfind('{http://www.idpf.org/2007/opf}item'):
itemmap[element.get('id')] = element
-
- spine = root.find('.//{http://www.idpf.org/2007/opf}spine')
+
+ spine = root.find('.//{http://www.idpf.org/2007/opf}spine')
for element in spine.iterfind('{http://www.idpf.org/2007/opf}itemref'):
idref = element.get('idref')
href = itemmap[idref].get('href')
self._flattoc.append(self._basepath + href)
-
+
self._opffile.close()
-
+
def _populate_toc(self):
- navmap = self._root.find('{http://www.daisy.org/z3986/2005/ncx/}navMap')
+ 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
@@ -62,32 +62,32 @@ class NavMap(object):
def _process_navpoint(self, navpoint, parent = None):
title = self._gettitle(navpoint)
content = self._getcontent(navpoint)
-
+
#print title, content
-
+
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:
+ self._process_navpoint(childnavpoint, parent = iter)
+ else:
return
-
+
def get_gtktreestore(self):
'''
Returns a GtkTreeModel representation of the
Epub table of contents
- '''
+ '''
return self._gtktreestore
-
+
def get_flattoc(self):
'''
Returns a flat (linear) list of files to be
rendered.
- '''
+ '''
return self._flattoc
-
-#t = TocParser('/home/sayamindu/Desktop/Test/OPS/fb.ncx') \ No newline at end of file
+
+#t = TocParser('/home/sayamindu/Desktop/Test/OPS/fb.ncx')
diff --git a/epubview/widgets.py b/epubview/widgets.py
index d80c45a..0458573 100644
--- a/epubview/widgets.py
+++ b/epubview/widgets.py
@@ -5,12 +5,12 @@ import gtk
class _WebView(webkit.WebView):
def __init__(self):
webkit.WebView.__init__(self)
-
+
def get_page_height(self):
'''
Gets height (in pixels) of loaded (X)HTML page.
This is done via javascript at the moment
- '''
+ '''
#TODO: Need to check status of page load
js = 'oldtitle=document.title;document.title=Math.max(document.body.scrollHeight, document.body.offsetHeight,document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);'
self.execute_script(js)
@@ -20,12 +20,12 @@ class _WebView(webkit.WebView):
if ret is None:
return 0
return int(ret)
-
+
def add_bottom_padding(self, incr):
'''
Adds incr pixels of padding to the end of the loaded (X)HTML page.
This is done via javascript at the moment
- '''
+ '''
js = ('var newdiv = document.createElement("div");newdiv.style.height = "%dpx";document.body.appendChild(newdiv);' % incr)
self.execute_script(js)
-
+