From 394870f4ad42032f173e29ab3256d37002349b64 Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Sat, 06 Feb 2010 22:08:17 +0000 Subject: Synchronize changes made to a Journal entry #1358 --- (limited to 'src') diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py index 9502ad5..b83b2e2 100644 --- a/src/sugar/datastore/datastore.py +++ b/src/sugar/datastore/datastore.py @@ -129,17 +129,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): """A representation of a DS entry.""" def __init__(self, object_id, metadata=None, file_path=None): - self.object_id = object_id + self._object_id = object_id self._metadata = metadata self._file_path = file_path self._destroyed = False self._owns_file = False + def get_object_id(self): + return self._object_id + + def set_object_id(self, object_id): + if object_id is not None: + _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: properties = _get_data_store().get_properties(self.object_id) -- cgit v0.9.1