Added clipboard cut and paste
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12928 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -75,7 +75,6 @@ class wxEditor(wxScrolledWindow):
|
|||||||
self.InitDoubleBuffering()
|
self.InitDoubleBuffering()
|
||||||
self.InitScrolling()
|
self.InitScrolling()
|
||||||
self.SelectOff()
|
self.SelectOff()
|
||||||
self.CopiedData = None
|
|
||||||
self.SetFocus()
|
self.SetFocus()
|
||||||
self.SetText([""])
|
self.SetText([""])
|
||||||
self.SpacesPerTab = 4
|
self.SpacesPerTab = 4
|
||||||
@@ -634,17 +633,21 @@ class wxEditor(wxScrolledWindow):
|
|||||||
self.CopySelection(event)
|
self.CopySelection(event)
|
||||||
self.SelectOff()
|
self.SelectOff()
|
||||||
|
|
||||||
def CopyData(self, data):
|
def CopyToClipboard(self, linesOfText):
|
||||||
self.CopiedData = data
|
do = wxTextDataObject()
|
||||||
|
do.SetText(string.join(linesOfText, os.linesep))
|
||||||
|
wxTheClipboard.Open()
|
||||||
|
wxTheClipboard.SetData(do)
|
||||||
|
wxTheClipboard.Close()
|
||||||
|
|
||||||
def SingleLineCopy(self, Row, bCol, eCol):
|
def SingleLineCopy(self, Row, bCol, eCol):
|
||||||
Line = self.GetTextLine(Row)
|
Line = self.GetTextLine(Row)
|
||||||
self.CopyData([Line[bCol:eCol]])
|
self.CopyToClipboard([Line[bCol:eCol]])
|
||||||
|
|
||||||
def MultipleLineCopy(self, bRow, bCol, eRow, eCol):
|
def MultipleLineCopy(self, bRow, bCol, eRow, eCol):
|
||||||
bLine = self.GetTextLine(bRow)[bCol:]
|
bLine = self.GetTextLine(bRow)[bCol:]
|
||||||
eLine = self.GetTextLine(eRow)[:eCol]
|
eLine = self.GetTextLine(eRow)[:eCol]
|
||||||
self.CopyData([bLine] + [l for l in self.lines[bRow + 1:eRow]] + [eLine])
|
self.CopyToClipboard([bLine] + [l for l in self.lines[bRow + 1:eRow]] + [eLine])
|
||||||
|
|
||||||
def OnDeleteSelection(self, event):
|
def OnDeleteSelection(self, event):
|
||||||
selection = self.FindSelection()
|
selection = self.FindSelection()
|
||||||
@@ -677,16 +680,22 @@ class wxEditor(wxScrolledWindow):
|
|||||||
self.lines[bRow:eRow + 1] = [ModLine]
|
self.lines[bRow:eRow + 1] = [ModLine]
|
||||||
|
|
||||||
def OnPaste(self, event):
|
def OnPaste(self, event):
|
||||||
if self.CopiedData is None:
|
do = wxTextDataObject()
|
||||||
wxBell()
|
wxTheClipboard.Open()
|
||||||
return
|
success = wxTheClipboard.GetData(do)
|
||||||
elif len(self.CopiedData) == 0:
|
wxTheClipboard.Close()
|
||||||
wxBell()
|
if success:
|
||||||
return
|
pastedLines = string.split(do.GetText(), '\n')
|
||||||
elif len(self.CopiedData) == 1:
|
|
||||||
self.SingleLineInsert(self.CopiedData[0])
|
|
||||||
else:
|
else:
|
||||||
self.MultipleLinePaste()
|
wxBell()
|
||||||
|
return
|
||||||
|
if len(pastedLines) == 0:
|
||||||
|
wxBell()
|
||||||
|
return
|
||||||
|
elif len(pastedLines) == 1:
|
||||||
|
self.SingleLineInsert(pastedLines[0])
|
||||||
|
else:
|
||||||
|
self.MultipleLinePaste(pastedLines)
|
||||||
|
|
||||||
def SingleLineInsert(self, newText):
|
def SingleLineInsert(self, newText):
|
||||||
ModLine = self.GetTextLine(self.cy)
|
ModLine = self.GetTextLine(self.cy)
|
||||||
@@ -696,18 +705,18 @@ class wxEditor(wxScrolledWindow):
|
|||||||
self.TouchBuffer()
|
self.TouchBuffer()
|
||||||
self.UpdateView()
|
self.UpdateView()
|
||||||
|
|
||||||
def MultipleLinePaste(self):
|
def MultipleLinePaste(self, pastedLines):
|
||||||
FirstLine = LastLine = self.GetTextLine(self.cy)
|
FirstLine = LastLine = self.GetTextLine(self.cy)
|
||||||
FirstLine = FirstLine[:self.cx] + self.CopiedData[0]
|
FirstLine = FirstLine[:self.cx] + pastedLines[0]
|
||||||
LastLine = self.CopiedData[-1] + LastLine[self.cx:]
|
LastLine = pastedLines[-1] + LastLine[self.cx:]
|
||||||
|
|
||||||
NewSlice = [FirstLine]
|
NewSlice = [FirstLine]
|
||||||
NewSlice += [l for l in self.CopiedData[1:-1]]
|
NewSlice += [l for l in pastedLines[1:-1]]
|
||||||
NewSlice += [LastLine]
|
NewSlice += [LastLine]
|
||||||
self.lines[self.cy:self.cy + 1] = NewSlice
|
self.lines[self.cy:self.cy + 1] = NewSlice
|
||||||
|
|
||||||
self.cy = self.cy + len(self.CopiedData)-1
|
self.cy = self.cy + len(pastedLines)-1
|
||||||
self.cx = len(self.CopiedData[-1])
|
self.cx = len(pastedLines[-1])
|
||||||
self.TouchBuffer()
|
self.TouchBuffer()
|
||||||
self.UpdateView()
|
self.UpdateView()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user