[Pkg-sugar-commit] [sugar-toolkit] 92/118: Changes to a Journal entries metadata are wiped if activity is still open (#1765)
Jonas Smedegaard
dr at jones.dk
Thu Apr 16 18:49:46 UTC 2015
This is an automated email from the git hooks/post-receive script.
js pushed a commit to annotated tag debian/0.84.10-1
in repository sugar-toolkit.
commit 0fc8157a442c0317edcf21d93503efa2de6a55c1
Author: Simon Schampijer <simon at schampijer.de>
Date: Mon Mar 22 18:29:49 2010 +0530
Changes to a Journal entries metadata are wiped if activity is still open (#1765)
---
src/sugar/datastore/datastore.py | 46 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py
index d174bd4..6ff10de 100644
--- a/src/sugar/datastore/datastore.py
+++ b/src/sugar/datastore/datastore.py
@@ -27,11 +27,29 @@ import tempfile
import gobject
import gconf
import gio
+import dbus
from sugar import env
from sugar.datastore import dbus_helpers
from sugar import mime
+DS_DBUS_SERVICE = "org.laptop.sugar.DataStore"
+DS_DBUS_INTERFACE = "org.laptop.sugar.DataStore"
+DS_DBUS_PATH = "/org/laptop/sugar/DataStore"
+
+_data_store = None
+
+def _get_data_store():
+ global _data_store
+
+ if not _data_store:
+ _bus = dbus.SessionBus()
+ _data_store = dbus.Interface(_bus.get_object(DS_DBUS_SERVICE,
+ DS_DBUS_PATH),
+ DS_DBUS_INTERFACE)
+ return _data_store
+
+
class DSMetadata(gobject.GObject):
__gsignals__ = {
'updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
@@ -83,13 +101,39 @@ class DSMetadata(gobject.GObject):
else:
return default
+ def update(self, properties):
+ """Update all of the metadata"""
+ for (key, value) in properties.items():
+ self[key] = value
+
+
class DSObject(object):
def __init__(self, object_id, metadata=None, file_path=None):
- self.object_id = object_id
+ self.set_object_id(object_id)
self._metadata = metadata
self._file_path = file_path
self._destroyed = False
self._owns_file = False
+ self._update_signal_match = None
+
+ def get_object_id(self):
+ return self._object_id
+
+ def set_object_id(self, object_id):
+ if object_id is not None:
+ if self._update_signal_match is not None:
+ self._update_signal_match.remove()
+ self._update_signal_match = _get_data_store().connect_to_signal( \
+ 'Updated', self.__object_updated_cb, arg0=object_id)
+
+ self._object_id = object_id
+
+ object_id = property(get_object_id, set_object_id)
+
+ def __object_updated_cb(self, object_id):
+ properties = _get_data_store().get_properties(self.object_id,
+ byte_arrays=True)
+ self._metadata.update(properties)
def get_metadata(self):
if self._metadata is None and not self.object_id is None:
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-sugar/sugar-toolkit.git
More information about the pkg-sugar-commit
mailing list