1 from traylib import *
2 from traylib.tray import Tray, TrayConfig
3 from traylib.icon import IconConfig
4
5
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
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
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
87 """
88 Extend this to determine the maximum icon size.
89
90 @return: The maximum icon size.
91 """
92 return self.__size
93