drag-and-drop adding of controls to test window
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
da7d0696d1
commit
5c82ed90df
@ -71,3 +71,16 @@ class Globals:
|
||||
|
||||
|
||||
g = Globals()
|
||||
|
||||
|
||||
class MyDataObject(wx.PyDataObjectSimple):
|
||||
def __init__(self):
|
||||
wx.PyDataObjectSimple.__init__(self, wx.CustomDataFormat('XRCed_DND'))
|
||||
self.data = ''
|
||||
def GetDataSize(self):
|
||||
return len(self.data)
|
||||
def GetDataHere(self):
|
||||
return self.data # returns a string
|
||||
def SetData(self, data):
|
||||
self.data = data
|
||||
return True
|
||||
|
@ -16,7 +16,6 @@ GROUP_WINDOWS, GROUP_MENUS, GROUP_SIZERS, GROUP_CONTROLS = range(GROUPNUM)
|
||||
|
||||
# States depending on current selection and Control/Shift keys
|
||||
STATE_ROOT, STATE_MENUBAR, STATE_TOOLBAR, STATE_MENU, STATE_STDDLGBTN, STATE_ELSE = range(6)
|
||||
|
||||
# Left toolbar for GUI elements
|
||||
class Tools(wx.Panel):
|
||||
TOOL_SIZE = (30, 30)
|
||||
@ -97,17 +96,18 @@ class Tools(wx.Panel):
|
||||
self.SetSizeHints(self.GetSize()[0], -1)
|
||||
# Events
|
||||
wx.EVT_COMMAND_RANGE(self, ID_NEW.PANEL, ID_NEW.LAST,
|
||||
wx.wxEVT_COMMAND_BUTTON_CLICKED, g.frame.OnCreate)
|
||||
wx.wxEVT_COMMAND_BUTTON_CLICKED, g.frame.OnCreate)
|
||||
wx.EVT_KEY_DOWN(self, self.OnKeyDown)
|
||||
wx.EVT_KEY_UP(self, self.OnKeyUp)
|
||||
|
||||
def AddButton(self, id, image, text):
|
||||
from wx.lib import buttons
|
||||
button = buttons.GenBitmapButton(self, id, image, size=self.TOOL_SIZE,
|
||||
style=wx.NO_BORDER|wx.WANTS_CHARS)
|
||||
style=wx.NO_BORDER|wx.WANTS_CHARS)
|
||||
button.SetBezelWidth(0)
|
||||
wx.EVT_KEY_DOWN(button, self.OnKeyDown)
|
||||
wx.EVT_KEY_UP(button, self.OnKeyUp)
|
||||
wx.EVT_RIGHT_DOWN(button, self.OnRightClick)
|
||||
button.SetToolTipString(text)
|
||||
self.curSizer.Add(button)
|
||||
self.groups[-1][1][id] = button
|
||||
@ -160,6 +160,22 @@ class Tools(wx.Panel):
|
||||
else: box.SetLabel('[-] ' + box.name)
|
||||
self.Layout()
|
||||
|
||||
# Drag
|
||||
def OnRightClick(self, evt):
|
||||
do = MyDataObject()
|
||||
do.SetData(str(evt.GetId()))
|
||||
bm = evt.GetEventObject().GetBitmapLabel()
|
||||
if wx.Platform != '__WXMAC__':
|
||||
icon = wx.EmptyIcon()
|
||||
icon.CopyFromBitmap(bm)
|
||||
dragSource = wx.DropSource(self, icon)
|
||||
else: # on Mac DragSource requires cursor (but does not work anyway)
|
||||
curs = wx.CursorFromImage(wx.ImageFromBitmap(bm))
|
||||
dragSource = wx.DropSource(self, curs)
|
||||
dragSource.SetData(do)
|
||||
g.frame.SetStatusText('Release the mouse button over the test window')
|
||||
dragSource.DoDragDrop()
|
||||
|
||||
# Process key events
|
||||
def OnKeyDown(self, evt):
|
||||
if evt.GetKeyCode() == wx.WXK_CONTROL:
|
||||
|
Loading…
Reference in New Issue
Block a user