diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-10-06 15:00:01 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-10-06 15:00:01 +0800 |
commit | 59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815 (patch) | |
tree | 796a01d6ffe1ea3cc4a31892fed7d2535fa22873 | |
parent | 61c603838a15b01011093090065ed33116cdda13 (diff) | |
download | ibus-59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815.tar.gz ibus-59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815.tar.xz ibus-59a0435b1a8fbb2e2f80bfe79057cbd5eb3da815.zip |
WIP.
-rw-r--r-- | ui/gtk/main.py | 7 | ||||
-rw-r--r-- | ui/gtk/notifications.py | 14 | ||||
-rw-r--r-- | ui/gtk/panel.py | 3 |
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("/"): |