[wiican] [s][bin] Bugfix on tray icon based on gtk.StatusIcon



commit 7f7eebddf370bbd5990f596ddb5cf40e24debe07
Author: J. FÃlix OntaÃÃn <fontanon emergya es>
Date:   Mon Aug 20 13:50:42 2012 +0200

    [s][bin] Bugfix on tray icon based on gtk.StatusIcon

 bin/wiican |   42 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 40 insertions(+), 2 deletions(-)
---
diff --git a/bin/wiican b/bin/wiican
index 2dba701..8967195 100755
--- a/bin/wiican
+++ b/bin/wiican
@@ -59,11 +59,49 @@ def tray_icon_generator():
         tray_icon.set_status (appindicator.STATUS_ACTIVE)
 
     except ImportError:
-        tray_icon = gtk.StatusIcon()
-        tray_icon.set_from_icon_name('wiican')
+        tray_icon = Indicator('wiican', 'wiican')
 
     return tray_icon
 
+# Partially based on https://github.com/MasslessParticle/pySSHMenu/blob/master/SSHMenu.py
+class Indicator():
+    '''
+    Fallback class for linux installations that do not have python-appindicator
+    installed. Implemented as a Gtk.StatusIcon
+    '''
+
+    STATUS_INACTIVE = 0
+    STATUS_ACTIVE = 1
+
+    def __init__(self, name, icon):
+        self.name = name
+        self.icon = icon
+        self.status = Indicator.STATUS_INACTIVE
+        self.status_icon = gtk.StatusIcon()
+        self.status_icon.set_from_icon_name(self.icon)
+        self.set_label(self.name)
+
+    def set_menu(self, menu):
+        self.menu = menu
+        self.status_icon.connect("activate", self.show_menu)
+
+    def set_icon(self, icon_name):
+        self.status_icon.set_from_icon_name(icon_name)
+
+    def set_label(self, label):
+        self.status_icon.set_title(label)
+        self.status_icon.set_has_tooltip(True)
+        self.status_icon.set_tooltip_text(label)
+
+    def set_status(self, status):
+        if status == Indicator.STATUS_ACTIVE or status == Indicator.STATUS_INACTIVE:
+            self.status = status
+
+    def show_menu(self, sender):
+        if self.menu:
+            self.menu.popup(None, None, gtk.status_icon_position_menu, 1,
+                    gtk.get_current_event_time(), self.status_icon)
+
 class WiicanIndicator(GConfStore):
     defaults = {
             'show_manager_on_startup': True



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]