Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/epubview
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@sugarlabs.org>2011-02-12 21:32:21 (GMT)
committer Gonzalo Odiard <godiard@sugarlabs.org>2011-02-12 21:32:21 (GMT)
commit5aa984020832ee87513570c5f5593b6f721c9eea (patch)
treeac4a41c10a47fba42fa20703a641cd5eb142ff8b /epubview
parent5832d4df2cfd4478463ec581e21ac4f2bc92ad21 (diff)
Get back functionalities in EPUB framework
- TOC, zoom and find are working in epub - All the code specific to a backend is moved outsude of readactivity.py, readtoolbar.py and readtopbar.py - Rename adapter classes to avoid confusion
Diffstat (limited to 'epubview')
-rw-r--r--epubview/epubview.py46
-rw-r--r--epubview/jobs.py2
2 files changed, 32 insertions, 16 deletions
diff --git a/epubview/epubview.py b/epubview/epubview.py
index 197dcd3..6159374 100644
--- a/epubview/epubview.py
+++ b/epubview/epubview.py
@@ -42,7 +42,8 @@ class _View(gtk.HBox):
0.5, 4.0, 1.0, gobject.PARAM_READWRITE),
}
__gsignals__ = {
- 'page-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ 'page-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+ ([int, int])),
'selection-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([])),
}
@@ -107,13 +108,13 @@ class _View(gtk.HBox):
def do_get_property(self, property):
if property.name == 'has-selection':
return self._has_selection
- elif property.name == 'zoom':
+ elif property.name == 'scale':
return self.scale
else:
raise AttributeError, 'unknown property %s' % property.name
def do_set_property(self, property, value):
- if property.name == 'zoom':
+ if property.name == 'scale':
self.__set_zoom(value)
else:
raise AttributeError, 'unknown property %s' % property.name
@@ -128,20 +129,32 @@ class _View(gtk.HBox):
'''
Returns the current zoom level
'''
- return self.get_property('zoom')
+ return self.get_property('scale') * 100.0
def set_zoom(self, value):
'''
Sets the current zoom level
'''
- self.set_property('zoom', value)
+ self._view.set_zoom_level(value / 100.0)
+
+ def _get_scale(self):
+ '''
+ Returns the current zoom level
+ '''
+ return self.get_property('scale')
+
+ def _set_scale(self, value):
+ '''
+ Sets the current zoom level
+ '''
+ self.set_property('scale', 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)
+ self._set_scale(self._get_scale() + 0.1)
return True
else:
return False
@@ -151,7 +164,7 @@ class _View(gtk.HBox):
Zooms out (decreases zoom level by 0.1)
'''
if self.can_zoom_out():
- self.set_zoom(self.get_zoom() - 0.1)
+ self._set_scale(self._get_scale() - 0.1)
return True
else:
return False
@@ -297,6 +310,7 @@ class _View(gtk.HBox):
def __set_has_selection(self, value):
if value != self._has_selection:
self._has_selection = value
+ self.emit('selection-changed')
def _view_populate_popup_cb(self, view, menu):
menu.destroy() #HACK
@@ -305,11 +319,13 @@ class _View(gtk.HBox):
def _view_selection_changed_cb(self, view):
# FIXME: This does not seem to be implemented in
# webkitgtk yet
- print view.has_selection()
- self.emit('selection-changed')
+ print "epubview _view_selection_changed_cb", view.has_selection()
+ self.__set_has_selection(view.has_selection())
def _view_buttonrelease_event_cb(self, view, event):
# Ugly hack
+ print "epubview _view_buttonrelease_event_cb", view.has_selection(), \
+ view.can_copy_clipboard(), view.can_cut_clipboard()
self.__set_has_selection(view.can_copy_clipboard() \
| view.can_cut_clipboard())
@@ -393,7 +409,7 @@ class _View(gtk.HBox):
pageno = math.floor(base_pageno + offset)
if pageno != self._loaded_page:
- self._on_page_changed(int(pageno))
+ self._on_page_changed(0, int(pageno))
def _scroll_page_end(self):
v_upper = self._v_vscrollbar.props.adjustment.props.upper
@@ -441,7 +457,7 @@ class _View(gtk.HBox):
else:
scrollfactor = 0
if scrollfactor >= scrollfactor_next:
- self._on_page_changed(self._loaded_page + 1)
+ self._on_page_changed(self._loaded_page, self._loaded_page + 1)
elif self.__going_back == True and self._loaded_page > 1:
if self._paginator.get_file_for_pageno(self._loaded_page) != \
self._paginator.get_file_for_pageno(self._loaded_page - 1):
@@ -454,22 +470,22 @@ class _View(gtk.HBox):
scrollfactor = 0
if scrollfactor <= scrollfactor_cur:
- self._on_page_changed(self._loaded_page - 1)
+ self._on_page_changed(self._loaded_page, self._loaded_page - 1)
- def _on_page_changed(self, pageno):
+ def _on_page_changed(self, oldpage, pageno):
self.__page_changed = True
self._loaded_page = pageno
self._scrollbar.handler_block(self._scrollbar_change_value_cb_id)
self._scrollbar.set_value(pageno)
self._scrollbar.handler_unblock(self._scrollbar_change_value_cb_id)
- self.emit('page-changed')
+ self.emit('page-changed', oldpage, pageno)
def _load_page(self, pageno):
if pageno > self._pagecount or pageno < 1:
#TODO: Cause an exception
return
- self._on_page_changed(pageno)
+ self._on_page_changed(self._loaded_page, pageno)
filename = self._paginator.get_file_for_pageno(pageno)
if filename != self._loaded_filename:
#self._loaded_filename = filename
diff --git a/epubview/jobs.py b/epubview/jobs.py
index 8dc26c7..bfd751d 100644
--- a/epubview/jobs.py
+++ b/epubview/jobs.py
@@ -154,7 +154,7 @@ class _JobPaginator(gobject.GObject):
pagelen = 1 / pages
self._pagemap[float(self._pagecount + i)] = (f.props.uri, (i - 1) / math.ceil(pages), pagelen)
- self._pagecount += math.ceil(pages)
+ self._pagecount += int(math.ceil(pages))
self._filedict[f.props.uri.replace('file://', '')] = (math.ceil(pages), math.ceil(pages) - pages)
self._bookheight += pageheight