Diff - Information, Details and Resources

diff --git a/FusionIcon/interface_gtk/main.py

~crdlb/fusion-icon (master) :  summary log tree commit diff
diff --git a/FusionIcon/interface_gtk/main.py b/FusionIcon/interface_gtk/main.py
index 0ac30be..00be427 100644
--- a/FusionIcon/interface_gtk/main.py
+++ b/FusionIcon/interface_gtk/main.py
@@ -22,15 +22,90 @@
import os
import gtk
if gtk.pygtk_version < (2,10,0):
+ # raise an ImportError here to trigger the Except statement in interface.py
raise ImportError, 'PyGtk 2.10.0 or later required'
import time
from FusionIcon.start import wms, apps, options, decorators, init
+class TrayMenu(gtk.Menu):
+
+ def __init__(self):
+ gtk.Menu.__init__(self)
+
+ #CCSM
+ if 'ccsm' in apps:
+ item = ApplicationItem('ccsm')
+ item.set_image(gtk.image_new_from_stock('gtk-preferences', gtk.ICON_SIZE_MENU))
+ self.append(item)
+
+ #Emerald Theme Manager
+ if 'emerald theme manager' in apps:
+ item = ApplicationItem('emerald theme manager')
+ item.set_image(gtk.image_new_from_icon_name('emerald-theme-manager-icon', gtk.ICON_SIZE_MENU))
+ self.append(item)
+
+ if 'ccsm' in apps or 'emerald theme manager' in apps:
+ item = gtk.SeparatorMenuItem()
+ self.append(item)
+
+ #Reload
+ item = gtk.ImageMenuItem('Reload Window Manager')
+ item.connect('activate', self.reload_activate)
+ item.set_image(gtk.image_new_from_stock('gtk-refresh', gtk.ICON_SIZE_MENU))
+ if not wms:
+ item.set_sensitive(False)
+ self.append(item)
+
+ #Window Manager
+ item = gtk.ImageMenuItem('Select Window Manager')
+ item.set_image(gtk.image_new_from_stock('gtk-index', gtk.ICON_SIZE_MENU))
+ submenu = WindowManagerMenu()
+ item.set_submenu(submenu)
+ if not wms:
+ item.set_sensitive(False)
+ self.append(item)
+
+ #Compiz Options
+ item = gtk.ImageMenuItem('Compiz Options')
+ item.set_image(gtk.image_new_from_stock('gtk-properties', gtk.ICON_SIZE_MENU))
+ submenu = CompizOptionMenu()
+ item.set_submenu(submenu)
+ if not options:
+ item.set_sensitive(False)
+ self.append(item)
+
+ #Window Decorator
+ item = gtk.ImageMenuItem('Select Window Decorator')
+ item.set_image(gtk.image_new_from_stock('gtk-select-color', gtk.ICON_SIZE_MENU))
+ submenu = CompizDecoratorMenu()
+ item.set_submenu(submenu)
+ if not decorators:
+ item.set_sensitive(False)
+ self.append(item)
+
+ item = gtk.SeparatorMenuItem()
+ self.append(item)
+
+ item = gtk.ImageMenuItem(stock_id=gtk.STOCK_QUIT)
+ item.connect('activate', self.quit_activate)
+ self.append(item)
+
+ def show_menu(self, widget, button, time):
+ self.show_all()
+ self.popup(None, None, gtk.status_icon_position_menu, button, time, icon)
+
+ def reload_activate(self, widget):
+ wms.restart()
+
+ def quit_activate(self, widget):
+ gtk.main_quit()
+
class ApplicationItem(gtk.ImageMenuItem):
def __init__(self, app):
gtk.ImageMenuItem.__init__(self, apps[app].label)
+
self.app = app
if app not in apps:
self.set_sensitive(False)
@@ -43,6 +118,7 @@ class WindowManagerItem(gtk.RadioMenuItem):
def __init__(self, wm, first_item=None):
gtk.RadioMenuItem.__init__(self, label=' %s' %wms[wm].label)
+
self.wm = wm
if first_item:
self.set_group(first_item)
@@ -55,10 +131,26 @@ class WindowManagerItem(gtk.RadioMenuItem):
wms.active = self.wm
wms.start()
+class WindowManagerMenu(gtk.Menu):
+
+ def __init__(self):
+ gtk.Menu.__init__(self)
+
+ first = True
+ for wm in wms.ordered_list:
+ if first:
+ first_item = WindowManagerItem(wm)
+ self.append(first_item)
+ first = False
+ else:
+ item = WindowManagerItem(wm, first_item)
+ self.append(item)
+
class CompizOptionItem(gtk.CheckMenuItem):
def __init__(self, option):
gtk.CheckMenuItem.__init__(self, label=' %s' %options[option].label)
+
self.option = option
self.set_active(options[option].enabled)
if not options[option].sensitive:
@@ -70,10 +162,20 @@ class CompizOptionItem(gtk.CheckMenuItem):
if wms.active == 'compiz':
wms.start()
+class CompizOptionMenu(gtk.Menu):
+
+ def __init__(self):
+ gtk.Menu.__init__(self)
+
+ for option in options:
+ item = CompizOptionItem(option)
+ self.append(item)
+
class CompizDecoratorItem(gtk.RadioMenuItem):
def __init__(self, decorator, first_item=None):
gtk.RadioMenuItem.__init__(self, label=' %s' %decorators[decorator].label)
+
self.decorator = decorator
if first_item:
self.set_group(first_item)
@@ -87,98 +189,25 @@ class CompizDecoratorItem(gtk.RadioMenuItem):
time.sleep(0.5)
decorators.active = self.decorator
-def show_menu(widget, button, time, menu):
- menu.show_all()
- menu.popup(None, None, gtk.status_icon_position_menu, button, time, icon)
-
-def reload_activate(widget):
- wms.restart()
-
-def quit_activate(widget):
- gtk.main_quit()
-
-menu = gtk.Menu()
-
-#CCSM
-item = ApplicationItem('ccsm')
-item.set_image(gtk.image_new_from_stock('gtk-preferences', gtk.ICON_SIZE_MENU))
-menu.append(item)
-
-#Emerald Theme Manager
-item = ApplicationItem('emerald theme manager')
-if 'emerald theme manager' in apps:
- item.set_image(gtk.image_new_from_icon_name('emerald-theme-manager-icon', gtk.ICON_SIZE_MENU))
-menu.append(item)
-
-item = gtk.SeparatorMenuItem()
-menu.append(item)
-
-#Reload
-item = gtk.ImageMenuItem('Reload Window Manager')
-item.connect('activate', reload_activate)
-item.set_image(gtk.image_new_from_stock('gtk-refresh', gtk.ICON_SIZE_MENU))
-if not wms:
- item.set_sensitive(False)
-menu.append(item)
-
-#Window Manager
-item = gtk.ImageMenuItem('Select Window Manager')
-item.set_image(gtk.image_new_from_stock('gtk-index', gtk.ICON_SIZE_MENU))
-submenu = gtk.Menu()
-first = True
-for wm in wms.ordered_list:
- if first:
- first_item = WindowManagerItem(wm)
- submenu.append(first_item)
- first = False
- else:
- sitem = WindowManagerItem(wm, first_item)
- submenu.append(sitem)
-item.set_submenu(submenu)
-if not wms:
- item.set_sensitive(False)
-menu.append(item)
-
-#Compiz Options
-item = gtk.ImageMenuItem('Compiz Options')
-item.set_image(gtk.image_new_from_stock('gtk-properties', gtk.ICON_SIZE_MENU))
-submenu = gtk.Menu()
-for option in options:
- sitem = CompizOptionItem(option)
- submenu.append(sitem)
-item.set_submenu(submenu)
-if not options:
- item.set_sensitive(False)
-menu.append(item)
-
-#Window Decorator
-item = gtk.ImageMenuItem('Select Window Decorator')
-item.set_image(gtk.image_new_from_stock('gtk-select-color', gtk.ICON_SIZE_MENU))
-submenu = gtk.Menu()
-first = True
-for decorator in decorators:
- if first:
- first_item = CompizDecoratorItem(decorator)
- submenu.append(first_item)
- first = False
- else:
- sitem = CompizDecoratorItem(decorator, first_item)
- submenu.append(sitem)
-item.set_submenu(submenu)
-if not decorators:
- item.set_sensitive(False)
-menu.append(item)
-
-item = gtk.SeparatorMenuItem()
-menu.append(item)
-
-item = gtk.ImageMenuItem(stock_id=gtk.STOCK_QUIT)
-item.connect('activate', quit_activate)
-menu.append(item)
+class CompizDecoratorMenu(gtk.Menu):
+
+ def __init__(self):
+ gtk.Menu.__init__(self)
+
+ first = True
+ for decorator in decorators:
+ if first:
+ first_item = CompizDecoratorItem(decorator)
+ self.append(first_item)
+ first = False
+ else:
+ item = CompizDecoratorItem(decorator, first_item)
+ self.append(item)
icon = gtk.status_icon_new_from_icon_name('fusion-icon')
icon.set_tooltip('Compiz Fusion Icon')
-icon.connect('popup-menu', show_menu, menu)
+menu = TrayMenu()
+icon.connect('popup-menu', menu.show_menu)
# active wm (possibly) starts here
init()
diff --git a/FusionIcon/interface_qt4/main.py b/FusionIcon/interface_qt4/main.py
index 36207dc..e454971 100644
--- a/FusionIcon/interface_qt4/main.py
+++ b/FusionIcon/interface_qt4/main.py
@@ -66,7 +66,8 @@ class Build(QtGui.QApplication):
self.Tray.menu.addAction(apps['ccsm'].label, lambda: run(['ccsm']))
if 'emerald theme manager' in apps:
self.Tray.menu.addAction(apps['emerald theme manager'].label, lambda: run(apps['emerald theme manager'].command))
- self.Tray.menu.addSeparator()
+ if 'ccsm' in apps or 'emerald theme manager' in apps:
+ self.Tray.menu.addSeparator()
self.Tray.menu.addAction("Reload Window Manager", self.reload_wm)
self.Tray.menu.addAction("Select Window Manager").setMenu(self.Tray.managerMenu)
self.Tray.menu.addAction("Compiz Options").setMenu(self.Tray.optionsMenu)