Package traylib :: Module main
[frames] | no frames]

Source Code for Module traylib.main

  1  import rox 
  2  from rox.options import Option 
  3   
  4  from traylib import * 
  5  from traylib.tray_window import TrayWindow 
  6  from traylib.tray_applet import TrayApplet 
  7  from traylib.tray import Tray 
  8  from traylib.icon_config import IconConfig 
  9  from traylib.tray_config import TrayConfig 
 10   
 11   
12 -class Main(object):
13
14 - def __init__(self, name):
15 """ 16 Creates a new C{Main} object. 17 """ 18 19 object.__init__(self) 20 21 self.name = name 22 23 self.init_options() 24 rox.app_options.notify() 25 26 self.init_config()
27
28 - def init_options(self):
29 self.__o_icon_size_min = Option("icon_size_min", 16) 30 self.__o_icon_size_max = Option("icon_size_max", 32) 31 self.__o_effects = Option("effects", True) 32 self.__o_separator_left = Option("separator_left", False) 33 self.__o_separator_right = Option("separator_right", False) 34 self.__o_menus = Option("menus", RIGHT) 35 self.__o_hidden = Option("hidden", False)
36
37 - def init_config(self):
38 separators = 0 39 if self.__o_separator_left.int_value: 40 separators |= LEFT 41 if self.__o_separator_right.int_value: 42 separators |= RIGHT 43 self.__icon_config = IconConfig(16, 0, 44 self.__o_effects.int_value, 45 None, 46 self.__o_hidden.int_value) 47 self.__tray_config = TrayConfig(self.name, self.__o_menus.int_value, separators)
48
49 - def mainloop(self, app_args, tray_class, *tray_args):
50 """ 51 Starts the main loop and returns when the tray app is quit. 52 53 @param app_args: The arguments passed to the app. 54 @param tray_class: The type of tray. Must be a subclass of L{Tray}. 55 @param *tray_args: Additional args for the L{Tray} subclass. 56 """ 57 assert issubclass(tray_class, Tray) 58 rox.app_options.add_notify(self.options_changed) 59 if len(app_args) >= 2: 60 self.__main_window = TrayApplet(app_args[1], 61 self.__o_icon_size_min.int_value, 62 self.__o_icon_size_max.int_value, 63 tray_class, 64 self.__icon_config, 65 self.__tray_config, 66 *tray_args) 67 else: 68 self.__main_window = TrayWindow(self.__o_icon_size_min.int_value, 69 self.__o_icon_size_max.int_value, 70 tray_class, 71 self.__icon_config, 72 self.__tray_config, 73 *tray_args) 74 self.__main_window.show() 75 rox.mainloop()
76
77 - def options_changed(self):
78 """Called when the options have changed.""" 79 if self.__o_icon_size_min.has_changed or self.__o_icon_size_max.has_changed: 80 self.__main_window.update_icon_size(self.__o_icon_size_min.int_value, 81 self.__o_icon_size_max.int_value) 82 83 if self.__o_separator_left.has_changed or self.__o_separator_right.has_changed: 84 separators = 0 85 if self.__o_separator_left.int_value: 86 separators |= LEFT 87 if self.__o_separator_right.int_value: 88 separators |= RIGHT 89 self.__tray_config.separators = separators 90 91 if self.__o_menus.has_changed: 92 self.__tray_config.menus = self.__o_menus.int_value 93 94 if self.__o_effects.has_changed: 95 self.__icon_config.effects = self.__o_effects.int_value
96 97 icon_config = property(lambda self : self.__icon_config) 98 tray_config = property(lambda self : self.__tray_config)
99