diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-10-06 14:29:37 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-10-06 14:29:37 +0800 |
commit | d4bb8eb1c6c36e43a5a9504717aeb64832c66538 (patch) | |
tree | a7c996279cb59479b693c8c83d9d6fa988fe5872 /ui | |
parent | 6fcaef161510134118d935f0240e4d719ba43a7a (diff) | |
download | ibus-d4bb8eb1c6c36e43a5a9504717aeb64832c66538.tar.gz ibus-d4bb8eb1c6c36e43a5a9504717aeb64832c66538.tar.xz ibus-d4bb8eb1c6c36e43a5a9504717aeb64832c66538.zip |
Add notifications
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gtk/Makefile.am | 2 | ||||
-rw-r--r-- | ui/gtk/notifications.py | 65 | ||||
-rw-r--r-- | ui/gtk/notify.py | 46 |
3 files changed, 66 insertions, 47 deletions
diff --git a/ui/gtk/Makefile.am b/ui/gtk/Makefile.am index e3b433c..18f773e 100644 --- a/ui/gtk/Makefile.am +++ b/ui/gtk/Makefile.am @@ -26,7 +26,7 @@ ui_gtk_PYTHON = \ languagebar.py \ main.py \ menu.py \ - notify.py \ + notifications.py \ panel.py \ propitem.py \ toolitem.py \ diff --git a/ui/gtk/notifications.py b/ui/gtk/notifications.py new file mode 100644 index 0000000..37f0ecf --- /dev/null +++ b/ui/gtk/notifications.py @@ -0,0 +1,65 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright(c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or(at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place, Suite 330, +# Boston, MA 02111-1307 USA + +import gtk +import gtk.gdk as gdk +import gobject +import ibus +import dbus +import icon as _icon +import os +import sys +from os import path +from ibus import interface + +from gettext import dgettext +_ = lambda a : dgettext("ibus", a) +N_ = lambda a : a + +class Notifications(ibus.NotificationsBase): + def __init__ (self, bus): + super(Notifications, self).__init__(bus) + self.__bus = bus + self.__dbus = dbus.SessionBus() + self.__notifications = self.__dbus.get_object( + "org.freedesktop.Notifications", "/org/freedesktop/Notifications") + def notify(self, replaces_id, app_icon, summary, body, actions, expire_timeout): + hints = dbus.Dictionary(signature="sv") + hints["desktop-entry"] = "ibus" + hints["x"] = 0 + hints["y"] = 0 + return self.__notifications.Notify("ibus", + replaces_id, + app_icon, + summary, + body, + actions, + hints, + expire_timeout) + + def close_notification(self, id): + return self.__notifications.CloseNotifications(id) + + def notification_closed(self, id, reason): + self.__proxy.NotificationClosed(id, reason) + + def action_invoked(self, id, action_key): + self.__proxy.ActionInvoked(id, action_key) diff --git a/ui/gtk/notify.py b/ui/gtk/notify.py deleted file mode 100644 index 3274f7d..0000000 --- a/ui/gtk/notify.py +++ /dev/null @@ -1,46 +0,0 @@ -# vim:set et sts=4 sw=4: -# -# ibus - The Input Bus -# -# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA - -import dbus - -try: - __bus = dbus.SessionBus() - __notify = __bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") -except: - import traceback - traceback.print_exc() - __notify = None - -__ignore_ids = set([]) - -def Notify(id, summary, body, icon): - if id in __ignore_ids: - return - if __notify == None: - return - if icon == None: - icon = "ibus" - __notify.Notify("ibus", dbus.UInt32(id), icon, summary, body, \ - ["Do not show it again", "Do not show it again"], \ - dbus.Dictionary({"x" :100, "y" : 100}, signature="sv"), 5000) - -if __name__ == "__main__": - Notify(1, "A", "B", None) |