Example #1
0
    def __init__(self, place, data=None, **kwds):
        _xTreeCtrl.__init__(self, self, place[0])
        Widget.__init__(self, place, **kwds)

        self.data = data

        self.root = None
        self.items = TwoWayDict()
        self.selection = None

        self.SetIndent(10)

        self.imagelist = wx.ImageList(16, 16)
        self.SetImageList(self.imagelist)
        self.pixmaps = {}

        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_sel_changed)
        self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.on_label_edit)

        #        self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.on_expand)
        #        self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.on_collapse)

        self._skip_event = False
Example #2
0
    def __init__(self, place, data=None, **kwds):
        _xTreeCtrl.__init__(self, self, place[0])
        Widget.__init__(self, place,  **kwds)

        self.data = data
        
        self.root = None
        self.items = TwoWayDict()
        self.selection = None

        self.SetIndent(10)

        self.imagelist = wx.ImageList(16, 16)
        self.SetImageList(self.imagelist)
        self.pixmaps = {}

        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_sel_changed)
        self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.on_label_edit)

#        self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.on_expand)
#        self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.on_collapse)

        self._skip_event = False
Example #3
0
class Tree(Widget, _xTreeCtrl):
    def __init__(self, place, data=None, **kwds):
        _xTreeCtrl.__init__(self, self, place[0])
        Widget.__init__(self, place,  **kwds)

        self.data = data
        
        self.root = None
        self.items = TwoWayDict()
        self.selection = None

        self.SetIndent(10)

        self.imagelist = wx.ImageList(16, 16)
        self.SetImageList(self.imagelist)
        self.pixmaps = {}

        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_sel_changed)
        self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.on_label_edit)

#        self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.on_expand)
#        self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.on_collapse)

        self._skip_event = False


    def on_sel_changed(self, evt):
        if self._skip_event:
            return
        for id in self.items:
            if self.IsSelected(id):
                self.emit('selected', self.items[id])
                self.selection = self.items[id]
                return
        self.selection = None

    def select(self, item, skip_event=False):
        self._skip_event = skip_event
        self.SelectItem(self.items.key(item))
        self._skip_event = False

    def on_label_edit(self, evt):
        item = self.items[evt.GetItem()]
        label = evt.GetLabel()
        if hasattr(self.data, 'rename') and label != '' and self.data.rename(item, label):
            evt.Veto()

    def getpixmap(self, filename):
        if filename is None:
            return None
        if filename not in self.pixmaps:
            self.pixmaps[filename] = self.imagelist.Add(wx.Image(DATADIR+'data/images/'+filename).ConvertToBitmap())
        return self.pixmaps[filename]

    def on_data_modified(self, obj):
        self.clear()
        self.set_data(self.data)
        if self.selection is not None:
            self.SelectItem(self.items.key(self.selection))

    def set_data(self, data):
        self.data = data
        self.data.connect('modified', self.on_data_modified)

        self.root = self.data.root()
        nodeid = self.AddRoot(self.data.text(self.root))
        self.items[nodeid] = self.root

        for child in self.data.children(self.root):
            self._add_node_and_children(self.root, child)

        self.Expand(nodeid)

    def _add_node_and_children(self, parent, node):
        nodeid = self.AppendItem(self.items.key(parent), self.data.text(node))
        self.items[nodeid] = node

        for child in self.data.children(node):
            self._add_node_and_children(node, child)

        self.Expand(nodeid)

    def clear(self):
        self.root = None
        self.data.disconnect('modified', self.on_data_modified)
        self.items.clear()
        self.DeleteAllItems()

    def enable_drop(self, formats):
        self.can_drop = True
        self.formats = formats
        target = _xDropTarget(self)
        self.composite = create_wx_data_object(self.formats)
        target.SetDataObject(self.composite)
        self.SetDropTarget(target)
        target.formats = formats
Example #4
0
class Tree(Widget, _xTreeCtrl):
    def __init__(self, place, data=None, **kwds):
        _xTreeCtrl.__init__(self, self, place[0])
        Widget.__init__(self, place, **kwds)

        self.data = data

        self.root = None
        self.items = TwoWayDict()
        self.selection = None

        self.SetIndent(10)

        self.imagelist = wx.ImageList(16, 16)
        self.SetImageList(self.imagelist)
        self.pixmaps = {}

        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_sel_changed)
        self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.on_label_edit)

        #        self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.on_expand)
        #        self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.on_collapse)

        self._skip_event = False

    def on_sel_changed(self, evt):
        if self._skip_event:
            return
        for id in self.items:
            if self.IsSelected(id):
                self.emit('selected', self.items[id])
                self.selection = self.items[id]
                return
        self.selection = None

    def select(self, item, skip_event=False):
        self._skip_event = skip_event
        self.SelectItem(self.items.key(item))
        self._skip_event = False

    def on_label_edit(self, evt):
        item = self.items[evt.GetItem()]
        label = evt.GetLabel()
        if hasattr(self.data, 'rename') and label != '' and self.data.rename(
                item, label):
            evt.Veto()

    def getpixmap(self, filename):
        if filename is None:
            return None
        if filename not in self.pixmaps:
            self.pixmaps[filename] = self.imagelist.Add(
                wx.Image(DATADIR + 'data/images/' +
                         filename).ConvertToBitmap())
        return self.pixmaps[filename]

    def on_data_modified(self, obj):
        self.clear()
        self.set_data(self.data)
        if self.selection is not None:
            self.SelectItem(self.items.key(self.selection))

    def set_data(self, data):
        self.data = data
        self.data.connect('modified', self.on_data_modified)

        self.root = self.data.root()
        nodeid = self.AddRoot(self.data.text(self.root))
        self.items[nodeid] = self.root

        for child in self.data.children(self.root):
            self._add_node_and_children(self.root, child)

        self.Expand(nodeid)

    def _add_node_and_children(self, parent, node):
        nodeid = self.AppendItem(self.items.key(parent), self.data.text(node))
        self.items[nodeid] = node

        for child in self.data.children(node):
            self._add_node_and_children(node, child)

        self.Expand(nodeid)

    def clear(self):
        self.root = None
        self.data.disconnect('modified', self.on_data_modified)
        self.items.clear()
        self.DeleteAllItems()

    def enable_drop(self, formats):
        self.can_drop = True
        self.formats = formats
        target = _xDropTarget(self)
        self.composite = create_wx_data_object(self.formats)
        target.SetDataObject(self.composite)
        self.SetDropTarget(target)
        target.formats = formats