From a8b17436c94ec188857c4a06efa6ade64a0ef20b Mon Sep 17 00:00:00 2001 From: Lucian Branescu Mihaila Date: Thu, 17 Jun 2010 20:54:30 +0000 Subject: Browse stards and loads pages with pywebkitgtk. Several features are disabled for now, although it mostly has feature-parity with Surf. --- (limited to 'palettes.py') diff --git a/palettes.py b/palettes.py index 0d4023a..e4219f3 100644 --- a/palettes.py +++ b/palettes.py @@ -1,5 +1,6 @@ # Copyright (C) 2008, One Laptop Per Child # Copyright (C) 2009, Tomeu Vizoso, Simon Schampijer +# Copyright (C) 2010, Bobby Powers, Lucian Branescu Mihaila # # 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 @@ -22,9 +23,6 @@ from gettext import gettext as _ import gtk import gobject -import xpcom -from xpcom import components -from xpcom.components import interfaces from sugar.graphics.palette import Palette, Invoker from sugar.graphics.menuitem import MenuItem @@ -35,32 +33,12 @@ from sugar.activity import activity import downloadmanager -class MouseOutListener(gobject.GObject): - _com_interfaces_ = interfaces.nsIDOMEventListener - - __gsignals__ = { - 'mouse-out': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([])) - } - - def __init__(self, target): - gobject.GObject.__init__(self) - self.target = target - - def handleEvent(self, event): - self.emit('mouse-out') - - class ContentInvoker(Invoker): - _com_interfaces_ = interfaces.nsIDOMEventListener def __init__(self, browser): Invoker.__init__(self) self._position_hint = self.AT_CURSOR self._browser = browser - self._mouseout_listener = None - self._popdown_handler_id = None def get_default_position(self): return self.AT_CURSOR @@ -76,7 +54,6 @@ class ContentInvoker(Invoker): return target = event.target - if target.tagName.lower() == 'a': if target.firstChild: @@ -99,32 +76,10 @@ class ContentInvoker(Invoker): self.palette = ImagePalette(title, target.src, target.ownerDocument) self.notify_right_click() - else: - return - - if self._popdown_handler_id is not None: - self._popdown_handler_id = self.palette.connect( \ - 'popdown', self.__palette_popdown_cb) - - self._mouseout_listener = MouseOutListener(target) - wrapper = xpcom.server.WrapObject(self._mouseout_listener, - interfaces.nsIDOMEventListener) - target.addEventListener('mouseout', wrapper, False) - self._mouseout_listener.connect('mouse-out', self.__moved_out_cb) - - def __moved_out_cb(self, listener): - self.palette.popdown() - - def __palette_popdown_cb(self, palette): - if self._mouseout_listener is not None: - wrapper = xpcom.server.WrapObject(self._mouseout_listener, - interfaces.nsIDOMEventListener) - self._mouseout_listener.target.removeEventListener('mouseout', - wrapper, False) - del self._mouseout_listener class LinkPalette(Palette): + def __init__(self, browser, title, url, owner_document): Palette.__init__(self) @@ -236,56 +191,10 @@ class ImagePalette(Palette): os.close(fd) os.chmod(temp_file, 0664) - cls = components.classes['@mozilla.org/network/io-service;1'] - io_service = cls.getService(interfaces.nsIIOService) - uri = io_service.newURI(self._url, None, None) - - cls = components.classes['@mozilla.org/file/local;1'] - target_file = cls.createInstance(interfaces.nsILocalFile) - target_file.initWithPath(temp_file) - - cls = components.classes[ \ - '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] - persist = cls.createInstance(interfaces.nsIWebBrowserPersist) - persist.persistFlags = 1 # PERSIST_FLAGS_FROM_CACHE - listener = xpcom.server.WrapObject(_ImageProgressListener(temp_file), - interfaces.nsIWebProgressListener) - persist.progressListener = listener - persist.saveURI(uri, None, None, None, None, target_file) - def __download_activate_cb(self, menu_item): downloadmanager.save_link(self._url, self._title, self._owner_document) -class _ImageProgressListener(object): - _com_interfaces_ = interfaces.nsIWebProgressListener - - def __init__(self, temp_file): - self._temp_file = temp_file - - def onLocationChange(self, webProgress, request, location): - pass - - def onProgressChange(self, webProgress, request, curSelfProgress, - maxSelfProgress, curTotalProgress, maxTotalProgress): - pass - - def onSecurityChange(self, webProgress, request, state): - pass - - def onStatusChange(self, webProgress, request, status, message): - pass - - def onStateChange(self, webProgress, request, stateFlags, status): - if stateFlags & interfaces.nsIWebProgressListener.STATE_IS_REQUEST and \ - stateFlags & interfaces.nsIWebProgressListener.STATE_STOP: - clipboard = gtk.Clipboard() - clipboard.set_with_data([('text/uri-list', 0, 0)], - _clipboard_get_func_cb, - _clipboard_clear_func_cb, - self._temp_file) - - def _clipboard_get_func_cb(clipboard, selection_data, info, temp_file): selection_data.set_uris(['file://' + temp_file]) -- cgit v0.9.1