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

Source Code for Module traylib.tray_container

 1  from traylib import * 
 2  from traylib.tray import Tray, TrayConfig  
 3  from traylib.icon import IconConfig 
 4   
 5   
6 -class TrayContainer:
7 """ 8 An object containing a L{Tray}. If you subclass this, you must also subclass 9 C{gtk.Container}. 10 """ 11
12 - def __init__(self, 13 min_size, 14 max_size, 15 vertical, 16 tray_class, 17 icon_config, 18 tray_config, 19 *tray_args):
20 """ 21 Creates a new C{TrayContainer}. 22 23 @param min_size: The minimum size of the icons. 24 @param max_size: The maximum size of the icons. 25 @param vertical: C{True} if the tray should be vertical. 26 @param tray_class: The class of the tray to be created. Must be a 27 subclass of L{Tray}. 28 @param icon_config: The L{IconConfig}. 29 @param tray_config: The L{TrayConfig}. 30 @param *tray_args: Additional arguments passed to the C{tray_class}'s 31 constructor. 32 """ 33 assert isinstance(icon_config, IconConfig) 34 assert isinstance(tray_config, TrayConfig) 35 assert issubclass(tray_class, Tray) 36 37 self.__tray = None 38 self.__tray_class = tray_class 39 self.__tray_args = tray_args 40 self.__icon_config = icon_config 41 self.__tray_config = tray_config 42 self.__size = 0 43 self.__max_size = max_size 44 self.__min_size = min_size 45 self.__vertical = vertical 46 self.connect('size-allocate', self.__size_allocate) 47 48 assert self.__tray == None 49 assert self.__tray_class == tray_class 50 assert self.__tray_args == tray_args 51 assert self.__icon_config == icon_config 52 assert self.__tray_config == tray_config 53 assert self.__size == 0 54 assert self.__min_size == min_size 55 assert self.__max_size == max_size 56 assert self.__vertical == vertical
57
58 - def __size_allocate(self, widget, rectangle):
59 if self.__vertical: 60 size = rectangle[2] 61 else: 62 size = rectangle[3] 63 if size == self.__size: 64 return 65 self.__size = size 66 self.update_icon_size(self.__min_size, self.__max_size) 67 if not self.__tray: 68 self.__tray = self.__tray_class(self.__icon_config, 69 self.__tray_config, 70 *self.__tray_args) 71 self.__tray.set_container(self)
72
73 - def update_icon_size(self, min_size, max_size):
74 """ 75 Updates the size of the tray's icons and sets the maximum icon size. 76 77 @param min_size: The minimum icon size. 78 @param max_size: The maximum icon size. 79 """ 80 self.__max_size = max_size 81 self.__min_size = min_size 82 size = self.get_icon_size() 83 assert isinstance(size, int) 84 self.__icon_config.size = max(min_size, min(size, max_size))
85
86 - def get_icon_size(self):
87 """ 88 Extend this to determine the maximum icon size. 89 90 @return: The maximum icon size. 91 """ 92 return self.__size
93