revert rest of local changes (so the complete commit is reverted now)
[enigma2.git] / lib / python / Components / GUIComponent.py
1 import skin
2
3 from enigma import ePoint, eSize
4
5 class GUIComponent(object):
6         """ GUI component """
7         
8         def __init__(self):
9                 self.instance = None
10                 self.onVisibilityChange = [ ]
11                 self.__visible = 0
12                 self.visible = 1
13                 self.skinAttributes = None
14                 self.deprecationInfo = None
15         
16         def execBegin(self):
17                 pass
18         
19         def execEnd(self):
20                 pass
21         
22         def onShow(self):
23                 pass
24
25         def onHide(self):
26                 pass
27         
28         def destroy(self):
29                 self.__dict__.clear()
30         
31         # this works only with normal widgets - if you don't have self.instance, override this.
32         def applySkin(self, desktop, parent):
33                 if not self.visible:
34                         self.instance.hide()
35                 
36                 if self.skinAttributes is None:
37                         return False
38
39                 skin.applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
40                 return True
41
42         def move(self, x, y = None):
43                 # we assume, that x is already an ePoint
44                 if y is None:
45                         self.instance.move(x)
46                 else:
47                         self.instance.move(ePoint(int(x), int(y)))
48
49         def resize(self, x, y = None):
50                 if y is None:
51                         self.instance.resize(x)
52                 else:
53                         self.instance.resize(eSize(int(x), int(y)))
54
55         def setZPosition(self, z):
56                 self.instance.setZPosition(z)
57
58         def show(self):
59                 old = self.__visible
60                 self.__visible = 1
61                 if self.instance is not None:
62                         self.instance.show()
63                 if old != self.__visible:
64                         for fnc in self.onVisibilityChange:
65                                 fnc(True)
66
67         def hide(self):
68                 old = self.__visible
69                 self.__visible = 0
70                 if self.instance is not None:
71                         self.instance.hide()
72                 if old != self.__visible:
73                         for fnc in self.onVisibilityChange:
74                                 fnc(False)
75
76         def getVisible(self):
77                 return self.__visible
78         
79         def setVisible(self, visible):
80                 if visible:
81                         self.show()
82                 else:
83                         self.hide()
84
85         visible = property(getVisible, setVisible)
86
87         def setPosition(self, x, y):
88                 self.instance.move(ePoint(int(x), int(y)))
89
90         def getPosition(self):
91                 p = self.instance.position()
92                 return (p.x(), p.y())
93
94         position = property(getPosition, setPosition)
95
96         # default implementation for only one widget per component
97         # feel free to override!
98         def GUIcreate(self, parent):
99                 self.instance = self.createWidget(parent)
100                 self.postWidgetCreate(self.instance)
101         
102         def GUIdelete(self):
103                 self.preWidgetRemove(self.instance)
104                 self.instance = None
105
106         # default for argumentless widget constructor
107         def createWidget(self, parent):
108                 return self.GUI_WIDGET(parent)
109
110         def postWidgetCreate(self, instance):
111                 pass
112         
113         def preWidgetRemove(self, instance):
114                 pass