Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucian Branescu Mihaila <lucian.branescu@gmail.com>2010-07-20 12:52:56 (GMT)
committer Lucian Branescu Mihaila <lucian.branescu@gmail.com>2010-07-20 12:52:56 (GMT)
commit420579b50ac59ee37bdad022b4e11badeba97e70 (patch)
tree73a3205172bb5944d013946078f26dd9f704505c
parent7c186be9474877d5d930313521cc84580cbf8471 (diff)
Re-enable search. Re-enable sniffing and setting screen DPI.
-rw-r--r--readactivity.py75
-rw-r--r--readtoolbar.py2
2 files changed, 49 insertions, 28 deletions
diff --git a/readactivity.py b/readactivity.py
index ac2aaf4..788ddeb 100644
--- a/readactivity.py
+++ b/readactivity.py
@@ -57,6 +57,7 @@ try:
except:
_EPUB_SUPPORT = False
+
_HARDWARE_MANAGER_INTERFACE = 'org.laptop.HardwareManager'
_HARDWARE_MANAGER_SERVICE = 'org.laptop.HardwareManager'
_HARDWARE_MANAGER_OBJECT_PATH = '/org/laptop/HardwareManager'
@@ -407,7 +408,7 @@ class ReadActivity(activity.Activity):
elif page < 0:
page = 0
- self._model.props.page = page
+ self._document.get_page_cache().set_current_page(page)
entry.props.text = str(page + 1)
def __go_back_cb(self, button):
@@ -423,41 +424,42 @@ class ReadActivity(activity.Activity):
self._view.next_page()
def __prev_bookmark_activate_cb(self, menuitem):
- page = self._model.props.page
+ page = self._document.get_page_cache().get_current_page()
bookmarkmanager = self._sidebar.get_bookmarkmanager()
prev_bookmark = bookmarkmanager.get_prev_bookmark_for_page(page)
if prev_bookmark is not None:
- self._model.props.page = prev_bookmark.page_no
+ self._document.get_page_cache().set_current_page(prev_bookmark.page_no)
def __next_bookmark_activate_cb(self, menuitem):
- page = self._model.props.page
+ page = self._document.get_page_cache().get_current_page()
bookmarkmanager = self._sidebar.get_bookmarkmanager()
next_bookmark = bookmarkmanager.get_next_bookmark_for_page(page)
if next_bookmark is not None:
- self._model.props.page = next_bookmark.page_no
+ self._document.get_page_cache().set_current_page(next_bookmark.page_no)
def __bookmarker_toggled_cb(self, button):
+ page = self._document.get_page_cache().get_current_page()
if self._bookmarker.props.active:
- self._sidebar.add_bookmark(self._model.props.page)
+ self._sidebar.add_bookmark(page)
else:
- self._sidebar.del_bookmark(self._model.props.page)
+ self._sidebar.del_bookmark(page)
- def __page_changed_cb(self, previous, next, user_data):
+ def __page_changed_cb(self, page, proxy = None):
self._update_nav_buttons()
if hasattr(self._document, 'has_document_links'):
if self._document.has_document_links():
self._toc_select_active_page()
- self._sidebar.update_for_page(self._model.props.page)
+ self._sidebar.update_for_page(self._document.get_page_cache().get_current_page())
self._bookmarker.handler_block(self._bookmarker_toggle_handler_id)
self._bookmarker.props.active = self._sidebar.is_showing_local_bookmark()
self._bookmarker.handler_unblock(self._bookmarker_toggle_handler_id)
def _update_nav_buttons(self):
- current_page = self._model.props.page
+ current_page = self._document.get_page_cache().get_current_page()
self._back_button.props.sensitive = current_page > 0
self._forward_button.props.sensitive = \
current_page < self._document.get_n_pages() - 1
@@ -508,7 +510,7 @@ class ReadActivity(activity.Activity):
iter = self._navigator.get_active_iter()
current_link = self._toc_model.get(iter, 1)[0]
- current_page = self._model.props.page
+ current_page = self._document.get_page_cache().get_current_page()
if not hasattr(current_link, 'get_page'):
@@ -590,6 +592,10 @@ class ReadActivity(activity.Activity):
self._tempfile = tempfile
self._load_document('file://' + self._tempfile)
+ # FIXME: This should obviously be fixed properly
+ gobject.timeout_add_seconds(1, self.__view_toolbar_needs_update_size_cb,
+ None)
+
def write_file(self, file_path):
"""Write into datastore for Keep.
@@ -606,7 +612,7 @@ class ReadActivity(activity.Activity):
try:
self.metadata['Read_current_page'] = \
- str(self._model.props.page)
+ str(self._document.get_page_cache().get_current_page())
self.metadata['Read_zoom'] = str(self._view.props.zoom)
@@ -759,9 +765,8 @@ class ReadActivity(activity.Activity):
def _setup_evince_viewer(self):
self._view = evince.View()
- #self._view.set_screen_dpi(_get_screen_dpi()) #disabled trac#1900
- #self._view.connect('notify::has-selection',
- # self._view_notify_has_selection_cb)
+ self._view.connect('notify::has-selection',
+ self._view_notify_has_selection_cb)
self._scrolled = gtk.ScrolledWindow()
self._scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
@@ -790,17 +795,23 @@ class ReadActivity(activity.Activity):
else:
self._setup_evince_viewer()
try:
- self._document = evince.document_factory_get_document(
- filepath)
+ self._document = evince.document_factory_get_document(filepath)
except GError, e:
_logger.error('Can not load document: %s', e)
return
self._want_document = False
-
+
self._model = evince.DocumentModel()
self._model.set_document(self._document)
self._view.set_model(self._model)
+
+ # set dpi
+ dpi = _get_screen_dpi()
+ min_scale = self._model.get_min_scale()
+ max_scale = self._model.get_max_scale()
+ self._model.set_min_scale(min_scale * dpi / 72.0)
+ self._model.set_max_scale(max_scale * dpi / 72.0)
self._view_toolbar.set_view(self._view, self._model)
self._edit_toolbar.set_view(self._view)
@@ -814,7 +825,8 @@ class ReadActivity(activity.Activity):
self._update_nav_buttons()
self._update_toc()
- self._model.connect('page-changed', self.__page_changed_cb)
+ page_cache = self._document.get_page_cache()
+ page_cache.connect('page-changed', self.__page_changed_cb)
if not self.metadata['title_set_by_user'] == '1':
info = self._document.get_info()
@@ -825,20 +837,23 @@ class ReadActivity(activity.Activity):
sizing_mode = self.metadata.get('Read_sizing_mode', 'fit-width')
_logger.debug('Found sizing mode: %s', sizing_mode)
if sizing_mode == "best-fit":
- self._model.props.sizing_mode = evince.SIZING_BEST_FIT
+ self._view.props.sizing_mode = evince.SIZING_BEST_FIT
+ if hasattr(self._view, 'update_view_size'):
+ self._view.update_view_size(self._scrolled)
elif sizing_mode == "free":
- self._model.props.sizing_mode = evince.SIZING_FREE
- self._scale.props.zoom = float(self.metadata.get('Read_zoom',
- '1.0'))
- _logger.debug('Set zoom to %f', self._model.props.scale)
+ self._view.props.sizing_mode = evince.SIZING_FREE
+ self._view.props.zoom = float(self.metadata.get('Read_zoom', '1.0'))
+ _logger.debug('Set zoom to %f', self._view.props.zoom)
elif sizing_mode == "fit-width":
- self._model.props.sizing_mode = evince.SIZING_FIT_WIDTH
+ self._view.props.sizing_mode = evince.SIZING_FIT_WIDTH
+ if hasattr(self._view, 'update_view_size'):
+ self._view.update_view_size(self._scrolled)
else:
# this may happen when we get a document from a buddy with a later
# version of Read, for example.
_logger.warning("Unknown sizing_mode state '%s'", sizing_mode)
if self.metadata.get('Read_zoom', None) is not None:
- self._model.props.scale = float(self.metadata['Read_zoom'])
+ self._view.props.zoom = float(self.metadata['Read_zoom'])
self._view_toolbar._update_zoom_buttons()
@@ -847,7 +862,7 @@ class ReadActivity(activity.Activity):
current_page = int(self.metadata.get('Read_current_page', '0'))
_logger.debug('Setting page to: %d', current_page)
- self._model.props.page = current_page
+ self._document.get_page_cache().set_current_page(current_page)
# We've got the document, so if we're a shared activity, offer it
try:
@@ -954,5 +969,11 @@ class ReadActivity(activity.Activity):
else:
self._topbar.hide()
+ def __view_toolbar_needs_update_size_cb(self, view_toolbar):
+ if hasattr(self._view, 'update_view_size'):
+ self._view.update_view_size(self._scrolled)
+ else:
+ return False # No need to run this again and again
+
def __view_toolbar_go_fullscreen_cb(self, view_toolbar):
self.fullscreen()
diff --git a/readtoolbar.py b/readtoolbar.py
index a5d67ce..1c19b12 100644
--- a/readtoolbar.py
+++ b/readtoolbar.py
@@ -98,7 +98,7 @@ class EditToolbar(activity.EditToolbar):
try:
self._find_job = evince.JobFind(document=self._document, start_page=0, n_pages=self._document.get_n_pages(), text=text, case_sensitive=False)
self._find_updated_handler = self._find_job.connect('updated', self._find_updated_cb)
- evince.job_scheduler_push_job(self._find_job, evince.JOB_PRIORITY_NONE)
+ evince.Job.scheduler_push_job(self._find_job, evince.JOB_PRIORITY_NONE)
except TypeError:
self._find_job = epubadapter.JobFind(document=self._document, start_page=0, n_pages=self._document.get_n_pages(), text=text, case_sensitive=False)
self._find_updated_handler = self._find_job.connect('updated', self._find_updated_cb)