From c566726f461b147d9b44c1dc09ee0818cbc96f24 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 13 Oct 2006 10:22:01 +0200 Subject: [PATCH] Add a bunch of files I forgot --- activities/web/Makefile.am | 7 ++++ activities/web/__init__.py | 0 activities/web/toolbar.py | 40 +++++++++++++++++++ activities/web/webactivity.py | 14 +++++++ activities/web/webbrowser.py | 73 +++++++++++++++++++++++++++++++++++ 5 files changed, 134 insertions(+) create mode 100644 activities/web/Makefile.am create mode 100644 activities/web/__init__.py create mode 100644 activities/web/toolbar.py create mode 100644 activities/web/webactivity.py create mode 100644 activities/web/webbrowser.py diff --git a/activities/web/Makefile.am b/activities/web/Makefile.am new file mode 100644 index 00000000..0a052a1f --- /dev/null +++ b/activities/web/Makefile.am @@ -0,0 +1,7 @@ +sugardir = $(pkgdatadir)/activities/web +sugar_PYTHON = \ + __init__.py \ + webactivity.py \ + webbrowser.py + +EXTRA_DIST = web.activity diff --git a/activities/web/__init__.py b/activities/web/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/activities/web/toolbar.py b/activities/web/toolbar.py new file mode 100644 index 00000000..53d8c6da --- /dev/null +++ b/activities/web/toolbar.py @@ -0,0 +1,40 @@ +import gtk + +class Toolbar(gtk.Toolbar): + def __init__(self): + gtk.Toolbar.__init__(self) + + self.set_style(gtk.TOOLBAR_BOTH_HORIZ) + + self._insert_spring() + + self.back = gtk.ToolButton(None, _('Back')) + 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(None, _('Forward')) + self.forward.set_icon_name('stock-forward') + self.forward.connect("clicked", self.__go_forward_cb) + self.insert(self.forward, -1) + self.forward.show() + + separator = gtk.SeparatorToolItem() + separator.set_draw(False) + self.insert(separator, -1) + separator.show() + + self._address_item = AddressItem() + self._address_item.connect('open-address', self.__open_address_cb) + self.insert(self._address_item, -1) + self._address_item.show() + + self._insert_spring() + + def _insert_spring(self): + separator = gtk.SeparatorToolItem() + separator.set_draw(False) + separator.set_expand(True) + self.insert(separator, -1) + separator.show() diff --git a/activities/web/webactivity.py b/activities/web/webactivity.py new file mode 100644 index 00000000..21175ff0 --- /dev/null +++ b/activities/web/webactivity.py @@ -0,0 +1,14 @@ +from sugar.activity.Activity import Activity +from webbrowser import WebBrowser + +_HOMEPAGE = 'http://www.google.com' + +class WebActivity(Activity): + def __init__(self): + Activity.__init__(self) + + self._browser = WebBrowser() + self.add(self._browser) + self._browser.show() + + self._browser.load_url(_HOMEPAGE) diff --git a/activities/web/webbrowser.py b/activities/web/webbrowser.py new file mode 100644 index 00000000..3673c0b1 --- /dev/null +++ b/activities/web/webbrowser.py @@ -0,0 +1,73 @@ +import gobject + +from _sugar import Browser + +class _PopupCreator(gobject.GObject): + __gsignals__ = { + 'popup-created': (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, ([])), + } + + def __init__(self, parent_window): + gobject.GObject.__init__(self) + + logging.debug('Creating the popup widget') + + self._sized_popup = False + self._parent_window = parent_window + + self._dialog = gtk.Window() + self._dialog.set_resizable(True) + + self._dialog.realize() + self._dialog.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) + + self._embed = Browser() + self._size_to_sid = self._embed.connect('size_to', self._size_to_cb) + self._vis_sid = self._embed.connect('visibility', self._visibility_cb) + + self._dialog.add(self._embed) + + def _size_to_cb(self, embed, width, height): + logging.debug('Resize the popup to %d %d' % (width, height)) + self._sized_popup = True + self._dialog.resize(width, height) + + def _visibility_cb(self, embed, visible): + if visible: + if self._sized_popup: + logging.debug('Show the popup') + self._embed.show() + self._dialog.set_transient_for(self._parent_window) + self._dialog.show() + else: + logging.debug('Open a new activity for the popup') + self._dialog.remove(self._embed) + + activity = BrowserActivity(self._embed) + activity.set_type('com.redhat.Sugar.BrowserActivity') + + self._embed.disconnect(self._size_to_sid) + self._embed.disconnect(self._vis_sid) + + self.emit('popup-created') + + def get_embed(self): + return self._embed + +class WebBrowser(Browser): + __gtype_name__ = "SugarWebBrowser" + + def __init__(self): + Browser.__init__(self) + + def do_create_window(self): + popup_creator = _PopupCreator(self.get_toplevel()) + popup_creator.connect('popup-created', self._popup_created_cb) + + self._popup_creators.append(popup_creator) + + return popup_creator.get_embed() + + def _popup_created_cb(self, creator): + self._popup_creators.remove(creator)