diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2007-09-21 10:34:25 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <mpg@redhat.com> | 2007-09-21 10:34:25 (GMT) |
commit | c964c699d5357a8d68fc680738c42488c40733c1 (patch) | |
tree | 13d61999adadb93c2cc8b015eafa91acb3706b6a /journalactivity.py | |
parent | 95a0f5317eca08fea852009d4489eb468e415ee6 (diff) |
Refactor to not destroy the detailed view for each switch.
Cleanup code a bit, fix a typo in the detailed view refresh code.
Diffstat (limited to 'journalactivity.py')
-rwxr-xr-x | journalactivity.py | 91 |
1 files changed, 38 insertions, 53 deletions
diff --git a/journalactivity.py b/journalactivity.py index e4cd03f..9f3b021 100755 --- a/journalactivity.py +++ b/journalactivity.py @@ -29,7 +29,7 @@ from sugar.bundle.activitybundle import ActivityBundle from sugar.bundle.contentbundle import ContentBundle from sugar.datastore import datastore -from journaltoolbox import JournalToolbox, EntryToolbar +from journaltoolbox import MainToolbox, DetailToolbox from listview import ListView from detailview import DetailView from volumestoolbar import VolumesToolbar @@ -42,82 +42,62 @@ class JournalActivity(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle, create_jobject=False) - logging.debug('Starting the journal activity') - self._can_close = False - self._detail_view = None - self._is_dirty = False + self.iconify() + self._setup_main_view() + self._setup_secondary_view() self.connect('key-press-event', self._key_press_event_cb) - self._toolbox = JournalToolbox() - self._toolbox.search_toolbar.connect('query-changed', self._query_changed_cb) - self.set_toolbox(self._toolbox) - self._toolbox.show() + bus = dbus.SessionBus() + data_store = dbus.Interface( + bus.get_object(DS_DBUS_SERVICE, DS_DBUS_PATH), DS_DBUS_INTERFACE) + data_store.connect_to_signal('Created', self._data_store_created_cb) + data_store.connect_to_signal('Updated', self._data_store_updated_cb) + def _setup_main_view(self): + self._main_toolbox = MainToolbox() self._main_view = gtk.VBox() - self.set_canvas(self._main_view) - self._main_view.show() self._list_view = ListView() self._list_view.connect('entry-activated', self._entry_activated_cb) self._main_view.pack_start(self._list_view) self._list_view.show() - self._volumes_toolbar = VolumesToolbar() - self._volumes_toolbar.connect('volume-changed', self._volume_changed_cb) - self._main_view.pack_start(self._volumes_toolbar, expand=False) - - self.connect('notify::active', self._notify_active_cb) + volumes_toolbar = VolumesToolbar() + volumes_toolbar.connect('volume-changed', self._volume_changed_cb) + self._main_view.pack_start(volumes_toolbar, expand=False) - internal_flash = datastore.mounts()[0] - self._toolbox.search_toolbar.set_volume_id(internal_flash['id']) + search_toolbar = self._main_toolbox.search_toolbar + search_toolbar.connect('query-changed', self._query_changed_cb) + search_toolbar.set_volume_id(datastore.mounts()[0]['id']) - self._listen_for_datastore_changes() + def _setup_secondary_view(self): + self._secondary_view = gtk.VBox() - self.iconify() + self._detail_toolbox = DetailToolbox() + entry_toolbar = self._detail_toolbox.entry_toolbar + entry_toolbar.connect('entry-erased', self._entry_erased_cb) + entry_toolbar.connect('go-back-clicked', self._go_back_clicked_cb) + + self._detail_view = DetailView() + self._secondary_view.pack_end(self._detail_view) + self._detail_view.show() def _key_press_event_cb(self, widget, event): keyname = gtk.gdk.keyval_name(event.keyval) if keyname == 'Escape': self._show_main_view() - def _listen_for_datastore_changes(self): - bus = dbus.SessionBus() - data_store = dbus.Interface(bus.get_object(DS_DBUS_SERVICE, DS_DBUS_PATH), - DS_DBUS_INTERFACE) - data_store.connect_to_signal('Created', self._data_store_created_cb) - data_store.connect_to_signal('Updated', self._data_store_updated_cb) - - def _notify_active_cb(self, widget, pspec): - if self.props.active and self._is_dirty: - gobject.idle_add(self._refresh) - return False - def _refresh(self): self._toolbox.search_toolbar.refresh_filters() if self.canvas == self._detail_view: self._detail_view.refresh() else: self._list_view.refresh() - self._is_dirty = False def _entry_activated_cb(self, list_view, entry): - self._toolbox.hide() - - vbox = gtk.VBox() - self.set_canvas(vbox) - vbox.show() - - self._entry_toolbar = EntryToolbar(entry.jobject) - self._entry_toolbar.connect('entry-erased', self._entry_erased_cb) - self._entry_toolbar.connect('go-back-clicked', self._go_back_clicked_cb) - vbox.pack_start(self._entry_toolbar, expand=False, fill=False) - self._entry_toolbar.show() - - self._detail_view = DetailView(entry.jobject) - vbox.pack_end(self._detail_view) - self._detail_view.show() + self._show_secondary_view(entry.jobject) def _go_back_clicked_cb(self, detail_view): self._list_view.refresh() @@ -128,16 +108,21 @@ class JournalActivity(activity.Activity): self._show_main_view() def _show_main_view(self): - if self._detail_view == None: - return + self.set_toolbox(self._main_toolbox) + self._main_toolbox.show() self.set_canvas(self._main_view) self._main_view.show() - self._toolbox.show() - self._toolbox.set_current_toolbar(0) + def _show_secondary_view(self, jobject): + self._detail_toolbox.entry_toolbar.set_jobject(jobject) + self.set_toolbox(self._detail_toolbox) + self._detail_toolbox.show() + + self._detail_view.set_jobject(jobject) - self._detail_view = None + self.set_canvas(self._secondary_view) + self._secondary_view.show() def _entry_erased_cb(self, toolbar): self._show_main_view() |