Add fullscreen option to CustomTreeCtrl Drag/Drop

Feature addition
Add SetDragFullScreen and GetDragFullScreen methods which changes the
way the simplified drag/drop works in the tree. This flag is passed
to the wx.DragImage.BeginDrag() method when it is called.
Also add this option to HyperTreeList.
Modify the CustomTreeCtrl and HyperTreeList demos so it can be tested.
This commit is contained in:
cbeytas
2019-01-07 00:26:28 -05:00
parent 0eb68d793f
commit b7d118df0f
4 changed files with 83 additions and 18 deletions

View File

@@ -979,10 +979,14 @@ class CustomTreeCtrlDemo(wx.Panel):
self.checkvista = wx.CheckBox(pnl, -1, "Windows Vista Theme")
self.checkvista.Bind(wx.EVT_CHECKBOX, self.OnVista)
self.dragFullScreen = wx.CheckBox(pnl, -1, "Fullscreen Drag/Drop")
self.dragFullScreen.Bind(wx.EVT_CHECKBOX, self.OnDragFullScreen)
themessizer.Add(sizera, 0, wx.EXPAND)
themessizer.Add(sizerb, 0, wx.EXPAND)
themessizer.Add((0, 5))
themessizer.Add(self.checkvista, 0, wx.EXPAND|wx.ALL, 3)
themessizer.Add(self.dragFullScreen, 0, wx.EXPAND|wx.ALL, 3)
mainsizer.Add(stylesizer, 0, wx.EXPAND|wx.ALL, 5)
mainsizer.Add(colourssizer, 0, wx.EXPAND|wx.ALL, 5)
@@ -1280,6 +1284,12 @@ class CustomTreeCtrlDemo(wx.Panel):
event.Skip()
def OnDragFullScreen(self, event):
self.tree.SetDragFullScreen(event.IsChecked())
event.Skip()
#---------------------------------------------------------------------------
# CustomTreeCtrl Demo Implementation
#---------------------------------------------------------------------------
@@ -2005,8 +2015,7 @@ class CustomTreeCtrl(CT.CustomTreeCtrl):
self.item = event.GetItem()
if self.item:
self.log.write("Beginning Drag..." + "\n")
self.log.write("Beginning Drag... fullscreen=%s\n" % self.GetDragFullScreen())
event.Allow()
@@ -2014,16 +2023,19 @@ class CustomTreeCtrl(CT.CustomTreeCtrl):
self.item = event.GetItem()
if self.item:
self.log.write("Beginning Right Drag..." + "\n")
self.log.write("Beginning Right Drag... fullscreen=%s\n" % self.GetDragFullScreen())
event.Allow()
def OnEndDrag(self, event):
self.item = event.GetItem()
if self.item:
self.log.write("Ending Drag!" + "\n")
if self.GetDragFullScreen() is True:
wnd = wx.FindWindowAtPoint(self.ClientToScreen(event.GetPoint()))
self.log.write("Ending Drag! window=%s\n" % repr(wnd))
else:
self.item = event.GetItem()
name = self.GetItemText(self.item) if self.item else 'None'
self.log.write("Ending Drag! item=%s\n" % name)
event.Skip()

View File

@@ -1323,10 +1323,14 @@ class HyperTreeListDemo(wx.Frame):
self.checkvista = wx.CheckBox(self.leftpanel, -1, "Windows Vista Theme")
self.checkvista.Bind(wx.EVT_CHECKBOX, self.OnVista)
self.dragFullScreen = wx.CheckBox(self.leftpanel, -1, "Fullscreen Drag/Drop")
self.dragFullScreen.Bind(wx.EVT_CHECKBOX, self.OnDragFullScreen)
themessizer.Add(sizera, 0, wx.EXPAND)
themessizer.Add(sizerb, 0, wx.EXPAND)
themessizer.Add((0, 5))
themessizer.Add(self.checkvista, 0, wx.EXPAND|wx.ALL, 3)
themessizer.Add(self.dragFullScreen, 0, wx.EXPAND|wx.ALL, 3)
mainsizer.Add(stylesizer, 0, wx.EXPAND|wx.ALL, 5)
mainsizer.Add(columnssizer, 0, wx.EXPAND|wx.ALL, 5)
@@ -1679,6 +1683,11 @@ class HyperTreeListDemo(wx.Frame):
event.Skip()
def OnDragFullScreen(self, event):
self.tree.SetDragFullScreen(event.IsChecked())
event.Skip()
#---------------------------------------------------------------------------
# HyperTreeList Implementation
@@ -2427,8 +2436,7 @@ class HyperTreeList(HTL.HyperTreeList):
self.item = event.GetItem()
if self.item:
self.log.write("Beginning Drag...\n")
self.log.write("Beginning Drag... fullscreen=%s\n" % self.GetDragFullScreen())
event.Allow()
@@ -2436,16 +2444,19 @@ class HyperTreeList(HTL.HyperTreeList):
self.item = event.GetItem()
if self.item:
self.log.write("Beginning Right Drag...\n")
self.log.write("Beginning Right Drag... fullscreen=%s\n" % self.GetDragFullScreen())
event.Allow()
def OnEndDrag(self, event):
self.item = event.GetItem()
if self.item:
self.log.write("Ending Drag!\n")
if self.GetDragFullScreen() is True:
wnd = wx.FindWindowAtPoint(self.ClientToScreen(event.GetPoint()))
self.log.write("Ending Drag! window=%s\n" % repr(wnd))
else:
self.item = event.GetItem()
name = self.GetItemText(self.item) if self.item else 'None'
self.log.write("Ending Drag! item=%s\n" % name)
event.Skip()