author | Radek Brich <radek.brich@devl.cz> |
Thu, 27 Mar 2014 08:03:51 +0100 | |
changeset 93 | c1e79acb9fcb |
parent 92 | b97c4e25ed6d |
child 94 | e50dae408fe9 |
permissions | -rw-r--r-- |
90
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
1 |
from tuikit.core.widget import Widget |
93 | 2 |
from tuikit.layouts.fixed import FixedLayout |
89 | 3 |
|
4 |
||
90
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
5 |
class Container(Widget): |
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
6 |
|
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
7 |
"""Container widget. |
0 | 8 |
|
90
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
9 |
Can contain other widgets to create hierarchical structure. |
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
10 |
|
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
11 |
""" |
32
088b92ffb119
Clean up, refactoring. Rename EventSource to Emitter, begin merging emit() method with handle().
Radek Brich <radek.brich@devl.cz>
parents:
23
diff
changeset
|
12 |
|
93 | 13 |
def __init__(self, layout_class=FixedLayout): |
90
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
14 |
Widget.__init__(self) |
13
19ebde2fd594
Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents:
9
diff
changeset
|
15 |
#: List of child widgets. |
0 | 16 |
self.children = [] |
93 | 17 |
self.layout = layout_class() |
9
7175ed629a76
Added ComboBox, HorizontalLayout, TreeNode, TreeModel, TreeView. Widget is now descendant of EventSource. Improved color management (color prefixes).
Radek Brich <radek.brich@devl.cz>
parents:
5
diff
changeset
|
18 |
|
90
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
19 |
def add(self, widget): |
87
ee5ea9671f28
Add core Widget, Container. Add widgets Label.
Radek Brich <radek.brich@devl.cz>
parents:
77
diff
changeset
|
20 |
"""Add widget into container.""" |
0 | 21 |
self.children.append(widget) |
22 |
widget.parent = self |
|
90
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
23 |
widget.window = self.window |
89 | 24 |
widget.set_theme(self.theme) |
93 | 25 |
self.layout.add(widget) |
26 |
||
27 |
def resize(self, w, h): |
|
28 |
Widget.resize(self, w, h) |
|
29 |
self.layout.resize() |
|
89 | 30 |
|
87
ee5ea9671f28
Add core Widget, Container. Add widgets Label.
Radek Brich <radek.brich@devl.cz>
parents:
77
diff
changeset
|
31 |
def draw(self, buffer, x=0, y=0): |
ee5ea9671f28
Add core Widget, Container. Add widgets Label.
Radek Brich <radek.brich@devl.cz>
parents:
77
diff
changeset
|
32 |
"""Draw child widgets.""" |
42
0224ce40792f
Make Container.layout a property.
Radek Brich <radek.brich@devl.cz>
parents:
41
diff
changeset
|
33 |
for child in self.children: |
92
b97c4e25ed6d
Configure logging for demos.
Radek Brich <radek.brich@devl.cz>
parents:
91
diff
changeset
|
34 |
cx = x + child.x |
b97c4e25ed6d
Configure logging for demos.
Radek Brich <radek.brich@devl.cz>
parents:
91
diff
changeset
|
35 |
cy = y + child.y |
b97c4e25ed6d
Configure logging for demos.
Radek Brich <radek.brich@devl.cz>
parents:
91
diff
changeset
|
36 |
with buffer.clip(cx, cy, child.width, child.height): |
b97c4e25ed6d
Configure logging for demos.
Radek Brich <radek.brich@devl.cz>
parents:
91
diff
changeset
|
37 |
child.draw(buffer, cx, cy) |
90
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
38 |
|
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
39 |
def set_theme(self, theme): |
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
40 |
Widget.set_theme(self, theme) |
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
41 |
for child in self.children: |
781774a8d568
Add timer, adjust inheritance of Widget, Container, Window.
Radek Brich <radek.brich@devl.cz>
parents:
89
diff
changeset
|
42 |
child.set_theme(theme) |