Implement setting the journal entry title from the toolbar.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user