]> git.saurik.com Git - wxWidgets.git/commitdiff
revision 7
authorRoman Rolinsky <rolinsky@femagsoft.com>
Tue, 8 Nov 2005 17:01:38 +0000 (17:01 +0000)
committerRoman Rolinsky <rolinsky@femagsoft.com>
Tue, 8 Nov 2005 17:01:38 +0000 (17:01 +0000)
Using system clipboard for Copy/Paste

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/wx/tools/XRCed/CHANGES.txt
wxPython/wx/tools/XRCed/globals.py
wxPython/wx/tools/XRCed/xrced.py

index 84cff500acf198306bf28b7cf110dbb141b02b8c..345f9888a75bea102c9aad87acf72c2e4b5afff6 100644 (file)
@@ -1,3 +1,8 @@
+0.1.6-7
+-------
+
+Using system clipboard for Copy/Paste.
+
 0.1.6-6
 -------
 
index f74e78d02025111a010a3b38ce9f46b4bf15bf65..9b5b12dc969926224747ce0c5cb91300ded87fac 100644 (file)
@@ -15,7 +15,7 @@ import sys
 # Global constants
 
 progname = 'XRCed'
-version = '0.1.6-6'
+version = '0.1.6-7'
 # Can be changed to set other default encoding different
 #defaultEncoding = ''
 # you comment above and can uncomment this:
index a68597b7fd51e55943f7b06da312732ecb75a257..0f50d477eb227e4f995d27dd4bda4e24ce398b0c 100644 (file)
@@ -21,7 +21,7 @@ Options:
 """
 
 from globals import *
-import os, sys, getopt, re, traceback, tempfile, shutil
+import os, sys, getopt, re, traceback, tempfile, shutil, cPickle
 
 # Local modules
 from tree import *                      # imports xxx which imports params
@@ -306,7 +306,6 @@ class Frame(wxFrame):
         self.SetSizer(sizer)
 
         # Initialize
-        self.clipboard = None
         self.Clear()
 
         # Other events
@@ -414,7 +413,11 @@ class Frame(wxFrame):
         selected = tree.selection
         if not selected: return         # key pressed event
         xxx = tree.GetPyData(selected)
-        self.clipboard = xxx.element.cloneNode(True)
+        wx.TheClipboard.Open()
+        data = wx.CustomDataObject('XRCED')
+        data.SetData(cPickle.dumps(xxx.element))
+        wx.TheClipboard.SetData(data)
+        wx.TheClipboard.Close()
         self.SetStatusText('Copied')
 
     def OnPaste(self, evt):
@@ -443,8 +446,16 @@ class Frame(wxFrame):
             parentLeaf = selected
         parent = tree.GetPyData(parentLeaf).treeObject()
 
-        # Create a copy of clipboard element
-        elem = self.clipboard.cloneNode(True)
+        # Create a copy of clipboard pickled element
+        wx.TheClipboard.Open()
+        data = wx.CustomDataObject('XRCED')
+        if not wx.TheClipboard.IsSupported(data.GetFormat()):
+            wx.TheClipboard.Close()
+            wx.LogError('unsupported clipboard format')
+            return
+        wx.TheClipboard.GetData(data)
+        wx.TheClipboard.Close()
+        elem = cPickle.loads(data.GetData())
         # Tempopary xxx object to test things
         xxx = MakeXXXFromDOM(parent, elem)
 
@@ -553,8 +564,11 @@ class Frame(wxFrame):
         elem = tree.RemoveLeaf(selected)
         undoMan.RegisterUndo(UndoCutDelete(index, parent, elem))
         if evt.GetId() == wxID_CUT:
-            if self.clipboard: self.clipboard.unlink()
-            self.clipboard = elem.cloneNode(True)
+            wx.TheClipboard.Open()
+            data = wx.CustomDataObject('XRCED')
+            data.SetData(cPickle.dumps(elem))
+            wx.TheClipboard.SetData(data)
+            wx.TheClipboard.Close()
         tree.pendingHighLight = None
         tree.UnselectAll()
         tree.selection = None
@@ -935,7 +949,7 @@ Homepage: http://xrced.sourceforge.net\
         elif evt.GetId() == wxID_SAVE:
             evt.Enable(self.modified)
         elif evt.GetId() in [wxID_PASTE, self.ID_TOOL_PASTE]:
-            evt.Enable((self.clipboard and tree.selection) != None)
+            evt.Enable(tree.selection is not None)
         elif evt.GetId() == self.ID_TEST:
             evt.Enable(tree.selection is not None and tree.selection != tree.root)
         elif evt.GetId() in [self.ID_LOCATE, self.ID_TOOL_LOCATE]:
@@ -995,9 +1009,6 @@ Homepage: http://xrced.sourceforge.net\
 
     def Clear(self):
         self.dataFile = ''
-        if self.clipboard:
-            self.clipboard.unlink()
-            self.clipboard = None
         undoMan.Clear()
         self.SetModified(False)
         tree.Clear()