This file is indexed.

/usr/share/pyshared/PythonCard/components/tree.py is in python-pythoncard 0.8.2-3.

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)