revision 7

Using system clipboard for Copy/Paste


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Roman Rolinsky 2005-11-08 17:01:38 +00:00
parent 8d8d36335c
commit af52e1853c
3 changed files with 28 additions and 12 deletions

View File

@ -1,3 +1,8 @@
0.1.6-7
-------
Using system clipboard for Copy/Paste.
0.1.6-6
-------

View 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:

View 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()