]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/gen_iface.py
make it possible to have empty lines in wxListCtrl
[wxWidgets.git] / src / stc / gen_iface.py
index be86c9ce0e873a5a4d3b15a045c5b3331e5c43a9..4c7d15bcca5b44982c001f0682e805202806a382 100644 (file)
 #----------------------------------------------------------------------------
 
 
-import sys, string, re
+import sys, string, re, os
 from fileinput import FileInput
 
 
-IFACE         = './scintilla/include/Scintilla.iface'
-H_TEMPLATE    = './stc.h.in'
-CPP_TEMPLATE  = './stc.cpp.in'
-H_DEST        = '../../include/wx/stc/stc.h'
-CPP_DEST      = './stc.cpp'
+IFACE         = os.path.abspath('./scintilla/include/Scintilla.iface')
+H_TEMPLATE    = os.path.abspath('./stc.h.in')
+CPP_TEMPLATE  = os.path.abspath('./stc.cpp.in')
+H_DEST        = os.path.abspath('../../include/wx/stc/stc.h')
+CPP_DEST      = os.path.abspath('./stc.cpp')
 
 
 # Value prefixes to convert
@@ -86,9 +86,15 @@ methodOverrideMap = {
 
                        '''wxString %s(int startPos, int endPos) {
                           wxString text;
+                          if (endPos < startPos) {
+                              int temp = startPos;
+                              startPos = endPos;
+                              endPos = temp;
+                          }
                           int len = endPos - startPos;
+                          if (!len) return "";
                           TextRange tr;
-                          tr.lpstrText = text.GetWriteBuf(len*2+1);
+                          tr.lpstrText = text.GetWriteBuf(len*2);
                           tr.chrg.cpMin = startPos;
                           tr.chrg.cpMax = endPos;
                           SendMsg(%s, 0, (long)&tr);
@@ -107,15 +113,20 @@ methodOverrideMap = {
                            0),
 
     'GetCurLine' : (0,
-                    'wxString %s(int* OUTPUT=NULL);',
+                    '#ifdef SWIG\n    wxString %s(int* OUTPUT);\n#else\n    wxString GetCurLine(int* linePos=NULL);\n#endif',
 
                     '''wxString %s(int* linePos) {
                        wxString text;
                        int len = LineLength(GetCurrentLine());
-                       char* buf = text.GetWriteBuf(len);
-
-                       int pos = SendMsg(%s, len, (long)buf);
-                       text.UngetWriteBuf();
+                       if (!len) {
+                           if (linePos)  *linePos = 0;
+                           return "";
+                       }
+                       // Need an extra byte because SCI_GETCURLINE writes a null to the string
+                       char* buf = text.GetWriteBuf(len+1);
+
+                       int pos = SendMsg(%s, len+1, (long)buf);
+                       text.UngetWriteBuf(len);
                        if (linePos)  *linePos = pos;
 
                        return text;''',
@@ -213,6 +224,9 @@ methodOverrideMap = {
     'AutoCGetChooseSingle' : ('AutoCompGetChooseSingle', 0, 0, 0),
     'AutoCSetIgnoreCase' : ('AutoCompSetIgnoreCase', 0, 0, 0),
     'AutoCGetIgnoreCase' : ('AutoCompGetIgnoreCase', 0, 0, 0),
+    'AutoCSetAutoHide' : ('AutoCompSetAutoHide', 0, 0, 0),
+    'AutoCGetAutoHide' : ('AutoCompGetAutoHide', 0, 0, 0),
+
 
     'SetHScrollBar' : ('SetUseHorizontalScrollBar', 0, 0, 0),
     'GetHScrollBar' : ('GetUseHorizontalScrollBar', 0, 0, 0),
@@ -257,6 +271,11 @@ methodOverrideMap = {
                                 wxRect pageRect) {
                             RangeToFormat fr;
 
+                            if (endPos < startPos) {
+                                int temp = startPos;
+                                startPos = endPos;
+                                endPos = temp;
+                            }
                             fr.hdc = draw;
                             fr.hdcTarget = target;
                             fr.rc.top = renderRect.GetTop();
@@ -280,10 +299,11 @@ methodOverrideMap = {
                     '''wxString %s(int line) {
                        wxString text;
                        int len = LineLength(line);
+                       if (!len) return "";
                        char* buf = text.GetWriteBuf(len);
 
                        int pos = SendMsg(%s, line, (long)buf);
-                       text.UngetWriteBuf();
+                       text.UngetWriteBuf(len);
 
                        return text;''',
 
@@ -300,10 +320,11 @@ methodOverrideMap = {
 
                             GetSelection(&start, &end);
                             int   len  = end - start;
-                            char* buff = text.GetWriteBuf(len+1);
+                            if (!len) return "";
+                            char* buff = text.GetWriteBuf(len);
 
                             SendMsg(%s, 0, (long)buff);
-                            text.UngetWriteBuf();
+                            text.UngetWriteBuf(len);
                             return text;''',
 
                     ('Retrieve the selected text.',)),
@@ -313,15 +334,21 @@ methodOverrideMap = {
 
                       '''wxString %s(int startPos, int endPos) {
                             wxString text;
+                            if (endPos < startPos) {
+                                int temp = startPos;
+                                startPos = endPos;
+                                endPos = temp;
+                            }
                             int   len  = endPos - startPos;
-                            char* buff = text.GetWriteBuf(len+1);
+                            if (!len) return "";
+                            char* buff = text.GetWriteBuf(len);
                             TextRange tr;
                             tr.lpstrText = buff;
                             tr.chrg.cpMin = startPos;
                             tr.chrg.cpMax = endPos;
 
                             SendMsg(%s, 0, (long)&tr);
-                            text.UngetWriteBuf();
+                            text.UngetWriteBuf(len);
                             return text;''',
 
                        ('Retrieve a range of text.',)),
@@ -338,12 +365,11 @@ methodOverrideMap = {
 
                  '''wxString %s() {
                         wxString text;
-                        int   len  = GetTextLength()+1;
-                        char* buff = text.GetWriteBuf(len+1);
+                        int   len  = GetTextLength();
+                        char* buff = text.GetWriteBuf(len+1);  // leave room for the null...
 
-                        SendMsg(%s, len, (long)buff);
-                        buff[len] = 0;
-                        text.UngetWriteBuf();
+                        SendMsg(%s, len+1, (long)buff);
+                        text.UngetWriteBuf(len);
                         return text;''',
 
                  ('Retrieve all the text in the document.', )),
@@ -356,6 +382,38 @@ methodOverrideMap = {
     'CallTipSetBack' : ('CallTipSetBackground', 0, 0, 0),
 
 
+    'ReplaceTarget' : (0,
+                       'int %s(const wxString& text);',
+
+                       '''
+                       int %s(const wxString& text) {
+                           return SendMsg(%s, text.Len(), (long)text.c_str());
+                       ''',
+
+                       0),
+
+    'ReplaceTargetRE' : (0,
+                       'int %s(const wxString& text);',
+
+                       '''
+                       int %s(const wxString& text) {
+                           return SendMsg(%s, text.Len(), (long)text.c_str());
+                       ''',
+
+                       0),
+
+    'SearchInTarget' : (0,
+                       'int %s(const wxString& text);',
+
+                       '''
+                       int %s(const wxString& text) {
+                           return SendMsg(%s, text.Len(), (long)text.c_str());
+                       ''',
+
+                       0),
+
+
+
     # Remove all methods that are key commands since they can be
     # executed with CmdKeyExecute
     'LineDown' : (None, 0, 0, 0),
@@ -413,7 +471,7 @@ methodOverrideMap = {
     'SetDocPointer' : (0,
                        'void %s(void* docPointer);',
                        '''void %s(void* docPointer) {
-                           SendMsg(%s, (long)docPointer);''',
+                           SendMsg(%s, 0, (long)docPointer);''',
                        0),
 
     'CreateDocument' : (0,
@@ -435,6 +493,9 @@ methodOverrideMap = {
                          0),
 
     'GrabFocus' : (None, 0, 0, 0),
+    'SetFocus'  : ('SetSTCFocus', 0, 0, 0),
+    'GetFocus'  : ('GetSTCFocus', 0, 0, 0),
+
 
     '' : ('', 0, 0, 0),
 
@@ -681,4 +742,3 @@ if __name__ == '__main__':
 
 #----------------------------------------------------------------------------
 
-