From 16f837a0eaf81d8ad45ddbb206485ea064591fb4 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Mon, 15 Oct 2007 20:10:57 +0000 Subject: #2838: Read now saves current page, zoom mode, level and search term in the journal meta and restores them on resume. (pascals) --- diff --git a/NEWS b/NEWS index 7008831..2c62b2e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +* Reverse the zoom buttons so they're in the usual -/+ order found everywhere. + (pascals) +* #2838: Read now saves current page, zoom mode, level and search term in + the journal meta and restores them on resume. (pascals) * #3706: Add zoom-to-width button and move other zoom actions to its palette. (pascals) diff --git a/readactivity.py b/readactivity.py index 9b8e8bd..03e8148 100644 --- a/readactivity.py +++ b/readactivity.py @@ -170,9 +170,27 @@ class ReadActivity(activity.Activity): self._load_document('file://' + file_path) def write_file(self, file_path): - # Don't do anything here, file has already been saved - pass + """We only save meta data, not the document itself. + current page, view settings, search text.""" + self.metadata['Read_current_page'] = \ + str(self._document.get_page_cache().get_current_page()) + + self.metadata['Read_zoom'] = str(self._view.props.zoom) + + if self._view.props.sizing_mode == evince.SIZING_BEST_FIT: + self.metadata['Read_sizing_mode'] = "best-fit" + elif self._view.props.sizing_mode == evince.SIZING_FREE: + self.metadata['Read_sizing_mode'] = "free" + elif self._view.props.sizing_mode == evince.SIZING_FIT_WIDTH: + self.metadata['Read_sizing_mode'] = "fit-width" + else: + logging.error("Don't know how to save sizing_mode state '%s'" % + self._view.props.sizing_mode) + self.metadata['Read_sizing_mode'] = "fit-width" + + self.metadata['Read_search'] = self._edit_toolbar._search_entry.props.text + def _download_result_cb(self, getter, tempfile, suggested_name, buddy): del self._tried_buddies logging.debug("Got document %s (%s) from %s (%s)" % (tempfile, suggested_name, buddy.props.nick, buddy.props.ip4_address)) @@ -228,7 +246,7 @@ class ReadActivity(activity.Activity): self._edit_toolbar.set_document(self._document) self._read_toolbar.set_document(self._document) - if not self._jobject.metadata['title_set_by_user'] == '1': + if not self.metadata['title_set_by_user'] == '1': info = self._document.get_info() if info and info.title: self.metadata['title'] = info.title @@ -240,6 +258,29 @@ class ReadActivity(activity.Activity): path, garbage = urllib.splitattr(path or "") self._filepath = os.path.abspath(path) + current_page = int(self.metadata.get('Read_current_page', '0')) + self._document.get_page_cache().set_current_page(current_page) + + sizing_mode = self.metadata.get('Read_sizing_mode', 'fit-width') + if sizing_mode == "best-fit": + self._view.props.sizing_mode = evince.SIZING_BEST_FIT + elif sizing_mode == "free": + self._view.props.sizing_mode = evince.SIZING_FREE + self._view.props.zoom = float(self.metadata.get('Read_zoom', '1.0')) + elif sizing_mode == "fit-width": + self._view.props.sizing_mode = evince.SIZING_FIT_WIDTH + else: + # this may happen when we get a document from a buddy with a later + # version of Read, for example. + logging.warning("Unknown sizing_mode state '%s'" % sizing_mode) + if self.metadata.get('Read_zoom', None) is not None: + self._view.props.zoom = float(self.metadata['Read_zoom']) + + self._view_toolbar._update_zoom_buttons() + + self._edit_toolbar._search_entry.props.text = \ + self.metadata.get('Read_search', '') + # When we get the document, start up our sharing services if self.get_shared(): self._start_shared_services() diff --git a/readtoolbar.py b/readtoolbar.py index a5c6fcc..def83e9 100644 --- a/readtoolbar.py +++ b/readtoolbar.py @@ -203,17 +203,17 @@ class ViewToolbar(gtk.Toolbar): self._evince_view = evince_view self._document = None - self._zoom_in = ToolButton('zoom-in') - self._zoom_in.set_tooltip(_('Zoom in')) - self._zoom_in.connect('clicked', self._zoom_in_cb) - self.insert(self._zoom_in, -1) - self._zoom_in.show() - self._zoom_out = ToolButton('zoom-out') self._zoom_out.set_tooltip(_('Zoom out')) self._zoom_out.connect('clicked', self._zoom_out_cb) self.insert(self._zoom_out, -1) self._zoom_out.show() + + self._zoom_in = ToolButton('zoom-in') + self._zoom_in.set_tooltip(_('Zoom in')) + self._zoom_in.connect('clicked', self._zoom_in_cb) + self.insert(self._zoom_in, -1) + self._zoom_in.show() self._zoom_to_width = ToolButton('zoom-best-fit') self._zoom_to_width.set_tooltip(_('Zoom to width')) -- cgit v0.9.1