diff options
Diffstat (limited to 'src/jarabe/journal')
-rw-r--r-- | src/jarabe/journal/objectchooser.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/jarabe/journal/objectchooser.py b/src/jarabe/journal/objectchooser.py index ecb8ecf..59df14b 100644 --- a/src/jarabe/journal/objectchooser.py +++ b/src/jarabe/journal/objectchooser.py @@ -20,9 +20,12 @@ import logging import gobject import gtk import wnck +import os +from sugar import env from sugar.graphics import style from sugar.graphics.toolbutton import ToolButton +from sugar.datastore import datastore from jarabe.journal.listview import BaseListView from jarabe.journal.listmodel import ListModel @@ -46,6 +49,7 @@ class ObjectChooser(gtk.Window): self.set_border_width(style.LINE_WIDTH) self._selected_object_id = None + self._callback = None self.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.connect('visibility-notify-event', @@ -109,6 +113,15 @@ class ObjectChooser(gtk.Window): self._selected_object_id = uid self.emit('response', gtk.RESPONSE_ACCEPT) + if self._callback is not None: + self._callback(self._selected_object_id) + + def get_selected_object(self): + if self._selected_object_id is None: + return None + else: + return datastore.get(self._selected_object_id) + def __delete_event_cb(self, chooser, event): self.emit('response', gtk.RESPONSE_DELETE_EVENT) @@ -120,6 +133,9 @@ class ObjectChooser(gtk.Window): def __close_button_clicked_cb(self, button): self.emit('response', gtk.RESPONSE_DELETE_EVENT) + if self._callback is not None: + self._callback(self._selected_object_id) + def get_selected_object_id(self): return self._selected_object_id @@ -135,6 +151,9 @@ class ObjectChooser(gtk.Window): visible = event.state == gtk.gdk.VISIBILITY_FULLY_OBSCURED self._list_view.set_is_visible(visible) + def _set_callback(self, callback): + self._callback = callback + class TitleBox(VolumesToolbar): __gtype_name__ = 'TitleBox' |