Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugarcommander.py
diff options
context:
space:
mode:
authorJames Simmons <jim@simmons.olpc>2010-03-30 00:49:57 (GMT)
committer James Simmons <jim@simmons.olpc>2010-03-30 00:49:57 (GMT)
commit43ea737ca55eadd6e3deb70701a474a04745c387 (patch)
tree1db7484d185fd79a57928834ad63677bbed1892e /sugarcommander.py
parent7ade75aa4e27ce0e6553f07a42cbccbe1b4193f6 (diff)
Add D-Bus logic for Journal update notification
Diffstat (limited to 'sugarcommander.py')
-rwxr-xr-xsugarcommander.py75
1 files changed, 55 insertions, 20 deletions
diff --git a/sugarcommander.py b/sugarcommander.py
index 4fb53ac..117ca9e 100755
--- a/sugarcommander.py
+++ b/sugarcommander.py
@@ -32,6 +32,11 @@ COLUMN_TITLE = 0
COLUMN_MIME = 1
COLUMN_JOBJECT = 2
+DS_DBUS_SERVICE = 'org.laptop.sugar.DataStore'
+DS_DBUS_INTERFACE = 'org.laptop.sugar.DataStore'
+DS_DBUS_PATH = '/org/laptop/sugar/DataStore'
+import dbus
+
_logger = logging.getLogger('get-ia-books-activity')
class SugarCommander(activity.Activity):
@@ -44,8 +49,9 @@ class SugarCommander(activity.Activity):
canvas.props.show_tabs = True
canvas.show()
- self.ls_journal = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING,\
- gobject.TYPE_PYOBJECT)
+ self.ls_journal = gtk.ListStore(gobject.TYPE_STRING, \
+ gobject.TYPE_STRING,\
+ gobject.TYPE_PYOBJECT)
tv_journal = gtk.TreeView(self.ls_journal)
tv_journal.set_rules_hint(True)
tv_journal.set_search_column(COLUMN_TITLE)
@@ -56,16 +62,20 @@ class SugarCommander(activity.Activity):
renderer.set_property('wrap-mode', gtk.WRAP_WORD)
renderer.set_property('wrap-width', 500)
renderer.set_property('width', 500)
- self.col_journal = gtk.TreeViewColumn(_('Title'), renderer, text=COLUMN_TITLE)
+ self.col_journal = gtk.TreeViewColumn(_('Title'), renderer, \
+ text=COLUMN_TITLE)
self.col_journal.set_sort_column_id(COLUMN_TITLE)
tv_journal.append_column(self.col_journal)
- self.col_mime = gtk.TreeViewColumn(_('MIME'), renderer, text=COLUMN_MIME)
+ self.col_mime = gtk.TreeViewColumn(_('MIME'), renderer, \
+ text=COLUMN_MIME)
self.col_mime.set_sort_column_id(COLUMN_MIME)
tv_journal.append_column(self.col_mime)
- self.list_scroller_journal = gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
- self.list_scroller_journal.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ self.list_scroller_journal = gtk.ScrolledWindow(\
+ hadjustment=None, vadjustment=None)
+ self.list_scroller_journal.set_policy(\
+ gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.list_scroller_journal.add(tv_journal)
label_attributes = pango.AttrList()
@@ -125,9 +135,11 @@ class SugarCommander(activity.Activity):
self.description_textview.set_wrap_mode(gtk.WRAP_WORD)
entry_table.attach(self.description_textview, 1, 2, 1, 2, \
xoptions=gtk.EXPAND|gtk.FILL|gtk.SHRINK, \
- yoptions=gtk.EXPAND|gtk.FILL|gtk.SHRINK, xpadding=10, ypadding=10)
+ yoptions=gtk.EXPAND|gtk.FILL|gtk.SHRINK, \
+ xpadding=10, ypadding=10)
self.description_textview.props.accepts_tab = False
- self.description_textview.connect('key_press_event', self.key_press_event_cb)
+ self.description_textview.connect('key_press_event', \
+ self.key_press_event_cb)
self.description_textview.show()
tags_label = gtk.Label(_("Tags"))
@@ -145,14 +157,16 @@ class SugarCommander(activity.Activity):
entry_table.show()
- self.scroller_entry = gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
+ self.scroller_entry = gtk.ScrolledWindow(\
+ hadjustment=None, vadjustment=None)
self.scroller_entry.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
self.scroller_entry.add_with_viewport(entry_table)
self.scroller_entry.show()
column_table.attach(self.scroller_entry, 1, 2, 0, 1, \
xoptions=gtk.FILL|gtk.EXPAND|gtk.SHRINK, \
- yoptions=gtk.FILL|gtk.EXPAND|gtk.SHRINK, xpadding=10, ypadding=10)
+ yoptions=gtk.FILL|gtk.EXPAND|gtk.SHRINK, \
+ xpadding=10, ypadding=10)
image_table.show()
column_table.show()
@@ -186,6 +200,13 @@ class SugarCommander(activity.Activity):
self.load_journal_table()
+ bus = dbus.SessionBus()
+ remote_object = bus.get_object(DS_DBUS_SERVICE, DS_DBUS_PATH)
+ _datastore = dbus.Interface(remote_object, DS_DBUS_INTERFACE)
+ _datastore.connect_to_signal('Created', self._datastore_created_cb)
+ _datastore.connect_to_signal('Updated', self._datastore_updated_cb)
+ _datastore.connect_to_signal('Deleted', self._datastore_deleted_cb)
+
self.selected_journal_entry = None
def key_press_event_cb(self, entry, event):
@@ -196,15 +217,29 @@ class SugarCommander(activity.Activity):
def delete_button_press_event_cb(self, entry, event):
datastore.delete(self.selected_journal_entry.object_id)
- self.title_entry.set_text('')
- description_textbuffer = self.description_textview.get_buffer()
- description_textbuffer.set_text('')
- tags_textbuffer = self.tags_textview.get_buffer()
- tags_textbuffer.set_text('')
- self.image.clear()
- self.image.show()
- self.load_journal_table()
+ def _datastore_created_cb(self, uid):
+ self.load_journal_table()
+
+ def _datastore_updated_cb(self, uid):
+ pass
+
+ def _datastore_deleted_cb(self, uid):
+ self.load_journal_table()
+ object_id = self.selected_journal_entry.object_id
+ try:
+ jobject = datastore.get(object_id)
+ except:
+ self.title_entry.set_text('')
+ description_textbuffer = self.description_textview.get_buffer()
+ description_textbuffer.set_text('')
+ tags_textbuffer = self.tags_textview.get_buffer()
+ tags_textbuffer.set_text('')
+ self.btn_save.props.sensitive = False
+ self.btn_delete.props.sensitive = False
+ self.image.clear()
+ self.image.show()
+
def update_entry(self):
needs_update = False
needs_reload = False
@@ -258,6 +293,7 @@ class SugarCommander(activity.Activity):
if sel:
model, iter = sel
jobject = model.get_value(iter,COLUMN_JOBJECT)
+ jobject = datastore.get(jobject.object_id)
self.selected_journal_entry = jobject
self.title_entry.set_text(jobject.metadata['title'])
description_textbuffer = self.description_textview.get_buffer()
@@ -316,7 +352,7 @@ class SugarCommander(activity.Activity):
if mountpoint_id is not None:
query['mountpoints'] = [ mountpoint_id ]
ds_objects, num_objects = datastore.find(query, properties=['uid', \
- 'title', 'description', 'tags', 'mtime', 'mime_type'])
+ 'title', 'mime_type'])
self.ls_journal.clear()
mount = ''
@@ -347,7 +383,6 @@ class SugarCommander(activity.Activity):
journal_entry.metadata['preview'] = ''
journal_entry.file_path = filename
datastore.write(journal_entry)
- self.load_journal_table()
self._alert(_('Success'), _('%s added to Journal.') % filename)
def _alert(self, title, text=None):