Codebase list sugar-read-activity / ddd1f11
Add open functionality Dan Williams 17 years ago
3 changed file(s) with 56 addition(s) and 9 deletion(s). Raw diff Collapse all Expand all
1515 self.set_title(_('Read Activity'))
1616
1717 evince.job_queue_init()
18 evince_view = evince.View()
18 self._view = evince.View()
1919
2020 vbox = hippo.CanvasBox()
2121 self.set_root(vbox)
2222
23 toolbar = XbookToolbar(evince_view)
23 toolbar = XbookToolbar(self._view)
24 toolbar.connect('open-document', self._open_document_cb)
2425 vbox.append(toolbar)
2526
2627 canvas_widget = hippo.CanvasWidget()
3334 canvas_widget.props.widget = scrolled
3435 scrolled.show()
3536
36 scrolled.add(evince_view)
37 evince_view.show()
37 scrolled.add(self._view)
38 self._view.show()
3839
39 document = evince.factory_get_document('file://' + handle.uri)
40 evince_view.set_document(document)
40 if handle.uri:
41 self._load_document(handle.uri)
42
43 def _load_document(self, filename):
44 document = evince.factory_get_document('file://' + filename)
45 self._view.set_document(document)
4146 toolbar.set_document(document)
47
48 def _open_document_cb(self, widget, fname):
49 self._load_document(fname)
00 [Activity]
1 name = Xbook
1 name = Read
22 service_name = org.laptop.sugar.Xbook
33 icon = activity-xbook
44 class = XbookActivity.XbookActivity
5 show_launcher = no
6 activity_version = 6
5 show_launcher = yes
6 activity_version = 7
1616 import logging
1717
1818 import hippo
19 import gtk
20 from gettext import gettext as _
21 import gobject
1922
2023 from sugar.graphics import font
2124 from sugar.graphics import color
2528 from sugar.graphics.entry import Entry
2629
2730 class XbookToolbar(Toolbar):
31 __gtype_name__ = "XbookToolbar"
32
33 __gsignals__ = {
34 'open-document': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
35 ([gobject.TYPE_STRING])),
36 'save-document': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
37 ([gobject.TYPE_STRING]))
38 }
39
2840 def __init__(self, evince_view):
2941 Toolbar.__init__(self)
3042
3143 self._evince_view = evince_view
3244 self._document = None
3345
46 self._insert_opensave_items()
47 self._insert_spring()
3448 self._insert_nav_items()
3549 self._insert_spring()
3650 self._insert_search_items()
4660 def _insert_spring(self):
4761 separator = hippo.CanvasBox()
4862 self.append(separator, hippo.PACK_EXPAND)
63
64 def _insert_opensave_items(self):
65 self._open = IconButton(icon_name='theme:stock-open', active=True)
66 self._open.connect("activated", self._open_cb)
67 self.append(self._open)
68
69 self._save = IconButton(icon_name='theme:stock-save', active=False)
70 self._save.connect("activated", self._save_cb)
71 self.append(self._save)
4972
5073 def _insert_nav_items(self):
5174 self._back = IconButton(icon_name='theme:stock-back', active=False)
121144 self._prev.props.active = self._evince_view.can_find_previous()
122145 self._next.props.active = self._evince_view.can_find_next()
123146
147 def _open_cb(self, button):
148 filt = gtk.FileFilter()
149 filt.add_mime_type("application/pdf")
150 filt.add_mime_type("application/x-pdf")
151 chooser = gtk.FileChooserDialog(_("Open a document to read"), \
152 buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
153 chooser.set_filter(filt)
154 resp = chooser.run()
155 fname = chooser.get_filename()
156 chooser.hide()
157 chooser.destroy()
158 if resp == gtk.RESPONSE_ACCEPT and fname:
159 self.emit('open-document', fname)
160
161 def _save_cb(self, button):
162 pass