From eae27064616c71468fa0a810c02d5ea6e24835b3 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 17 Sep 2007 01:23:42 +0000 Subject: Remove unused modules. --- diff --git a/dnd.py b/dnd.py deleted file mode 100644 index d587b6b..0000000 --- a/dnd.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2007, One Laptop Per Child -# -# 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 os -import tempfile -import logging - -from xpcom.nsError import * -from xpcom import ServerException -from xpcom import components -from xpcom.components import interfaces - -from documentnode import DocumentNode - -class UriListDataProvider: - _com_interfaces_ = interfaces.nsIFlavorDataProvider - - def __init__(self, doc_node): - self._doc_node = doc_node - self._file_path = None - - def __del__(self): - if self._file_path: - os.remove(self._file_path) - - def getFlavorData(self, transferable, flavor): - if flavor != 'text/uri-list': - raise COMException(NS_ERROR_NOT_IMPLEMENTED) - - mime_type = self._doc_node.get_image_mime_type() - image_name = self._doc_node.get_image_name() - image_name, file_ext = os.path.splitext(image_name) - - if file_ext: - file_ext = file_ext[1:] - - cls = components.classes['@mozilla.org/mime;1'] - mime_service = cls.getService(interfaces.nsIMIMEService) - file_ext = mime_service.getPrimaryExtension(mime_type, file_ext) - - f, self._file_path = tempfile.mkstemp(image_name + '.' + file_ext) - del f - - self._doc_node.save_image(self._file_path) - - cls = components.classes['@mozilla.org/supports-string;1'] - string_supports = cls.createInstance(interfaces.nsISupportsString) - string_supports.data = 'file://' + self._file_path - - return string_supports, 32 - -class DragDropHooks: - _com_interfaces_ = interfaces.nsIClipboardDragDropHooks - - def __init__(self, browser): - self._browser = browser - - def allowDrop(self, event, session): - raise ServerException(NS_ERROR_NOT_IMPLEMENTED) - - def allowStartDrag(self, event): - raise ServerException(NS_ERROR_NOT_IMPLEMENTED) - - def onPasteOrDrop(self, event, trans): - return False - - def onCopyOrDrag(self, event, trans): - if not event: - logging.warning('DragDropHooks.onCopyOrDrag: no event received.') - return True - - mouse_event = event.queryInterface(interfaces.nsIDOMMouseEvent) - event_target = mouse_event.target - target_node = event_target.queryInterface(interfaces.nsIDOMNode) - document_node = DocumentNode(target_node, self._browser.web_navigation) - - if document_node.is_image(): - # Take out this flavors as they confuse the receivers: - trans.removeDataFlavor('text/x-moz-url') - trans.removeDataFlavor('text/html') - trans.removeDataFlavor('text/unicode') - - data_provider = UriListDataProvider(document_node) - trans.addDataFlavor('text/uri-list') - trans.setTransferData('text/uri-list', data_provider, 0) - - return True - diff --git a/documentnode.py b/documentnode.py deleted file mode 100644 index ac6ac28..0000000 --- a/documentnode.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright (C) 2007, One Laptop Per Child -# -# 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 os.path -import urlparse - -from xpcom.nsError import * -from xpcom import COMException -from xpcom import components -from xpcom.components import interfaces - -class DocumentNode: - def __init__(self, DOM_node, web_navigation): - self._DOM_node = DOM_node - self._image_element = None - self._image_name = None - self._image_mime_type = None - self._image_properties = None - self._web_navigation = web_navigation - - def is_image(self): - if self._image_element: - return True - - if self._DOM_node.nodeType == interfaces.nsIDOMNode.ELEMENT_NODE: - element = self._DOM_node.queryInterface(interfaces.nsIDOMHTMLElement) - if element.localName.lower() == "img": - self._image_element = element.queryInterface( - interfaces.nsIDOMHTMLImageElement) - return True - - return False - - def _get_image_properties(self): - if not self.is_image(): - return None - - if not self._image_properties: - cls = components.classes['@mozilla.org/network/simple-uri;1'] - uri = cls.createInstance(interfaces.nsIURI) - uri.spec = self._image_element.src - - cls = components.classes['@mozilla.org/image/cache;1'] - image_cache = cls.getService(interfaces.imgICache) - self._image_properties = image_cache.findEntryProperties(uri) - - return self._image_properties - - def get_image_mime_type(self): - if not self.is_image(): - return None - - if not self._image_mime_type: - properties = self._get_image_properties() - self._image_mime_type = properties.get('type', - interfaces.nsISupportsCString).data - - return self._image_mime_type - - def get_image_name(self): - if not self.is_image(): - return None - - if not self._image_name: - properties = self._get_image_properties() - if properties.has('content-disposition'): - content_disposition = properties.get('content-disposition', - interfaces.nsISupportsCString).data - - cls = components.classes['@mozilla.org/network/mime-hdrparam;1'] - header_param = cls.getService(interfaces.nsIMIMEHeaderParam) - self._image_name = header_param.getParameter(content_disposition, - 'filename', '', True, None) - - if not self._image_name: - self._image_name = header_param.getParameter(content_disposition, - 'name', '', True, None) - - if not self._image_name: - url = urlparse.urlparse(self._image_element.src) - path = url[2] - self._image_name = os.path.split(path)[1] - - return self._image_name - - def save_image(self, file_path): - """ Based on nsWebBrowserPersist::OnDataAvailable: - http://lxr.mozilla.org/seamonkey/source/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.cpp - """ - cls = components.classes['@mozilla.org/network/io-service;1'] - io_service = cls.getService(interfaces.nsIIOService) - uri = io_service.newURI(self._image_element.src, None, None) - - cls = components.classes['@mozilla.org/file/local;1'] - dest_file = cls.createInstance(interfaces.nsILocalFile) - dest_file.initWithPath(file_path) - - cls = components.classes['@mozilla.org/network/io-service;1'] - io_service = cls.getService(interfaces.nsIIOService) - input_channel = io_service.newChannelFromURI(uri) - - session_history = self._web_navigation.sessionHistory - entry = session_history.getEntryAtIndex(session_history.index, False) - entry = entry.queryInterface(interfaces.nsISHEntry) - post_data = entry.postData - if post_data: - http_channel = input_channel.queryInterface(interfaces.nsIHttpChannel) - stream = post_data.queryInterface(interfaces.nsISeekableStream) - stream.seek(interfaces.nsISeekableStream.NS_SEEK_SET, 0) - - upload_channel = http_channel.queryInterface(interfaces.nsIUploadChannel) - upload_channel.setUploadStream(post_data, '', -1) - - http_input_stream = input_channel.open() - - cls = components.classes['@mozilla.org/network/file-output-stream;1'] - file_output_stream = cls.createInstance(interfaces.nsIFileOutputStream) - file_output_stream.init(dest_file, -1, -1, 0) - - buf = str(http_input_stream.read(8192)) - while buf: - bytes_read = len(buf) - print "bytes_read %i" % bytes_read - bytes_to_write = bytes_read - while bytes_to_write: - bytes_written = file_output_stream.write(buf, bytes_read) - print "bytes_written %i" % bytes_written - bytes_to_write -= bytes_written - - buf = str(http_input_stream.read(8192)) - - http_input_stream.close() - file_output_stream.close() - -- cgit v0.9.1