Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--detailview.py42
-rwxr-xr-xjournalactivity.py91
-rw-r--r--journaltoolbox.py73
3 files changed, 98 insertions, 108 deletions
diff --git a/detailview.py b/detailview.py
index 9811a5b..51e5ad6 100644
--- a/detailview.py
+++ b/detailview.py
@@ -30,33 +30,39 @@ from expandedentry import ExpandedEntry
from keepicon import KeepIcon
class DetailView(gtk.VBox):
-
- def __init__(self, model):
+ def __init__(self):
gtk.VBox.__init__(self)
- self._jobject = model
-
+ self._jobject = None
+ self._expanded_entry = None
+
canvas = hippo.Canvas()
self.pack_start(canvas)
canvas.show()
- root = hippo.CanvasBox()
- root.props.background_color = style.COLOR_PANEL_GREY.get_int()
- canvas.set_root(root)
-
- self._expanded_object = ExpandedEntry(self._jobject.object_id)
- root.append(self._expanded_object, hippo.PACK_EXPAND)
+ self._root = hippo.CanvasBox()
+ self._root.props.background_color = style.COLOR_PANEL_GREY.get_int()
+ canvas.set_root(self._root)
def _fav_icon_activated_cb(self, fav_icon):
- keep = not self._expanded_object.get_keep()
- self._expanded_object.set_keep(keep)
+ keep = not self._expanded_entry.get_keep()
+ self._expanded_entry.set_keep(keep)
fav_icon.props.keep = keep
- def refresh(self):
- logging.debug('DetailView.refresh')
- self._jobject = datastore.get(self._jobject.object_id)
+ def _update_view(self):
+ if self._expanded_entry:
+ self._root.remove(self._expanded_entry)
+ self._expanded_entry.destroy()
+ if self._jobject:
+ self._expanded_entry = ExpandedEntry(self._jobject.object_id)
+ self._root.append(self._expanded_entry, hippo.PACK_EXPAND)
- self._hbox.remove(self._expanded_object)
- self._expanded_object = ExpandedEntry(self._jobject.object_id)
- self._hbox.append(self._expanded_object, hippo.PACK_EXPAND)
+ def set_jobject(self, jobject):
+ self._jobject = jobject
+ self._update_view()
+ def refresh(self):
+ logging.debug('DetailView.refresh')
+ if self._jobject:
+ self._jobject = datastore.get(self._jobject.object_id)
+ self._update_view()
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()
diff --git a/journaltoolbox.py b/journaltoolbox.py
index 85b4dd8..dc02fc6 100644
--- a/journaltoolbox.py
+++ b/journaltoolbox.py
@@ -41,7 +41,7 @@ import backup
_AUTOSEARCH_TIMEOUT = 1000
-class JournalToolbox(Toolbox):
+class MainToolbox(Toolbox):
def __init__(self):
Toolbox.__init__(self)
@@ -305,6 +305,29 @@ class ManageToolbar(gtk.Toolbar):
def __init__(self):
gtk.Toolbar.__init__(self)
+class BackupToolbar(gtk.Toolbar):
+ __gtype_name__ = 'BackupToolbar'
+
+ def __init__(self):
+ gtk.Toolbar.__init__(self)
+
+ self._backup = ToolButton('document-save')
+ self._backup.set_tooltip(_('Backup'))
+ self._backup.connect('clicked', self._backup_clicked_cb)
+ self.insert(self._backup, -1)
+ self._backup.show()
+
+ def _backup_clicked_cb(self, button):
+ backup.backup_gui()
+
+class DetailToolbox(Toolbox):
+ def __init__(self):
+ Toolbox.__init__(self)
+
+ self.entry_toolbar = EntryToolbar()
+ self.add_toolbar('', self.entry_toolbar)
+ self.entry_toolbar.show()
+
class EntryToolbar(gtk.Toolbar):
__gtype_name__ = 'EntryToolbar'
@@ -317,17 +340,9 @@ class EntryToolbar(gtk.Toolbar):
([]))
}
- def __init__(self, jobject):
+ def __init__(self):
gtk.Toolbar.__init__(self)
- self._jobject = jobject
-
- separator = gtk.SeparatorToolItem()
- separator.set_size_request(style.GRID_CELL_SIZE, -1)
- separator.props.draw = False
- self.add(separator)
- separator.show()
-
go_back_button = ToolButton('go-previous-mini')
go_back_button.set_tooltip(_('Go back'))
go_back_button.connect('clicked', self._go_back_button_clicked_cb)
@@ -372,17 +387,14 @@ class EntryToolbar(gtk.Toolbar):
self.add(self._resume)
self._resume.show()
- separator = gtk.SeparatorToolItem()
- separator.set_size_request(style.GRID_CELL_SIZE, -1)
- separator.props.draw = False
- self.add(separator)
- separator.show()
-
+ def set_jobject(self, jobject):
+ self._jobject = jobject
self._refresh_copy_palette()
self._refresh_resume_palette()
def _resume_clicked_cb(self, button):
- self._jobject.resume()
+ if self._jobject:
+ self._jobject.resume()
def _copy_clicked_cb(self, button):
clipboard = gtk.Clipboard()
@@ -397,18 +409,21 @@ class EntryToolbar(gtk.Toolbar):
pass
def _erase_button_clicked_cb(self, button):
- datastore.delete(self._jobject.object_id)
- self.emit('entry-erased')
+ if self._jobject:
+ datastore.delete(self._jobject.object_id)
+ self.emit('entry-erased')
def _go_back_button_clicked_cb(self, back_bar):
self.emit('go-back-clicked')
return False
def _resume_menu_item_activate_cb(self, menu_item, service_name):
- self._jobject.resume(service_name)
+ if self._jobject:
+ self._jobject.resume(service_name)
def _copy_menu_item_activate_cb(self, menu_item, volume):
- datastore.copy(self._jobject, volume.id)
+ if self._jobject:
+ datastore.copy(self._jobject, volume.id)
def _refresh_copy_palette(self):
palette = self._copy.get_palette()
@@ -443,19 +458,3 @@ class EntryToolbar(gtk.Toolbar):
activity.service_name)
palette.menu.append(menu_item)
menu_item.show()
-
-class BackupToolbar(gtk.Toolbar):
- __gtype_name__ = 'BackupToolbar'
-
- def __init__(self):
- gtk.Toolbar.__init__(self)
-
- self._backup = ToolButton('document-save')
- self._backup.set_tooltip(_('Backup'))
- self._backup.connect('clicked', self._backup_clicked_cb)
- self.insert(self._backup, -1)
- self._backup.show()
-
- def _backup_clicked_cb(self, button):
- backup.backup_gui()
-