[ wxwindows-Bugs-1697900 ] Error in Drag and Drop in TreeListCtrl
SourceForge.net
noreply at sourceforge.net
Tue Apr 10 12:38:28 PDT 2007
Bugs item #1697900, was opened at 2007-04-10 21:25
Message generated for change (Comment added) made by h_w_k
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=109863&aid=1697900&group_id=9863
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: HWK (h_w_k)
Assigned to: Nobody/Anonymous (nobody)
Summary: Error in Drag and Drop in TreeListCtrl
Initial Comment:
GetItem() in EVT_TREE_BEGIN_DRAG returns wrong item and you can't see the changing selections (the line with the blue background).
Here's a link with a similar problem:
http://archives.devshed.com/forums/python-122/treelistctrl-delayed-begin-drag-event-breaks-drag-n-drop-functionality-2223112.html
Here's sample code for testing:
import wx
import wx.gizmos as gizmos
class TestPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
self.DragItem = None
self.Bind(wx.EVT_SIZE, self.OnSize)
self.tree = gizmos.TreeListCtrl(self, -1, style = wx.TR_DEFAULT_STYLE
| wx.TR_FULL_ROW_HIGHLIGHT)
isz = (16,16)
il = wx.ImageList(isz[0], isz[1])
fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz))
fldropenidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, isz))
self.fileidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
self.tree.SetImageList(il)
self.il = il
self.tree.AddColumn("Main column")
self.tree.SetMainColumn(0)
self.tree.SetColumnWidth(0, 175)
self.root = self.tree.AddRoot("The Root Item")
self.tree.SetItemImage(self.root, fldridx, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(self.root, fldropenidx, which = wx.TreeItemIcon_Expanded)
for x in range(15):
txt = "Item %d" % x
child = self.tree.AppendItem(self.root, txt)
self.tree.SetItemImage(child, fldridx, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(child, fldropenidx, which = wx.TreeItemIcon_Expanded)
for y in range(5):
txt = "item %d-%s" % (x, chr(ord("a")+y))
item = self.tree.AppendItem(child, txt)
self.tree.SetItemImage(item, self.fileidx, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(item, self.fileidx, which = wx.TreeItemIcon_Selected)
self.tree.Expand(self.root)
self.tree.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnBeginDrag)
self.tree.Bind(wx.EVT_TREE_END_DRAG, self.OnEndDrag)
def OnBeginDrag(self, evt):
if not self.tree.ItemHasChildren(evt.GetItem()):
evt.Allow()
self.DragItem = evt.GetItem()
print self.tree.GetItemText(self.DragItem)
def OnEndDrag(self, evt):
old = self.DragItem
if old is None:
return
new_ = evt.GetItem()
if not new_.IsOk() or new_ == old:
return
parent = self.tree.GetItemParent(new_)
OldParent = self.tree.GetItemParent(old)
if new_ != OldParent and parent != OldParent:
self.tree.UnselectAll()
self.tree.SelectItem(old)
return
text = self.tree.GetItemText(old, 0)
self.tree.Delete(old)
if new_ == OldParent:
child = self.tree.InsertItemBefore(new_, 0, text)
else:
child = self.tree.InsertItem(parent, new_, text)
self.tree.SetItemImage(child, self.fileidx,
which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(child, self.fileidx,
which = wx.TreeItemIcon_Expanded)
self.tree.SelectItem(child)
self.DragItem = None
def OnSize(self, evt):
self.tree.SetSize(self.GetSize())
def main():
app = wx.PySimpleApp()
frame = wx.Frame(None, -1, 'TreeListCtrl', size=(200, 400))
panel = TestPanel(frame)
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
Thanks in advance
h_w_k
----------------------------------------------------------------------
>Comment By: HWK (h_w_k)
Date: 2007-04-10 21:38
Message:
Logged In: YES
user_id=1766136
Originator: YES
File Added: TreeListCtrl1.py
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=109863&aid=1697900&group_id=9863
More information about the wx-dev
mailing list