X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9968ba85be146ad4f282cfdc6ce72b68897fbb10..f94dd12dc18afd8518a88e9edac75f6dff907c9c:/wxPython/demo/wxStyledTextCtrl_1.py diff --git a/wxPython/demo/wxStyledTextCtrl_1.py b/wxPython/demo/wxStyledTextCtrl_1.py index e3421d4727..ed9a403f72 100644 --- a/wxPython/demo/wxStyledTextCtrl_1.py +++ b/wxPython/demo/wxStyledTextCtrl_1.py @@ -4,6 +4,9 @@ from wxPython.stc import * #---------------------------------------------------------------------- +debug = 1 + + demoText = """\ This editor is provided by a class named wxStyledTextCtrl. As @@ -52,9 +55,48 @@ class MySTC(wxStyledTextCtrl): wxStyledTextCtrl.__init__(self, parent, ID) self.log = log + EVT_STC_DO_DROP(self, ID, self.OnDoDrop) + EVT_STC_DRAG_OVER(self, ID, self.OnDragOver) + EVT_STC_START_DRAG(self, ID, self.OnStartDrag) EVT_STC_MODIFIED(self, ID, self.OnModified) + def OnStartDrag(self, evt): + self.log.write("OnStartDrag: %d, %s\n" + % (evt.GetDragAllowMove(), evt.GetDragText())) + + if debug and evt.GetPosition() < 250: + evt.SetDragAllowMove(false) # you can prevent moving of text (only copy) + evt.SetDragText("DRAGGED TEXT") # you can change what is dragged + #evt.SetDragText("") # or prevent the drag with empty text + + + def OnDragOver(self, evt): + self.log.write("OnDragOver: x,y=(%d, %d) pos: %d DragResult: %d\n" + % (evt.GetX(), evt.GetY(), evt.GetPosition(), evt.GetDragResult())) + + if debug and evt.GetPosition() < 250: + evt.SetDragResult(wxDragNone) # prevent dropping at the begining of the buffer + + + def OnDoDrop(self, evt): + self.log.write("OnDoDrop: x,y=(%d, %d) pos: %d DragResult: %d\n" + "\ttext: %s\n" + % (evt.GetX(), evt.GetY(), evt.GetPosition(), evt.GetDragResult(), + evt.GetDragText())) + + if debug and evt.GetPosition() < 500: + evt.SetDragText("DROPPED TEXT") # Can change text if needed + ##evt.SetDragResult(wxDragNone) # Can also change the drag operation, but it + # is probably better to do it in OnDragOver so + # there is visual feedback + + ##evt.SetPosition(25) # Can also change position, but I'm not sure why + # you would want to... + + + + def OnModified(self, evt): self.log.write("""OnModified Mod type: %s @@ -65,7 +107,8 @@ class MySTC(wxStyledTextCtrl): evt.GetPosition(), evt.GetLinesAdded(), evt.GetLength(), - evt.GetText() )) + repr(evt.GetText()) )) + def transModType(self, modType): st = "" @@ -93,6 +136,7 @@ class MySTC(wxStyledTextCtrl): + #---------------------------------------------------------------------- _USE_PANEL = 1 @@ -109,7 +153,23 @@ def runTest(frame, nb, log): p.SetSizer(s) p.SetAutoLayout(true) + +## ed.SetBufferedDraw(false) +## ed.StyleClearAll() ed.SetText(demoText) + if wxUSE_UNICODE: + import codecs + decode = codecs.lookup("utf-8")[1] + + ed.GotoPos(ed.GetLength()) + ed.AddText("\n\nwxStyledTextCtrl can also do Unicode:\n") + unitext, l = decode('\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd - ' + '\xd0\xbb\xd1\x83\xd1\x87\xd1\x88\xd0\xb8\xd0\xb9 ' + '\xd1\x8f\xd0\xb7\xd1\x8b\xd0\xba \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f!\n\n') + ed.AddText('\tRussian: ') + ed.AddText(unitext) + ed.GotoPos(0) + ed.EmptyUndoBuffer() # make some styles @@ -119,8 +179,7 @@ def runTest(frame, nb, log): ed.StyleSetSpec(3, "face:%s,bold,size:%d" % (face2, pb+2)) ed.StyleSetSpec(4, "face:%s,size:%d" % (face1, pb-1)) - - # now set some text to those styles... Normally this would be + # Now set some text to those styles... Normally this would be # done in an event handler that happens when text needs displayed. ed.StartStyling(98, 0xff) ed.SetStyling(6, 1) # set style for 6 characters using style 1 @@ -167,8 +226,9 @@ def runTest(frame, nb, log): ed.SetStyling(10, wxSTC_INDIC1_MASK) ed.SetStyling(10, wxSTC_INDIC2_MASK | wxSTC_INDIC1_MASK) + # some test stuff... - if 1: + if debug: print "GetTextLength(): ", ed.GetTextLength(), len(ed.GetText()) print "GetText(): ", repr(ed.GetText()) print