/usr/share/pyshared/PythonCard/components/tree.py is in python-pythoncard 0.8.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | """
__version__ = "$Revision: 1.15 $"
__date__ = "$Date: 2004/05/13 02:40:25 $"
"""
import wx
from PythonCard import event, widget
class TreeEvent(event.Event):
def decorate(self, aWxEvent, source):
aWxEvent = event.Event.decorate(self, aWxEvent, source)
aWxEvent.item = aWxEvent.GetItem()
return aWxEvent
class TreeItemActivatedEvent(TreeEvent):
name = 'itemActivated'
binding = wx.EVT_TREE_ITEM_ACTIVATED
id = wx.wxEVT_COMMAND_TREE_ITEM_ACTIVATED
class TreeItemCollapsedEvent(TreeEvent):
name = 'itemCollapsed'
binding = wx.EVT_TREE_ITEM_COLLAPSED
id = wx.wxEVT_COMMAND_TREE_ITEM_COLLAPSED
class TreeItemCollapsingEvent(TreeEvent):
name = 'itemCollapsing'
binding = wx.EVT_TREE_ITEM_COLLAPSING
id = wx.wxEVT_COMMAND_TREE_ITEM_COLLAPSING
class TreeItemExpandedEvent(TreeEvent):
name = 'itemExpanded'
binding = wx.EVT_TREE_ITEM_EXPANDED
id = wx.wxEVT_COMMAND_TREE_ITEM_EXPANDED
class TreeItemExpandingEvent(TreeEvent):
name = 'itemExpanding'
binding = wx.EVT_TREE_ITEM_EXPANDING
id = wx.wxEVT_COMMAND_TREE_ITEM_EXPANDING
class TreeSelectionChangedEvent(TreeEvent):
name = 'selectionChanged'
binding = wx.EVT_TREE_SEL_CHANGED
id = wx.wxEVT_COMMAND_TREE_SEL_CHANGED
def decorate(self, aWxEvent, source):
aWxEvent = TreeEvent.decorate(self, aWxEvent, source)
aWxEvent.oldItem = aWxEvent.GetOldItem()
return aWxEvent
class TreeSelectionChangingEvent(TreeEvent):
name = 'selectionChanging'
binding = wx.EVT_TREE_SEL_CHANGING
id = wx.wxEVT_COMMAND_TREE_SEL_CHANGING
def decorate(self, aWxEvent, source):
aWxEvent = TreeEvent.decorate(self, aWxEvent, source)
aWxEvent.oldItem = aWxEvent.GetOldItem()
return aWxEvent
class TreeKeyDownEvent(TreeEvent):
name = 'keyDown'
binding = wx.EVT_TREE_KEY_DOWN
id = wx.wxEVT_COMMAND_TREE_KEY_DOWN
def decorate(self, aWxEvent, source):
aWxEvent = TreeEvent.decorate(self, aWxEvent, source)
aWxEvent.keyCode = aWxEvent.GetKeyCode()
keyEvent = aWxEvent.GetKeyEvent()
aWxEvent.position = tuple(keyEvent.GetPosition())
aWxEvent.x = keyEvent.GetX()
aWxEvent.y = keyEvent.GetY()
aWxEvent.altDown = keyEvent.AltDown()
aWxEvent.controlDown = keyEvent.ControlDown()
aWxEvent.shiftDown = keyEvent.ShiftDown()
keyEvent = None
return aWxEvent
TreeEvents = (#TreeSelectEvent,
TreeItemActivatedEvent,
TreeItemCollapsedEvent,
TreeItemCollapsingEvent,
TreeItemExpandedEvent,
TreeItemExpandingEvent,
TreeSelectionChangedEvent,
TreeSelectionChangingEvent,
TreeKeyDownEvent
)
class TreeSpec(widget.WidgetSpec):
def __init__(self) :
## events = [event.SelectEvent,
## event.ItemActivatedEvent,
## event.ItemExpandedEvent,
## event.ItemExpandingEvent,
## event.SelectionChangedEvent,
## event.SelectionChangingEvent,
## event.KeyDownEvent
## ]
events = list(TreeEvents)
attributes = {
#'items' : { 'presence' : 'optional', 'default' : [] },
#'style' : { 'presence' : 'optional', 'default' : [], 'values' : [ 'horizontal', 'vertical' ] },
'size' : { 'presence' : 'optional', 'default' : [ 50, 50 ] },
}
widget.WidgetSpec.__init__( self, 'Tree', 'Widget', events, attributes )
class Tree(widget.Widget, wx.TreeCtrl):
"""
A tree.
"""
_spec = TreeSpec()
def __init__(self, aParent, aResource) :
wx.TreeCtrl.__init__(
self,
aParent,
widget.makeNewId(aResource.id),
aResource.position,
aResource.size,
#aResource.items,
#style = border | wx.LC_REPORT | wx.CLIP_SIBLINGS,
name = aResource.name
)
widget.Widget.__init__(self, aParent, aResource)
self._bindEvents(event.WIDGET_EVENTS + TreeEvents)
# mixedCase aliases
# probably need to do all the wxTreeCtrl methods
# this just covers the ones in the minimalTree sample
addRoot = wx.TreeCtrl.AddRoot
appendItem = wx.TreeCtrl.AppendItem
getChildrenCount = wx.TreeCtrl.GetChildrenCount
getItemText = wx.TreeCtrl.GetItemText
isExpanded = wx.TreeCtrl.IsExpanded
selectItem = wx.TreeCtrl.SelectItem
setItemHasChildren = wx.TreeCtrl.SetItemHasChildren
# if it looks like there is a memory leak with Tree components
# then Tree should have its own _dispatch method
# and set aWxEvent.oldItem = None, and aWxEvent.item = None
# after calling widget.Widget._dispatch
import sys
from PythonCard import registry
registry.Registry.getInstance().register(sys.modules[__name__].Tree)
|