Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-09-16 13:34:26 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-09-16 13:34:26 (GMT)
commitbe32d3fb6705ad238adbe5629a5c267e851e3e36 (patch)
treee8670412a0e51681a80e59fb4f47e4638d5f3abf
parent13682dd1b4458899e7044e1e917e5bc7a905fee4 (diff)
Remove the clipboard service wrapper
-rw-r--r--configure.ac1
-rw-r--r--src/sugar/Makefile.am2
-rw-r--r--src/sugar/clipboard/Makefile.am5
-rw-r--r--src/sugar/clipboard/__init__.py22
-rw-r--r--src/sugar/clipboard/clipboardservice.py230
5 files changed, 1 insertions, 259 deletions
diff --git a/configure.ac b/configure.ac
index 23605ae..271bc4a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -39,7 +39,6 @@ src/Makefile
src/sugar/Makefile
src/sugar/activity/Makefile
src/sugar/bundle/Makefile
-src/sugar/clipboard/Makefile
src/sugar/graphics/Makefile
src/sugar/presence/Makefile
src/sugar/datastore/Makefile
diff --git a/src/sugar/Makefile.am b/src/sugar/Makefile.am
index ef7e634..dabb35d 100644
--- a/src/sugar/Makefile.am
+++ b/src/sugar/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = activity bundle clipboard graphics presence datastore
+SUBDIRS = activity bundle graphics presence datastore
sugardir = $(pythondir)/sugar
sugar_PYTHON = \
diff --git a/src/sugar/clipboard/Makefile.am b/src/sugar/clipboard/Makefile.am
deleted file mode 100644
index 0d61c29..0000000
--- a/src/sugar/clipboard/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-sugardir = $(pythondir)/sugar/clipboard
-sugar_PYTHON = \
- __init__.py \
- clipboardservice.py
-
diff --git a/src/sugar/clipboard/__init__.py b/src/sugar/clipboard/__init__.py
deleted file mode 100644
index deee8dd..0000000
--- a/src/sugar/clipboard/__init__.py
+++ /dev/null
@@ -1,22 +0,0 @@
-"""Client-code's interface to the ClipboardService
-
-Provides a simplified API for accessing the dbus service
-which coordinates clipboard operations within Sugar.
-"""
-# Copyright (C) 2007, One Laptop Per Child
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
diff --git a/src/sugar/clipboard/clipboardservice.py b/src/sugar/clipboard/clipboardservice.py
deleted file mode 100644
index 59ef0fb..0000000
--- a/src/sugar/clipboard/clipboardservice.py
+++ /dev/null
@@ -1,230 +0,0 @@
-"""UI class to access system-level clipboard object"""
-# Copyright (C) 2007, One Laptop Per Child
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-import logging
-import dbus
-import gobject
-
-NAME_KEY = 'NAME'
-PERCENT_KEY = 'PERCENT'
-ICON_KEY = 'ICON'
-PREVIEW_KEY = 'PREVIEW'
-ACTIVITIES_KEY = 'ACTIVITIES'
-FORMATS_KEY = 'FORMATS'
-
-TYPE_KEY = 'TYPE'
-DATA_KEY = 'DATA'
-ON_DISK_KEY = 'ON_DISK'
-
-DBUS_SERVICE = "org.laptop.Clipboard"
-DBUS_INTERFACE = "org.laptop.Clipboard"
-DBUS_PATH = "/org/laptop/Clipboard"
-
-class ClipboardService(gobject.GObject):
- """GUI interfaces for the system clipboard dbus service
-
- This object is used to provide convenient access to the clipboard
- service (see source/services/clipboard/clipboardservice.py). It
- provides utility methods for adding/getting/removing objects from
- the clipboard as well as generating events when such events occur.
-
- Meaning is source/services/clipboard/clipboardobject.py
- objects when describing "objects" on the clipboard.
- """
- __gsignals__ = {
- 'object-added': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([str, str])),
- 'object-deleted': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([str])),
- 'object-state-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([str, str, int, str, str, object])),
- }
-
- def __init__(self):
- """Initialise the ClipboardService instance
-
- If the service is not yet active in the background uses
- a signal watcher to connect when the service appears.
- """
- gobject.GObject.__init__(self)
-
- self._dbus_service = None
-
- bus = dbus.SessionBus()
- self._nameOwnerChangedHandler = bus.add_signal_receiver(
- self._name_owner_changed_cb,
- signal_name="NameOwnerChanged",
- dbus_interface="org.freedesktop.DBus",
- arg0=DBUS_SERVICE)
-
- self._connected = False
- # Try to register to ClipboardService, if we fail, we'll try later.
- try:
- self._connect_clipboard_signals()
- except dbus.DBusException, exception:
- logging.debug(exception)
-
- def _connect_clipboard_signals(self):
- """Connect dbus signals to our GObject signal generating callbacks"""
- bus = dbus.SessionBus()
- if not self._connected:
- # NOTE: We need to follow_name_owner_changes here
- # because we can not connect to a signal unless
- # we follow the changes or we start the service
- # before we connect. Starting the service here
- # causes a major bottleneck during startup
- proxy_obj = bus.get_object(DBUS_SERVICE,
- DBUS_PATH,
- follow_name_owner_changes=True)
- self._dbus_service = dbus.Interface(proxy_obj, DBUS_SERVICE)
- self._dbus_service.connect_to_signal('object_added',
- self._object_added_cb)
- self._dbus_service.connect_to_signal('object_deleted',
- self._object_deleted_cb)
- self._dbus_service.connect_to_signal('object_state_changed',
- self._object_state_changed_cb)
- self._connected = True
-
- bus.remove_signal_receiver(self._nameOwnerChangedHandler)
-
- def _name_owner_changed_cb(self, name, old, new):
- """On backend service creation, connect to the server"""
- if not old and new:
- # ClipboardService started up
- self._connect_clipboard_signals()
-
- def _object_added_cb(self, object_id, name):
- """Emit an object-added GObject event when dbus event arrives"""
- self.emit('object-added', str(object_id), name)
-
- def _object_deleted_cb(self, object_id):
- """Emit an object-deleted GObject event when dbus event arrives"""
- self.emit('object-deleted', str(object_id))
-
- def _object_state_changed_cb(self, object_id, values):
- """Emit an object-state-changed GObject event when dbus event arrives
-
- GObject event has:
-
- object_id
- name
- percent
- icon
- preview
- activities
-
- From the ClipboardObject instance which is being described.
- """
- self.emit('object-state-changed', str(object_id), values[NAME_KEY],
- values[PERCENT_KEY], values[ICON_KEY], values[PREVIEW_KEY],
- values[ACTIVITIES_KEY])
-
- def add_object(self, name):
- """Add a new object to the path
-
- returns dbus path-name for the new object's cliboard service,
- this is used for all future references to the cliboard object.
-
- Note:
- That service is actually provided by the clipboard
- service object, not the ClipboardObject
- """
- return str(self._dbus_service.add_object(name))
-
- def add_object_format(self, object_id, formatType, data, on_disk):
- """Annotate given object on the clipboard with new information
-
- object_id -- dbus path as returned from add_object
- formatType -- XXX what should this be? mime type?
- data -- storage format for the clipped object?
- on_disk -- whether the data is on-disk (non-volatile) or in
- memory (volatile)
-
- Last three arguments are just passed directly to the
- clipboardobject.Format instance on the server side.
-
- returns None
- """
- self._dbus_service.add_object_format(dbus.ObjectPath(object_id),
- formatType,
- data,
- on_disk)
-
- def delete_object(self, object_id):
- """Remove the given object from the clipboard
-
- object_id -- dbus path as returned from add_object
- """
- self._dbus_service.delete_object(dbus.ObjectPath(object_id))
-
- def set_object_percent(self, object_id, percent):
- """Set the "percentage" for the given clipboard object
-
- object_id -- dbus path as returned from add_object
- percentage -- numeric value from 0 to 100 inclusive
-
- Object percentages which are set to 100% trigger "file-completed"
- operations, see the backend ClipboardService's
- _handle_file_completed method for details.
-
- returns None
- """
- self._dbus_service.set_object_percent(
- dbus.ObjectPath(object_id), percent)
-
- def get_object(self, object_id):
- """Retrieve the clipboard object structure for given object
-
- object_id -- dbus path as returned from add_object
-
- Retrieves the metadata description of a given object, but
- *not* the data for the object. Use get_object_data passing
- one of the values in the FORMATS_KEY value in order to
- retrieve the data.
-
- returns dictionary with
- NAME_KEY: str,
- PERCENT_KEY: number,
- ICON_KEY: str,
- PREVIEW_KEY: XXX what is it?,
- ACTIVITIES_KEY: activities that can open this object,
- FORMATS_KEY: list of XXX what is it?
- """
- return self._dbus_service.get_object(dbus.ObjectPath(object_id),)
-
- def get_object_data(self, object_id, formatType):
- """Retrieve object's data in the given formatType
-
- object_id -- dbus path as returned from add_object
- formatType -- format specifier XXX of what description
-
- returns dictionary with
- TYPE_KEY: str,
- DATA_KEY: str,
- ON_DISK_KEY: bool
- """
- return self._dbus_service.get_object_data(dbus.ObjectPath(object_id),
- formatType,
- byte_arrays=True)
-
-_clipboard_service = None
-def get_instance():
- """Retrieve this process's interface to the clipboard service"""
- global _clipboard_service
- if not _clipboard_service:
- _clipboard_service = ClipboardService()
- return _clipboard_service