diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-02-28 14:40:19 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-02-28 14:40:19 (GMT) |
commit | ea3dc16405f2bea263b60be155e201761f17e551 (patch) | |
tree | 89d83f351f6c037ffdded8156ac89a8f5d52dc2a | |
parent | b3eaa17442f7cdd7324d14d2db6203ce4d8e7ee6 (diff) |
Adapted to API changes.
-rw-r--r-- | XbookActivity.py | 34 | ||||
-rw-r--r-- | activity/activity.info | 2 | ||||
-rw-r--r-- | toolbar.py | 163 | ||||
-rw-r--r-- | xbooktoolbar.py | 124 |
4 files changed, 147 insertions, 176 deletions
diff --git a/XbookActivity.py b/XbookActivity.py index 5943929..2e7071d 100644 --- a/XbookActivity.py +++ b/XbookActivity.py @@ -1,14 +1,16 @@ import logging from gettext import gettext as _ + import gtk import evince -from sugar.activity.Activity import Activity +import hippo +from sugar.activity import activity -from toolbar import Toolbar +from xbooktoolbar import XbookToolbar -class XbookActivity(Activity): - def __init__(self): - Activity.__init__(self) +class XbookActivity(activity.Activity): + def __init__(self, handle): + activity.Activity.__init__(self, handle) logging.debug('Starting xbook...') self.set_title(_('Read Activity')) @@ -16,21 +18,29 @@ class XbookActivity(Activity): evince.job_queue_init() self._evince_view = evince.View() - vbox = gtk.VBox(False, 0) - self.add(vbox) - vbox.show() + vbox = hippo.CanvasBox() + self.set_root(vbox) + + self._toolbar = XbookToolbar(self._evince_view) + vbox.append(self._toolbar) - self._toolbar = Toolbar(self._evince_view) - vbox.pack_start(self._toolbar, False) - self._toolbar.show() + canvas_widget = hippo.CanvasWidget() + vbox.append(canvas_widget, hippo.PACK_EXPAND) scrolled = gtk.ScrolledWindow() - vbox.pack_start(scrolled, True, True) + scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + scrolled.props.shadow_type = gtk.SHADOW_NONE + + canvas_widget.props.widget = scrolled scrolled.show() scrolled.add(self._evince_view) self._evince_view.show() + document = evince.factory_get_document('file:///home/tomeu/Desktop/olpc/docs/OLS/jones-reprint.pdf') + self._evince_view.set_document(document) + self._toolbar.set_document(document) + def execute(self, command, args): if(command == 'open_document'): document = evince.factory_get_document('file://' + args[0]) diff --git a/activity/activity.info b/activity/activity.info index 0ad87ee..fbf1a6a 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -2,6 +2,6 @@ name = Xbook service_name = org.laptop.sugar.Xbook icon = activity-xbook -exec = sugar-activity-factory XbookActivity.XbookActivity +class = XbookActivity.XbookActivity show_launcher = no activity_version = 6 diff --git a/toolbar.py b/toolbar.py deleted file mode 100644 index 740d60a..0000000 --- a/toolbar.py +++ /dev/null @@ -1,163 +0,0 @@ -# Copyright (C) 2006, Red Hat, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import logging -import gtk -import pango - -class Toolbar(gtk.Toolbar): - def __init__(self, evince_view): - gtk.Toolbar.__init__(self) - - self.set_style(gtk.TOOLBAR_BOTH_HORIZ) - - self._evince_view = evince_view - self._document = None - - self._insert_nav_items() - self._insert_spring() - self._insert_search_items() - - def set_document(self, document): - self._document = document - self._document.connect("find_changed", self._find_changed_cb) - - page_cache = self._document.get_page_cache() - page_cache.connect("page-changed", self._page_changed_cb) - self._update_nav_buttons() - - def _insert_spring(self): - separator = gtk.SeparatorToolItem() - separator.set_draw(False) - separator.set_expand(True) - self.insert(separator, -1) - separator.show() - - def _insert_nav_items(self): - self._back = gtk.ToolButton() - self._back.props.sensitive = False - self._back.set_icon_name('stock-back') - self._back.connect("clicked", self._go_back_cb) - self.insert(self._back, -1) - self._back.show() - - self._forward = gtk.ToolButton() - self._back.props.sensitive = False - self._forward.set_icon_name('stock-forward') - self._forward.connect("clicked", self._go_forward_cb) - self.insert(self._forward, -1) - self._forward.show() - - num_page_item = gtk.ToolItem() - - self._num_page_entry = gtk.Entry() - self._num_page_entry.set_text('0') - self._num_page_entry.set_alignment(1) - self._num_page_entry.connect("activate", - self._num_page_entry_activate_cb) - - self._num_page_entry.set_width_chars(4) - - num_page_item.add(self._num_page_entry) - self._num_page_entry.show() - - self.insert(num_page_item, -1) - num_page_item.show() - - total_page_item = gtk.ToolItem() - - self._total_page_label = gtk.Label() - - label_attributes = pango.AttrList() - label_attributes.insert(pango.AttrSize(14000, 0, -1)) - label_attributes.insert(pango.AttrForeground(65535, 65535, 65535, 0, -1)) - self._total_page_label.set_attributes(label_attributes) - - self._total_page_label.set_text(' / 0') - total_page_item.add(self._total_page_label) - self._total_page_label.show() - - self.insert(total_page_item, -1) - total_page_item.show() - - def _insert_search_items(self): - search_item = gtk.ToolItem() - - self._search_entry = gtk.Entry() - self._search_entry.connect("activate", self._search_entry_activate_cb) - - width = int(gtk.gdk.screen_width() / 3) - self._search_entry.set_size_request(width, -1) - - search_item.add(self._search_entry) - self._search_entry.show() - - self.insert(search_item, -1) - search_item.show() - - self._prev = gtk.ToolButton() - self._prev.props.sensitive = False - self._prev.set_icon_name('stock-back') - self._prev.connect("clicked", self._find_prev_cb) - self.insert(self._prev, -1) - self._prev.show() - - self._next = gtk.ToolButton() - self._next.props.sensitive = False - self._next.set_icon_name('stock-forward') - self._next.connect("clicked", self._find_next_cb) - self.insert(self._next, -1) - self._next.show() - - def _num_page_entry_activate_cb(self, entry): - page = int(entry.get_text()) - 1 - self._document.get_page_cache().set_current_page(page) - - def _search_entry_activate_cb(self, entry): - current_page = self._document.get_page_cache().get_current_page() - self._document.find_begin(0, entry.get_text(), False) - self._update_find_buttons() - - def _find_prev_cb(self, button): - self._evince_view.find_previous() - - def _find_next_cb(self, button): - self._evince_view.find_next() - - def _go_back_cb(self, button): - self._evince_view.previous_page() - - def _go_forward_cb(self, button): - self._evince_view.next_page() - - def _page_changed_cb(self, page, proxy): - self._update_nav_buttons() - - def _find_changed_cb(self, page, spec): - self._update_find_buttons() - - def _update_nav_buttons(self): - current_page = self._document.get_page_cache().get_current_page() - self._back.props.sensitive = current_page > 0 - self._forward.props.sensitive = current_page < self._document.get_n_pages() - 1 - - self._num_page_entry.set_text(str(current_page + 1)) - self._total_page_label.set_text(' / ' + str(self._document.get_n_pages())) - - def _update_find_buttons(self): - self._prev.props.sensitive = self._evince_view.can_find_previous() - self._next.props.sensitive = self._evince_view.can_find_next() - diff --git a/xbooktoolbar.py b/xbooktoolbar.py new file mode 100644 index 0000000..419f0ac --- /dev/null +++ b/xbooktoolbar.py @@ -0,0 +1,124 @@ +# Copyright (C) 2006, Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import logging + +import hippo + +from sugar.graphics import font +from sugar.graphics import color +from sugar.graphics import units +from sugar.graphics.toolbar import Toolbar +from sugar.graphics.iconbutton import IconButton +from sugar.graphics.entry import Entry + +class XbookToolbar(Toolbar): + def __init__(self, evince_view): + Toolbar.__init__(self) + + self._evince_view = evince_view + self._document = None + + self._insert_nav_items() + self._insert_spring() + self._insert_search_items() + + def set_document(self, document): + self._document = document + self._document.connect("find_changed", self._find_changed_cb) + + page_cache = self._document.get_page_cache() + page_cache.connect("page-changed", self._page_changed_cb) + self._update_nav_buttons() + + def _insert_spring(self): + separator = hippo.CanvasBox() + self.append(separator, hippo.PACK_EXPAND) + + def _insert_nav_items(self): + self._back = IconButton(icon_name='theme:stock-back', active=False) + self._back.connect("activated", self._go_back_cb) + self.append(self._back) + + self._forward = IconButton(icon_name='theme:stock-forward', active=False) + self._forward.connect("activated", self._go_forward_cb) + self.append(self._forward) + + self._num_page_entry = Entry(text='0', box_width=units.grid_to_pixels(1)) + self._num_page_entry.connect("activated", + self._num_page_entry_activated_cb) + self.append(self._num_page_entry) + + self._total_page_label = hippo.CanvasText(text=' / 0', + font_desc=font.DEFAULT.get_pango_desc(), + color=color.WHITE.get_int()) + self.append(self._total_page_label) + + def _insert_search_items(self): + self._search_entry = Entry() + self._search_entry.connect("activated", self._search_entry_activated_cb) + + self.append(self._search_entry, hippo.PACK_EXPAND) + + self._prev = IconButton(icon_name='theme:stock-back', active=False) + self._prev.connect("activated", self._find_prev_cb) + self.append(self._prev) + + self._next = IconButton(icon_name='theme:stock-forward', active=False) + self._next.connect("activated", self._find_next_cb) + self.append(self._next) + + def _num_page_entry_activated_cb(self, entry): + page = int(entry.props.text) - 1 + self._document.get_page_cache().set_current_page(page) + + def _search_entry_activated_cb(self, entry): + current_page = self._document.get_page_cache().get_current_page() + self._document.find_begin(0, entry.props.text, False) + self._update_find_buttons() + + def _find_prev_cb(self, button): + self._evince_view.find_previous() + + def _find_next_cb(self, button): + self._evince_view.find_next() + + def _go_back_cb(self, button): + self._evince_view.previous_page() + + def _go_forward_cb(self, button): + self._evince_view.next_page() + + def _page_changed_cb(self, page, proxy): + self._update_nav_buttons() + + def _find_changed_cb(self, page, spec): + self._update_find_buttons() + + def _update_nav_buttons(self): + current_page = self._document.get_page_cache().get_current_page() + self._back.props.active = current_page > 0 + self._forward.props.active = \ + current_page < self._document.get_n_pages() - 1 + + self._num_page_entry.props.text = str(current_page + 1) + self._total_page_label.props.text = \ + ' / ' + str(self._document.get_n_pages()) + + def _update_find_buttons(self): + self._prev.props.active = self._evince_view.can_find_previous() + self._next.props.active = self._evince_view.can_find_next() + |