diff options
author | Simon Schampijer <simon@schampijer.de> | 2010-01-24 16:53:32 (GMT) |
---|---|---|
committer | Simon Schampijer <simon@schampijer.de> | 2010-01-24 16:53:32 (GMT) |
commit | e1d4afe13e3b49f01083a00ca4b83cc4011829d8 (patch) | |
tree | 53e58dc222255a64e986098332d107798e8f1a83 /src/sugar/datastore/datastore.py | |
parent | a6df826d33f07eb91328204e345f8ef2ee1ff0b8 (diff) |
Add signal listener functionality to the DS #1197 (silbe)
Diffstat (limited to 'src/sugar/datastore/datastore.py')
-rw-r--r-- | src/sugar/datastore/datastore.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py index cea2265..66e29ed 100644 --- a/src/sugar/datastore/datastore.py +++ b/src/sugar/datastore/datastore.py @@ -33,6 +33,7 @@ import dbus.glib from sugar import env from sugar import mime +from sugar import dispatch DS_DBUS_SERVICE = "org.laptop.sugar.DataStore" DS_DBUS_INTERFACE = "org.laptop.sugar.DataStore" @@ -50,9 +51,33 @@ def _get_data_store(): _data_store = dbus.Interface(_bus.get_object(DS_DBUS_SERVICE, DS_DBUS_PATH), DS_DBUS_INTERFACE) + _data_store.connect_to_signal('Created', __datastore_created_cb) + _data_store.connect_to_signal('Deleted', __datastore_deleted_cb) + _data_store.connect_to_signal('Updated', __datastore_updated_cb) + return _data_store +def __datastore_created_cb(object_id): + metadata = _get_data_store().get_properties(object_id, byte_arrays=True) + updated.send(None, object_id=object_id, metadata=metadata) + + +def __datastore_updated_cb(object_id): + metadata = _get_data_store().get_properties(object_id, byte_arrays=True) + updated.send(None, object_id=object_id, metadata=metadata) + + +def __datastore_deleted_cb(object_id): + deleted.send(None, object_id=object_id) + +created = dispatch.Signal() +deleted = dispatch.Signal() +updated = dispatch.Signal() + +_get_data_store() + + class DSMetadata(gobject.GObject): """A representation of the metadata associated with a DS entry.""" __gsignals__ = { |