tuikit/container.py
author Radek Brich <radek.brich@devl.cz>
Thu, 08 Sep 2011 11:37:27 +0200
changeset 13 19ebde2fd594
parent 9 7175ed629a76
child 15 c55b4749e562
permissions -rw-r--r--
Add more generated documentation.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     2
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     3
from .widget import Widget
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
     4
import logging
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     5
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
     6
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     7
class Container(Widget):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
     8
    
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
     9
    '''Container widget. Base for any widget which can contain other widgets.'''
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    10
    
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    11
    def __init__(self, width = 10, height = 10):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    12
        '''Create container of requested size.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    13
        Widget.__init__(self, width, height)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    14
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    15
        #: List of child widgets.
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    16
        self.children = []
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    17
        
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    18
        self.mousechild = None
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    19
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    20
        #: Width of borders (left, top, right, bottom).
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    21
        #: Child widgets are placed within borders.
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    22
        self.borders = (0, 0, 0, 0)
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    23
        
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    24
        self.widthrequest = (None, None)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    25
        self.heightrequest = (None, None)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    26
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
    27
        self.colorprefix = None
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
    28
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
    29
        self.trapfocus = False  # if True, tab cycles inside container
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
    30
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    31
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    32
    def add(self, widget, **kw):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    33
        '''Add widget into this container.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    34
        self.children.append(widget)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    35
        widget.parent = self
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    36
        widget.settop(self.top)
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    37
        widget.layouthints.update(kw)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    38
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    39
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    40
    def layout(self, layout):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    41
        '''Set layout manager for placing child widgets.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    42
        self.layout = layout
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    43
        layout.container = self
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    44
        self.connect('resize', layout.resize)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    45
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    46
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    47
    def settop(self, top):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    48
        '''Set top widget.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    49
        self.top = top
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    50
        for child in self.children:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    51
            child.settop(top)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    52
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    53
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
    54
    def focusnext(self):
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
    55
        i = self.children.index(self.top.focuswidget)
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
    56
        while True:
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
    57
            i += 1
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
    58
            if i >= len(self.children):
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
    59
                i = 0
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
    60
            if self.children[i].canfocus():
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
    61
                self.children[i].setfocus()
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
    62
                break
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
    63
        log = logging.getLogger('tuikit')
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
    64
        log.debug(str(self.top.focuswidget.__class__))
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
    65
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
    66
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
    67
    def keypress(self, keyname, char):
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
    68
        if keyname == 'tab':
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
    69
            self.focusnext()
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
    70
            return
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
    71
        Widget.keypress(self, keyname, char)
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
    72
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
    73
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    74
    def resize(self):
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    75
        Widget.resize(self)
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    76
        for child in self.children:
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    77
            child.emit('resize')
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    78
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    79
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    80
    def draw(self, screen, x=0, y=0):
2
684cdc352562 Menu, Window and other improvements.
Radek Brich <radek.brich@devl.cz>
parents: 1
diff changeset
    81
        if self.hidden:
684cdc352562 Menu, Window and other improvements.
Radek Brich <radek.brich@devl.cz>
parents: 1
diff changeset
    82
            return
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    83
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    84
        screen.pushclip(x, y, self.width, self.height)
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
    85
        if self.colorprefix:
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
    86
            screen.pushcolorprefix(self.colorprefix)
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    87
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    88
        Widget.draw(self, screen, x, y)
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    89
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    90
        for child in [x for x in self.children if not x.allowlayout]:
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    91
            child.draw(screen, x + child.x, y + child.y)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    92
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    93
        l, t, r, b = self.borders
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    94
        screen.pushclip(x+l, y+t, self.width-l-r, self.height-t-b)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    95
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
    96
        for child in [x for x in self.children if x.allowlayout]:
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    97
            child.draw(screen, x + child.x, y + child.y)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    98
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    99
        screen.popclip()
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   100
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
   101
        if self.colorprefix:
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
   102
            screen.popcolorprefix()
5
ae128c885d0f New GridLayout. Change cursor behavior (hide on unfocus event). Change resize event to propagate through containers. Change container clipping - allowlayout=false children are clipped without borders. More Widget doc.
Radek Brich <radek.brich@devl.cz>
parents: 2
diff changeset
   103
        screen.popclip()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   104
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   105
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   106
    def mousedown(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   107
        handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   108
        for child in reversed(self.children):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   109
            if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   110
                childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   111
                child.mousedown(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   112
                self.mousechild = child
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   113
                handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   114
                break
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   115
        if not handled:
1
69318aba22bf Menu development. New focus. Easier imports from tuikit package.
Radek Brich <radek.brich@devl.cz>
parents: 0
diff changeset
   116
            self.setfocus()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   117
            self.handle('mousedown', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   118
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   119
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   120
    def mouseup(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   121
        if self.mousechild:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   122
            childev = ev.childevent(self.mousechild)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   123
            self.mousechild.mouseup(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   124
            self.mousechild = None
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   125
        else:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   126
            self.handle('mouseup', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   127
        #handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   128
        #for child in self.children:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   129
            #if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   130
                #childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   131
                #child.mouseup(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   132
                #self.mousechild = child
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   133
                #handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   134
        #if not handled:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   135
            #self.handle('mouseup', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   136
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   137
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   138
    def mousemove(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   139
        if self.mousechild:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   140
            childev = ev.childevent(self.mousechild)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   141
            self.mousechild.mousemove(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   142
        else:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   143
            self.handle('mousemove', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   144
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   145
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   146
    def mousewheel(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   147
        handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   148
        for child in reversed(self.children):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   149
            if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   150
                childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   151
                child.mousewheel(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   152
                handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   153
                break
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   154
        if not handled:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   155
            self.handle('mousewheel', ev)