]> git.saurik.com Git - wxWidgets.git/commitdiff
drag-and-drop adding of controls to test window
authorRoman Rolinsky <rolinsky@femagsoft.com>
Thu, 26 Apr 2007 19:51:14 +0000 (19:51 +0000)
committerRoman Rolinsky <rolinsky@femagsoft.com>
Thu, 26 Apr 2007 19:51:14 +0000 (19:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/wx/tools/XRCed/globals.py
wxPython/wx/tools/XRCed/tools.py

index ca71046967edbbd8110acfb14834514579440362..43f42e39d841d9c7eb30ff81d77f28b07338e3bb 100644 (file)
@@ -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
index 45687f850adbb49ec88b0dc2d1b175e1a2822439..f2db30528c5355102e57728ea007c6e398822a92 100644 (file)
@@ -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: