]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/wxStyledTextCtrl_1.py
checked in forgottern parts of MSLU changes
[wxWidgets.git] / wxPython / demo / wxStyledTextCtrl_1.py
index eb55ea356c44625914f45efaa0e88114ac2f812a..c641f2d9fa9c37835b23a3452e20565dec33e5be 100644 (file)
@@ -4,6 +4,9 @@ from wxPython.stc import *
 
 #----------------------------------------------------------------------
 
+debug = 1
+
+
 demoText = """\
 
 This editor is provided by a class named wxStyledTextCtrl.  As
@@ -36,7 +39,7 @@ if wxPlatform == '__WXMSW__':
     face1 = 'Arial'
     face2 = 'Times New Roman'
     face3 = 'Courier New'
-    pb = 6
+    pb = 10
 else:
     face1 = 'Helvetica'
     face2 = 'Times'
@@ -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
@@ -67,6 +109,7 @@ class MySTC(wxStyledTextCtrl):
                                   evt.GetLength(),
                                   evt.GetText() ))
 
+
     def transModType(self, modType):
         st = ""
         table = [(wxSTC_MOD_INSERTTEXT, "InsertText"),
@@ -93,6 +136,7 @@ class MySTC(wxStyledTextCtrl):
 
 
 
+
 #----------------------------------------------------------------------
 
 _USE_PANEL = 1
@@ -113,11 +157,11 @@ def runTest(frame, nb, log):
     ed.EmptyUndoBuffer()
 
     # make some styles
-    ed.StyleSetSpec(wxSTC_STYLE_DEFAULT, "size:%d,face:%s" % (pb+2, face3))
-    ed.StyleSetSpec(1, "size:%d,bold,face:%s,fore:#0000FF" % (pb+3, face1))
-    ed.StyleSetSpec(2, "face:%s,italic,fore:#FF0000,size:%d" % (face2, pb+2))
-    ed.StyleSetSpec(3, "face:%s,bold,size:%d" % (face2, pb+3))
-    ed.StyleSetSpec(4, "face:%s,size:%d" % (face1, pb))
+    ed.StyleSetSpec(wxSTC_STYLE_DEFAULT, "size:%d,face:%s" % (pb, face3))
+    ed.StyleSetSpec(1, "size:%d,bold,face:%s,fore:#0000FF" % (pb+2, face1))
+    ed.StyleSetSpec(2, "face:%s,italic,fore:#FF0000,size:%d" % (face2, pb))
+    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
@@ -168,13 +212,15 @@ def runTest(frame, nb, log):
     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
         print "GetStyledText(98, 104): ", repr(ed.GetStyledText(98, 104)), len(ed.GetStyledText(98, 104))
         print
         print "GetCurLine(): ", repr(ed.GetCurLine())
+        ed.GotoPos(5)
+        print "GetCurLine(): ", repr(ed.GetCurLine())
         print
         print "GetLine(1): ", repr(ed.GetLine(1))
         print
@@ -182,6 +228,7 @@ def runTest(frame, nb, log):
         print "GetSelectedText(): ", repr(ed.GetSelectedText())
         print "GetTextRange(25, 35): ", repr(ed.GetTextRange(25, 35))
 
+
         ed.GotoPos(0)
 
     return p
@@ -193,7 +240,7 @@ def runTest(frame, nb, log):
 
 overview = """\
 <html><body>
-Once again, no docs yet.  <b>Sorry.</b>  But <a href="data/stc.h">this</a>
+Once again, no docs yet.  <b>Sorry.</b>  But <a href="data/stc.h.html">this</a>
 and <a href="http://www.scintilla.org/ScintillaDoc.html">this</a> should
 be helpful.
 </body><html>