summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-10-06 14:29:37 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-10-06 14:29:37 +0800
commitd4bb8eb1c6c36e43a5a9504717aeb64832c66538 (patch)
treea7c996279cb59479b693c8c83d9d6fa988fe5872 /ui
parent6fcaef161510134118d935f0240e4d719ba43a7a (diff)
downloadibus-d4bb8eb1c6c36e43a5a9504717aeb64832c66538.tar.gz
ibus-d4bb8eb1c6c36e43a5a9504717aeb64832c66538.tar.xz
ibus-d4bb8eb1c6c36e43a5a9504717aeb64832c66538.zip
Add notifications
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk/Makefile.am2
-rw-r--r--ui/gtk/notifications.py65
-rw-r--r--ui/gtk/notify.py46
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)