tuikit/container.py
author Radek Brich <radek.brich@devl.cz>
Sun, 09 Oct 2011 13:06:58 +0200
changeset 23 4e72fd2a0e14
parent 18 e6c3a5ee91aa
child 32 088b92ffb119
permissions -rw-r--r--
Rename BackendCurses to DriverCurses. Add DriverDummy - dummy driver for debugging purposes. Move clipping stack from driver to common.ClipStack class.
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):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    10
    
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.'''
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
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 = []
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
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()
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    25
        
15
c55b4749e562 Add Pager.
Radek Brich <radek.brich@devl.cz>
parents: 13
diff changeset
    26
        self._layout = None
c55b4749e562 Add Pager.
Radek Brich <radek.brich@devl.cz>
parents: 13
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
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    35
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
    36
    def add(self, widget, **kw):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    37
        '''Add widget into this container.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    38
        self.children.append(widget)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    39
        widget.parent = self
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    40
        widget.settop(self.top)
15
c55b4749e562 Add Pager.
Radek Brich <radek.brich@devl.cz>
parents: 13
diff changeset
    41
        widget.hints.update(kw)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    42
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    43
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    44
    def layout(self, layout):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    45
        '''Set layout manager for placing child widgets.'''
15
c55b4749e562 Add Pager.
Radek Brich <radek.brich@devl.cz>
parents: 13
diff changeset
    46
        self._layout = layout
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    47
        layout.container = self
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    48
        self.connect('resize', layout.resize)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    49
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    50
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    51
    def settop(self, top):
13
19ebde2fd594 Add more generated documentation.
Radek Brich <radek.brich@devl.cz>
parents: 9
diff changeset
    52
        '''Set top widget.'''
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    53
        self.top = top
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    54
        for child in self.children:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    55
            child.settop(top)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    56
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    57
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
    58
    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
    59
        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
    60
        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
    61
            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
    62
            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
    63
                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
    64
            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
    65
                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
    66
                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
    67
        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
    68
        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
    69
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
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
    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
    72
        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
    73
            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
    74
            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
    75
        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
    76
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
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
    78
    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
    79
        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
    80
        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
    81
            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
    82
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
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
    84
    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
    85
        if self.hidden:
684cdc352562 Menu, Window and other improvements.
Radek Brich <radek.brich@devl.cz>
parents: 1
diff changeset
    86
            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
    87
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
    88
        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
    89
        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
    90
            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
    91
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
    92
        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
    93
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
        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
    95
            child.draw(driver, x + child.x, y + child.y)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    96
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    97
        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
    98
        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
    99
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
   100
        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
   101
            child.draw(driver, x + child.x, y + child.y)
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   102
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
   103
        driver.clipstack.pop()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   104
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
   105
        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
   106
            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
   107
        driver.clipstack.pop()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   108
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   109
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   110
    def mousedown(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   111
        handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   112
        for child in reversed(self.children):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   113
            if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   114
                childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   115
                child.mousedown(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   116
                self.mousechild = child
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   117
                handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   118
                break
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   119
        if not handled:
1
69318aba22bf Menu development. New focus. Easier imports from tuikit package.
Radek Brich <radek.brich@devl.cz>
parents: 0
diff changeset
   120
            self.setfocus()
0
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   121
            self.handle('mousedown', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   122
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   123
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   124
    def mouseup(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   125
        if self.mousechild:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   126
            childev = ev.childevent(self.mousechild)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   127
            self.mousechild.mouseup(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   128
            self.mousechild = None
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   129
        else:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   130
            self.handle('mouseup', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   131
        #handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   132
        #for child in self.children:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   133
            #if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   134
                #childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   135
                #child.mouseup(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   136
                #self.mousechild = child
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   137
                #handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   138
        #if not handled:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   139
            #self.handle('mouseup', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   140
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   141
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   142
    def mousemove(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   143
        if self.mousechild:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   144
            childev = ev.childevent(self.mousechild)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   145
            self.mousechild.mousemove(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   146
        else:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   147
            self.handle('mousemove', ev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   148
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   149
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   150
    def mousewheel(self, ev):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   151
        handled = False
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   152
        for child in reversed(self.children):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   153
            if child.enclose(ev.wx, ev.wy):
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   154
                childev = ev.childevent(child)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   155
                child.mousewheel(childev)
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   156
                handled = True
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   157
                break
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   158
        if not handled:
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
   159
            self.handle('mousewheel', ev)