Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/journalactivity.py
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-11-01 21:02:01 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-11-01 21:02:01 (GMT)
commitcd360a05f1c39dc2424ac4ebffb18fcea0d4f2ee (patch)
treedb993d592b3e9c7ebbcca91742d08463f1798b42 /journalactivity.py
parentf2d883b7de63e8ff29317ab5b88c7cd778432ecf (diff)
#1941 Implement FocusSearch method for popping up the journal. (rwh)
Diffstat (limited to 'journalactivity.py')
-rwxr-xr-xjournalactivity.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/journalactivity.py b/journalactivity.py
index 8d7df00..8354929 100755
--- a/journalactivity.py
+++ b/journalactivity.py
@@ -38,6 +38,35 @@ DS_DBUS_SERVICE = 'org.laptop.sugar.DataStore'
DS_DBUS_INTERFACE = 'org.laptop.sugar.DataStore'
DS_DBUS_PATH = '/org/laptop/sugar/DataStore'
+J_DBUS_SERVICE = 'org.laptop.Journal'
+J_DBUS_INTERFACE = 'org.laptop.Journal'
+J_DBUS_PATH = '/org/laptop/Journal'
+
+class JournalActivityDBusService(dbus.service.Object):
+ def __init__(self, parent):
+ self._parent = parent
+ session_bus = dbus.SessionBus()
+ bus_name = dbus.service.BusName(J_DBUS_SERVICE,
+ bus=session_bus, replace_existing=False, allow_replacement=False)
+ logging.debug('bus_name: %r', bus_name)
+ dbus.service.Object.__init__(self, bus_name, J_DBUS_PATH)
+
+ @dbus.service.method(J_DBUS_INTERFACE,
+ in_signature='a{sv}', out_signature='')
+ def FocusSearch(self, search_dict):
+ """Set search parameters and grab focus
+ search_dict can contain:
+ -query: string
+ -activity: string that can contain bundle id
+ -mimetype: list of strings
+ -mtime: a dict of the form:
+ {'start': 1193917107.9856629, 'end': 1193917107.9856629}
+ """
+ self._parent.present()
+ self._parent._show_main_view()
+ self._parent.set_search(search_dict)
+ self._parent.search_grab_focus()
+
class JournalActivity(activity.Activity):
def __init__(self, handle):
activity.Activity.__init__(self, handle, create_jobject=False)
@@ -50,6 +79,7 @@ class JournalActivity(activity.Activity):
self._setup_main_view()
self._setup_secondary_view()
self.connect('key-press-event', self._key_press_event_cb)
+ self.connect('focus-in-event', self._focus_in_event_cb)
bus = dbus.SessionBus()
data_store = dbus.Interface(
@@ -57,6 +87,8 @@ class JournalActivity(activity.Activity):
data_store.connect_to_signal('Created', self._data_store_created_cb)
data_store.connect_to_signal('Updated', self._data_store_updated_cb)
+ self._dbus_service = JournalActivityDBusService(self)
+
def _setup_main_view(self):
self._main_toolbox = MainToolbox()
self._main_view = gtk.VBox()
@@ -158,6 +190,9 @@ class JournalActivity(activity.Activity):
finally:
jobject.destroy()
+ def _focus_in_event_cb():
+ self.search_grab_focus()
+
def _check_for_bundle(self, jobject):
bundle = misc.get_bundle(jobject)
if bundle is None:
@@ -171,3 +206,13 @@ class JournalActivity(activity.Activity):
logging.warning('Could not install bundle %s: %r' %
(jobject.file_path, e))
return
+
+ def set_search(self, search_dict):
+ search_toolbar = self._main_toolbox.search_toolbar
+ if 'query' in search_dict:
+ search_toolbar._search_entry.set_text(search_dict['query'])
+
+ def search_grab_focus(self):
+ search_toolbar = self._main_toolbox.search_toolbar
+ search_toolbar._search_entry.grab_focus()
+