Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-03-13 17:18:13 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-03-13 17:18:13 (GMT)
commitddd1f11fc1a853ea09edb0c0d4e8766594d86dfb (patch)
treefb69ec96eb3035ebd27642120aeeba632d0cab1d
parent85c18f7ce813d9d8936b3e4cce0008b78721b0e0 (diff)
Add open functionality
-rw-r--r--XbookActivity.py20
-rw-r--r--activity/activity.info6
-rw-r--r--xbooktoolbar.py39
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