diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-11-01 21:02:01 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-11-01 21:02:01 (GMT) |
commit | cd360a05f1c39dc2424ac4ebffb18fcea0d4f2ee (patch) | |
tree | db993d592b3e9c7ebbcca91742d08463f1798b42 /journalactivity.py | |
parent | f2d883b7de63e8ff29317ab5b88c7cd778432ecf (diff) |
#1941 Implement FocusSearch method for popping up the journal. (rwh)
Diffstat (limited to 'journalactivity.py')
-rwxr-xr-x | journalactivity.py | 45 |
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() + |