tuikit/container.py
author Radek Brich <radek.brich@devl.cz>
Fri, 14 Dec 2012 10:20:14 +0100
changeset 32 088b92ffb119
parent 23 4e72fd2a0e14
child 34 e3beacd5e536
permissions -rw-r--r--
Clean up, refactoring. Rename EventSource to Emitter, begin merging emit() method with handle().
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
16
8791a7da6835 Update VerticalLayout/HorizontalLayout. Add layout demo. Add Size, Borders to common. Update Coords, Rect.
Radek Brich <radek.brich@devl.cz>
parents: 15
diff changeset
     3
import logging
8791a7da6835 Update VerticalLayout/HorizontalLayout. Add layout demo. Add Size, Borders to common. Update Coords, Rect.
Radek Brich <radek.brich@devl.cz>
parents: 15
diff changeset
     4
18
e6c3a5ee91aa Eliminate relative imports.
Radek Brich <radek.brich@devl.cz>
parents: 16
diff changeset
     5
from tuikit.widget import Widget
e6c3a5ee91aa Eliminate relative imports.
Radek Brich <radek.brich@devl.cz>
parents: 16
diff changeset
     6
from tuikit.common import Borders
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     7
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
     8
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     9
class Container(Widget):
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
    10
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    11
    '''Container widget. Base for any widget which can contain other widgets.'''
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
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    13
    def __init__(self, width = 10, height = 10):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    14
        '''Create container of requested size.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    15
        Widget.__init__(self, width, height)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    16
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    17
        #: List of child widgets.
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    18
        self.children = []
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
    19
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    20
        self.mousechild = None
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    21
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    22
        #: Width of borders (left, top, right, bottom).
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    23
        #: Child widgets are placed within borders.
16
8791a7da6835 Update VerticalLayout/HorizontalLayout. Add layout demo. Add Size, Borders to common. Update Coords, Rect.
Radek Brich <radek.brich@devl.cz>
parents: 15
diff changeset
    24
        self.borders = Borders()
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
    25
15
c55b4749e562 Add Pager.
Radek Brich <radek.brich@devl.cz>
parents: 13
diff changeset
    26
        self._layout = None
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
    27
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    28
        self.widthrequest = (None, None)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    29
        self.heightrequest = (None, None)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    30
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
    31
        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
    32
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
    33
        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
    34
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
    35
        self.connect('resize', self.on_resize)
088b92ffb119 Clean up, refactoring. Rename EventSource to Emitter, begin merging emit() method with handle().
Radek Brich <radek.brich@devl.cz>
parents: 23
diff changeset
    36
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    37
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
    38
    def add(self, widget, **kw):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    39
        '''Add widget into this container.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    40
        self.children.append(widget)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    41
        widget.parent = self
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    42
        widget.settop(self.top)
15
c55b4749e562 Add Pager.
Radek Brich <radek.brich@devl.cz>
parents: 13
diff changeset
    43
        widget.hints.update(kw)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    44
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    45
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    46
    def layout(self, layout):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    47
        '''Set layout manager for placing child widgets.'''
15
c55b4749e562 Add Pager.
Radek Brich <radek.brich@devl.cz>
parents: 13
diff changeset
    48
        self._layout = layout
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    49
        layout.container = self
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    50
        self.connect('resize', layout.resize)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    51
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    52
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    53
    def settop(self, top):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    54
        '''Set top widget.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    55
        self.top = top
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    56
        for child in self.children:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    57
            child.settop(top)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    58
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    59
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
    60
    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
    61
        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
    62
        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
    63
            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
    64
            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
    65
                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
    66
            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
    67
                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
    68
                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
    69
        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
    70
        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
    71
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
    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
    74
        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
    75
            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
    76
            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
    77
        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
    78
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
    79
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
    80
    def on_resize(self):
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
    81
        for child in self.children:
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
    82
            child.handle('resize')
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
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
    85
    def draw(self, driver, x=0, y=0):
2
684cdc352562 Menu, Window and other improvements.
Radek Brich <radek.brich@devl.cz>
parents: 1
diff changeset
    86
        if self.hidden:
684cdc352562 Menu, Window and other improvements.
Radek Brich <radek.brich@devl.cz>
parents: 1
diff changeset
    87
            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
    88
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
    89
        driver.clipstack.push(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
    90
        if self.colorprefix:
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
    91
            driver.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
    92
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
    93
        Widget.draw(self, driver, x, y)
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
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
    95
        for child in [x for x in self.children if not x.allowlayout]:
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
    96
            child.draw(driver, x + child.x, y + child.y)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    97
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    98
        l, t, r, b = self.borders
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
    99
        driver.clipstack.push(x+l, y+t, self.width-l-r, self.height-t-b)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   100
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
   101
        for child in [x for x in self.children if x.allowlayout]:
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
   102
            child.draw(driver, x + child.x, y + child.y)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   103
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
   104
        driver.clipstack.pop()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   105
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
   106
        if self.colorprefix:
23
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
   107
            driver.popcolorprefix()
4e72fd2a0e14 Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
Radek Brich <radek.brich@devl.cz>
parents: 18
diff changeset
   108
        driver.clipstack.pop()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   109
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   110
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   111
    def mousedown(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   112
        handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   113
        for child in reversed(self.children):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   114
            if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   115
                childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   116
                child.mousedown(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   117
                self.mousechild = child
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   118
                handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   119
                break
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   120
        if not handled:
1
69318aba22bf Menu development. New focus. Easier imports from tuikit package.
Radek Brich <radek.brich@devl.cz>
parents: 0
diff changeset
   121
            self.setfocus()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   122
            self.handle('mousedown', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   123
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   124
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   125
    def mouseup(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   126
        if self.mousechild:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   127
            childev = ev.childevent(self.mousechild)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   128
            self.mousechild.mouseup(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   129
            self.mousechild = None
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   130
        else:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   131
            self.handle('mouseup', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   132
        #handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   133
        #for child in self.children:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   134
            #if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   135
                #childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   136
                #child.mouseup(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   137
                #self.mousechild = child
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   138
                #handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   139
        #if not handled:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   140
            #self.handle('mouseup', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   141
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   142
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   143
    def mousemove(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   144
        if self.mousechild:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   145
            childev = ev.childevent(self.mousechild)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   146
            self.mousechild.mousemove(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   147
        else:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   148
            self.handle('mousemove', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   149
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   150
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   151
    def mousewheel(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   152
        handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   153
        for child in reversed(self.children):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   154
            if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   155
                childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   156
                child.mousewheel(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   157
                handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   158
                break
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   159
        if not handled:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   160
            self.handle('mousewheel', ev)