Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/datastore
diff options
context:
space:
mode:
authorTomeu <tomeu@bicho.(none)>2007-05-13 16:21:35 (GMT)
committer Tomeu <tomeu@bicho.(none)>2007-05-13 16:21:35 (GMT)
commitf3289d2e59bff57c1908c306a78ac8fec7c7db4f (patch)
tree06cfc9dd63b87e6554d4be15ce9eb154fd492505 /sugar/datastore
parent309ddec8b769af42f577229bc5e3278c0328f1c4 (diff)
Implement setting the journal entry title from the toolbar.
Diffstat (limited to 'sugar/datastore')
-rw-r--r--sugar/datastore/datastore.py32
-rw-r--r--sugar/datastore/dbus_helpers.py31
2 files changed, 56 insertions, 7 deletions
diff --git a/sugar/datastore/datastore.py b/sugar/datastore/datastore.py
index 74ea607..38842a0 100644
--- a/sugar/datastore/datastore.py
+++ b/sugar/datastore/datastore.py
@@ -22,26 +22,48 @@ from sugar.datastore import dbus_helpers
class DSObject(gobject.GObject):
__gsignals__ = {
'updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT]))
+ ([]))
}
def __init__(self, object_id, metadata, file_path):
gobject.GObject.__init__(self)
self.object_id = object_id
- self.metadata = metadata
- self.file_path = file_path
+ self._metadata = metadata
+ self._file_path = file_path
def __getitem__(self, key):
return self.metadata[key]
def __setitem__(self, key, value):
- self.metadata[key] = value
+ if not self.metadata.has_key(key) or self.metadata[key] != value:
+ self.metadata[key] = value
+ self.emit('updated')
+
+ def get_metadata(self):
+ return self._metadata
+
+ def set_metadata(self, metadata):
+ if self._metadata != metadata:
+ self._metadata = metadata
+ self.emit('updated')
+
+ metadata = property(get_metadata, set_metadata)
+
+ def get_file_path(self):
+ return self._file_path
+
+ def set_file_path(self, file_path):
+ if self._file_path != file_path:
+ self._file_path = file_path
+ self.emit('updated')
+
+ file_path = property(get_file_path, set_file_path)
def get(object_id):
logging.debug('datastore.get')
metadata = dbus_helpers.get_properties(object_id)
file_path = dbus_helpers.get_filename(object_id)
- logging.debug('filepath: ' + file_path)
+
ds_object = DSObject(object_id, metadata, file_path)
# TODO: register the object for updates
return ds_object
diff --git a/sugar/datastore/dbus_helpers.py b/sugar/datastore/dbus_helpers.py
index 9ec73cf..68a1a3b 100644
--- a/sugar/datastore/dbus_helpers.py
+++ b/sugar/datastore/dbus_helpers.py
@@ -34,20 +34,47 @@ except Exception, e:
_data_store = None
logging.error(e)
+def get_contents(filename):
+ if not filename:
+ return ''
+ f = open(filename, "r")
+ try:
+ contents = f.read()
+ finally:
+ f.close()
+ return contents
+
def create(properties, filename):
logging.debug('dbus_helpers.create: %s, %s' % (properties, filename))
+ try:
+ logging.debug(get_contents(filename))
+ except UnicodeDecodeError:
+ pass
object_id = _data_store.create(dbus.Dictionary(properties), filename)
logging.debug('dbus_helpers.create: ' + object_id)
return object_id
def update(uid, properties, filename):
+ logging.debug('dbus_helpers.update: %s, %s, %s' % (uid, properties, filename))
+ try:
+ logging.debug(get_contents(filename))
+ except UnicodeDecodeError:
+ pass
_data_store.update(uid, dbus.Dictionary(properties), filename)
def get_properties(uid):
- return _data_store.get_properties(uid)
+ props = _data_store.get_properties(uid)
+ logging.debug('dbus_helpers.get_properties: %s, %s' % (uid, props))
+ return props
def get_filename(uid):
- return _data_store.get_filename(uid)
+ filename = _data_store.get_filename(uid)
+ logging.debug('dbus_helpers.get_filename: %s, %s' % (uid, filename))
+ try:
+ logging.debug(get_contents(filename))
+ except UnicodeDecodeError:
+ pass
+ return filename
def find(query):
return _data_store.find(query)