Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-10-15 20:10:57 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-10-15 20:10:57 (GMT)
commit16f837a0eaf81d8ad45ddbb206485ea064591fb4 (patch)
tree87364ad63abcfa96a0a12d05057d9902a897cd95
parent404585c6d109a96b6e104a3a60dfb66bc27d0f28 (diff)
#2838: Read now saves current page, zoom mode, level and search term in the journal meta and restores them on resume. (pascals)
-rw-r--r--NEWS4
-rw-r--r--readactivity.py47
-rw-r--r--readtoolbar.py12
3 files changed, 54 insertions, 9 deletions
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'))