X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0c7dcb7fd20b96a9ef8059a45a4bafc146644b44..acf4d8587a07e4750fd6217c5a371f1d58194d89:/src/stc/gen_iface.py diff --git a/src/stc/gen_iface.py b/src/stc/gen_iface.py index 293eff48c8..4c7d15bcca 100644 --- a/src/stc/gen_iface.py +++ b/src/stc/gen_iface.py @@ -12,15 +12,15 @@ #---------------------------------------------------------------------------- -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()); + 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, (long)buf); - text.UngetWriteBuf(); + 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); - char* buf = text.GetWriteBuf(len+1); + 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__': #---------------------------------------------------------------------------- -