diff options
author | Dan Williams <dcbw@redhat.com> | 2007-03-13 17:18:13 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2007-03-13 17:18:13 (GMT) |
commit | ddd1f11fc1a853ea09edb0c0d4e8766594d86dfb (patch) | |
tree | fb69ec96eb3035ebd27642120aeeba632d0cab1d | |
parent | 85c18f7ce813d9d8936b3e4cce0008b78721b0e0 (diff) |
Add open functionality
-rw-r--r-- | XbookActivity.py | 20 | ||||
-rw-r--r-- | activity/activity.info | 6 | ||||
-rw-r--r-- | xbooktoolbar.py | 39 |
3 files changed, 56 insertions, 9 deletions
diff --git a/XbookActivity.py b/XbookActivity.py index c79ac86..ba0624e 100644 --- a/XbookActivity.py +++ b/XbookActivity.py @@ -16,12 +16,13 @@ class XbookActivity(activity.Activity): self.set_title(_('Read Activity')) evince.job_queue_init() - evince_view = evince.View() + self._view = evince.View() vbox = hippo.CanvasBox() self.set_root(vbox) - toolbar = XbookToolbar(evince_view) + toolbar = XbookToolbar(self._view) + toolbar.connect('open-document', self._open_document_cb) vbox.append(toolbar) canvas_widget = hippo.CanvasWidget() @@ -34,9 +35,16 @@ class XbookActivity(activity.Activity): canvas_widget.props.widget = scrolled scrolled.show() - scrolled.add(evince_view) - evince_view.show() + scrolled.add(self._view) + self._view.show() - document = evince.factory_get_document('file://' + handle.uri) - evince_view.set_document(document) + if handle.uri: + self._load_document(handle.uri) + + def _load_document(self, filename): + document = evince.factory_get_document('file://' + filename) + self._view.set_document(document) toolbar.set_document(document) + + def _open_document_cb(self, widget, fname): + self._load_document(fname) diff --git a/activity/activity.info b/activity/activity.info index fbf1a6a..1b1e7d7 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,7 +1,7 @@ [Activity] -name = Xbook +name = Read service_name = org.laptop.sugar.Xbook icon = activity-xbook class = XbookActivity.XbookActivity -show_launcher = no -activity_version = 6 +show_launcher = yes +activity_version = 7 diff --git a/xbooktoolbar.py b/xbooktoolbar.py index 419f0ac..8c4e5f0 100644 --- a/xbooktoolbar.py +++ b/xbooktoolbar.py @@ -17,6 +17,9 @@ import logging import hippo +import gtk +from gettext import gettext as _ +import gobject from sugar.graphics import font from sugar.graphics import color @@ -26,12 +29,23 @@ from sugar.graphics.iconbutton import IconButton from sugar.graphics.entry import Entry class XbookToolbar(Toolbar): + __gtype_name__ = "XbookToolbar" + + __gsignals__ = { + 'open-document': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + ([gobject.TYPE_STRING])), + 'save-document': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + ([gobject.TYPE_STRING])) + } + def __init__(self, evince_view): Toolbar.__init__(self) self._evince_view = evince_view self._document = None + self._insert_opensave_items() + self._insert_spring() self._insert_nav_items() self._insert_spring() self._insert_search_items() @@ -48,6 +62,15 @@ class XbookToolbar(Toolbar): separator = hippo.CanvasBox() self.append(separator, hippo.PACK_EXPAND) + def _insert_opensave_items(self): + self._open = IconButton(icon_name='theme:stock-open', active=True) + self._open.connect("activated", self._open_cb) + self.append(self._open) + + self._save = IconButton(icon_name='theme:stock-save', active=False) + self._save.connect("activated", self._save_cb) + self.append(self._save) + def _insert_nav_items(self): self._back = IconButton(icon_name='theme:stock-back', active=False) self._back.connect("activated", self._go_back_cb) @@ -122,3 +145,19 @@ class XbookToolbar(Toolbar): self._prev.props.active = self._evince_view.can_find_previous() self._next.props.active = self._evince_view.can_find_next() + def _open_cb(self, button): + filt = gtk.FileFilter() + filt.add_mime_type("application/pdf") + filt.add_mime_type("application/x-pdf") + chooser = gtk.FileChooserDialog(_("Open a document to read"), \ + buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) + chooser.set_filter(filt) + resp = chooser.run() + fname = chooser.get_filename() + chooser.hide() + chooser.destroy() + if resp == gtk.RESPONSE_ACCEPT and fname: + self.emit('open-document', fname) + + def _save_cb(self, button): + pass |