summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-10-06 15:00:01 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-10-06 15:00:01 +0800
commit59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815 (patch)
tree796a01d6ffe1ea3cc4a31892fed7d2535fa22873
parent61c603838a15b01011093090065ed33116cdda13 (diff)
downloadibus-59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815.tar.gz
ibus-59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815.tar.xz
ibus-59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815.zip
WIP.
-rw-r--r--ui/gtk/main.py7
-rw-r--r--ui/gtk/notifications.py14
-rw-r--r--ui/gtk/panel.py3
3 files changed, 22 insertions, 2 deletions
diff --git a/ui/gtk/main.py b/ui/gtk/main.py
index 07ea3c0..489f96a 100644
--- a/ui/gtk/main.py
+++ b/ui/gtk/main.py
@@ -26,13 +26,16 @@ import ibus
import gtk
import locale
import panel
+import notifications
-class PanelApplication:
+class UIApplication:
def __init__ (self):
self.__bus = ibus.Bus()
self.__bus.connect("destroy", self.__bus_destroy_cb)
self.__panel = panel.Panel(self.__bus)
+ self.__notify = notifications.Notifications(self.__bus)
+ self.__notify.set_status_icon(self.__panel.get_status_icon())
def run(self):
gtk.main()
@@ -44,7 +47,7 @@ class PanelApplication:
def launch_panel():
# gtk.settings_get_default().props.gtk_theme_name = "/home/phuang/.themes/aud-Default/gtk-2.0/gtkrc"
# gtk.rc_parse("./themes/default/gtkrc")
- PanelApplication().run()
+ UIApplication().run()
def print_help(out, v = 0):
print >> out, "-h, --help show this message."
diff --git a/ui/gtk/notifications.py b/ui/gtk/notifications.py
index 6f77df0..a0fa233 100644
--- a/ui/gtk/notifications.py
+++ b/ui/gtk/notifications.py
@@ -38,6 +38,7 @@ class Notifications(ibus.NotificationsBase):
def __init__ (self, bus):
super(Notifications, self).__init__(bus)
self.__bus = bus
+ self.__bus.request_name(ibus.IBUS_NOTIFICATIONS_NAME, 0)
self.__dbus = dbus.SessionBus()
self.__notifications = self.__dbus.get_object(
"org.freedesktop.Notifications", "/org/freedesktop/Notifications")
@@ -48,11 +49,19 @@ class Notifications(ibus.NotificationsBase):
self.__action_invoked_cb,
dbus_interface="org.freedesktop.Notifications")
self.__ids = set([])
+ self.__status_icons = None
+
+ def set_status_icon(self, status_icon):
+ self.__status_icon = status_icon
def notify(self, replaces_id, app_icon, summary, body, actions, expire_timeout):
if app_icon == "":
app_icon = "ibus"
hints = dbus.Dictionary(signature="sv")
+ if self.__status_icon != None:
+ rect = self.__status_icon.get_geometry()[1]
+ hints["x"] = rect.x + rect.width / 2
+ hints["y"] = rect.y + rect.height / 2
id = self.__notifications.Notify("ibus",
dbus.UInt32(replaces_id),
app_icon,
@@ -76,6 +85,11 @@ class Notifications(ibus.NotificationsBase):
self.action_invoked(id, action_key)
if __name__ == "__main__":
+ import gtk
+ icon = gtk.StatusIcon()
+ icon.set_visible(True)
notify = Notifications(ibus.Bus())
+ notify.set_status_icon(icon)
+ while ibus.main_iteration(): pass
notify.notify(0, "", "Hello Summary", "Hello Body", ["NoAgain", "Do not show me again"], 5000)
ibus.main()
diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
index de54464..56a4386 100644
--- a/ui/gtk/panel.py
+++ b/ui/gtk/panel.py
@@ -159,6 +159,9 @@ class Panel(ibus.PanelBase):
def update_property(self, prop):
self.__language_bar.update_property(prop)
+ def get_status_icon(self):
+ return self.__status_icon
+
def __set_im_icon(self, icon_name):
self.__language_bar.set_im_icon(icon_name)
if icon_name.startswith("/"):