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-02-28 14:40:19 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-02-28 14:40:19 (GMT)
commitea3dc16405f2bea263b60be155e201761f17e551 (patch)
tree89d83f351f6c037ffdded8156ac89a8f5d52dc2a
parentb3eaa17442f7cdd7324d14d2db6203ce4d8e7ee6 (diff)
Adapted to API changes.
-rw-r--r--XbookActivity.py34
-rw-r--r--activity/activity.info2
-rw-r--r--toolbar.py163
-rw-r--r--xbooktoolbar.py124
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()
+