backport of XRCed changes from today

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2007-05-01 06:03:28 +00:00
parent 3f4ec51e47
commit c3e1d30aea
6 changed files with 45 additions and 11 deletions

View File

@@ -100,6 +100,8 @@ class Tools(wx.Panel):
wx.EVT_KEY_DOWN(self, self.OnKeyDown)
wx.EVT_KEY_UP(self, self.OnKeyUp)
self.drag = None
def AddButton(self, id, image, text):
from wx.lib import buttons
button = buttons.GenBitmapButton(self, id, image, size=self.TOOL_SIZE,
@@ -107,7 +109,8 @@ class Tools(wx.Panel):
button.SetBezelWidth(0)
wx.EVT_KEY_DOWN(button, self.OnKeyDown)
wx.EVT_KEY_UP(button, self.OnKeyUp)
wx.EVT_RIGHT_DOWN(button, self.OnRightClick)
wx.EVT_LEFT_DOWN(button, self.OnLeftDownOnButton)
wx.EVT_MOTION(button, self.OnMotionOnButton)
button.SetToolTipString(text)
self.curSizer.Add(button)
self.groups[-1][1][id] = button
@@ -160,11 +163,32 @@ class Tools(wx.Panel):
else: box.SetLabel('[-] ' + box.name)
self.Layout()
# Drag
def OnRightClick(self, evt):
# DaD
def OnLeftDownOnButton(self, evt):
self.posDown = evt.GetPosition()
self.idDown = evt.GetId()
self.btnDown = evt.GetEventObject()
evt.Skip()
def OnMotionOnButton(self, evt):
# Detect dragging
if evt.Dragging() and evt.LeftIsDown():
d = evt.GetPosition() - self.posDown
if max(abs(d[0]), abs(d[1])) >= 5:
if self.btnDown.HasCapture():
# Generate up event to release mouse
evt = wx.MouseEvent(wx.EVT_LEFT_UP.typeId)
evt.SetId(self.idDown)
# Set flag to prevent normal button operation this time
self.drag = True
self.btnDown.ProcessEvent(evt)
self.StartDrag()
evt.Skip()
def StartDrag(self):
do = MyDataObject()
do.SetData(str(evt.GetId()))
bm = evt.GetEventObject().GetBitmapLabel()
do.SetData(str(self.idDown))
bm = self.btnDown.GetBitmapLabel()
# wxGTK requires wxIcon cursor, wxWIN and wxMAC require wxCursor
if wx.Platform == '__WXGTK__':
icon = wx.EmptyIcon()