Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/journalactivity.py
diff options
context:
space:
mode:
authorMarco 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)
commitc964c699d5357a8d68fc680738c42488c40733c1 (patch)
tree13d61999adadb93c2cc8b015eafa91acb3706b6a /journalactivity.py
parent95a0f5317eca08fea852009d4489eb468e415ee6 (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-xjournalactivity.py91
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()