X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e1a93f46d5d7851a90764844059b286ca738dcd6..0256cfeb6db72fb570ff043a2cdd214128b3ea2d:/src/stc/gen_iface.py diff --git a/src/stc/gen_iface.py b/src/stc/gen_iface.py index 4c7d15bcca..95c039f7a6 100644 --- a/src/stc/gen_iface.py +++ b/src/stc/gen_iface.py @@ -68,38 +68,49 @@ methodOverrideMap = { 'void %s(const wxString& text);', '''void %s(const wxString& text) { - SendMsg(%s, text.Len(), (long)text.c_str());''', + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); + SendMsg(%s, strlen(buf), (long)(const char*)buf);''', 0), 'AddStyledText' : (0, - 'void %s(const wxString& text);', + 'void %s(const wxMemoryBuffer& data);', - '''void %s(const wxString& text) { - SendMsg(%s, text.Len(), (long)text.c_str());''', + '''void %s(const wxMemoryBuffer& data) { + SendMsg(%s, data.GetDataLen(), (long)data.GetData());''', 0), 'GetViewWS' : ( 'GetViewWhiteSpace', 0, 0, 0), 'SetViewWS' : ( 'SetViewWhiteSpace', 0, 0, 0), + 'GetCharAt' : ( 0, 0, + '''int %s(int pos) { + return (unsigned char)SendMsg(%s, pos, 0);''', + 0), + + 'GetStyleAt' : ( 0, 0, + '''int %s(int pos) { + return (unsigned char)SendMsg(%s, pos, 0);''', + 0), + 'GetStyledText' : (0, - 'wxString %s(int startPos, int endPos);', + 'wxMemoryBuffer %s(int startPos, int endPos);', - '''wxString %s(int startPos, int endPos) { - wxString text; + '''wxMemoryBuffer %s(int startPos, int endPos) { + wxMemoryBuffer buf; if (endPos < startPos) { int temp = startPos; startPos = endPos; endPos = temp; } int len = endPos - startPos; - if (!len) return ""; + if (!len) return buf; TextRange tr; - tr.lpstrText = text.GetWriteBuf(len*2); + tr.lpstrText = (char*)buf.GetWriteBuf(len*2+1); tr.chrg.cpMin = startPos; tr.chrg.cpMax = endPos; - SendMsg(%s, 0, (long)&tr); - text.UngetWriteBuf(len*2); - return text;''', + len = SendMsg(%s, 0, (long)&tr); + buf.UngetWriteBuf(len); + return buf;''', ('Retrieve a buffer of cells.',)), @@ -116,20 +127,20 @@ methodOverrideMap = { '#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 ""; + return wxEmptyString; } - // Need an extra byte because SCI_GETCURLINE writes a null to the string - char* buf = text.GetWriteBuf(len+1); + + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len+1); int pos = SendMsg(%s, len+1, (long)buf); - text.UngetWriteBuf(len); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); if (linePos) *linePos = pos; - - return text;''', + return stc2wx(buf);''', 0), @@ -154,7 +165,7 @@ methodOverrideMap = { MarkerSetBackground(markerNumber, background);''', ('Set the symbol used for a particular marker number,', - 'and optionally the for and background colours.')), + 'and optionally the fore and background colours.')), 'SetMarginTypeN' : ('SetMarginType', 0, 0, 0), 'GetMarginTypeN' : ('GetMarginType', 0, 0, 0), @@ -172,9 +183,6 @@ methodOverrideMap = { 'SetCaretFore' : ('SetCaretForeground', 0, 0, 0), 'StyleSetFont' : ('StyleSetFaceName', 0, 0, 0), - # need to fix this to map between wx and scintilla encoding flags, leave it out for now... - 'StyleSetCharacterSet' : (None, 0, 0, 0), - 'AssignCmdKey' : ('CmdKeyAssign', 'void %s(int key, int modifiers, int cmd);', @@ -226,6 +234,8 @@ methodOverrideMap = { 'AutoCGetIgnoreCase' : ('AutoCompGetIgnoreCase', 0, 0, 0), 'AutoCSetAutoHide' : ('AutoCompSetAutoHide', 0, 0, 0), 'AutoCGetAutoHide' : ('AutoCompGetAutoHide', 0, 0, 0), + 'AutoCSetDropRestOfWord' : ('AutoCompSetDropRestOfWord', 0,0,0), + 'AutoCGetDropRestOfWord' : ('AutoCompGetDropRestOfWord', 0,0,0), 'SetHScrollBar' : ('SetUseHorizontalScrollBar', 0, 0, 0), @@ -236,20 +246,16 @@ methodOverrideMap = { 'GetUsePalette' : (None, 0, 0, 0), 'FindText' : (0, + '''int %s(int minPos, int maxPos, const wxString& text, int flags=0);''', + '''int %s(int minPos, int maxPos, - const wxString& text, - bool caseSensitive, bool wholeWord);''', - '''int %s(int minPos, int maxPos, - const wxString& text, - bool caseSensitive, bool wholeWord) { + const wxString& text, + int flags) { TextToFind ft; - int flags = 0; - - flags |= caseSensitive ? SCFIND_MATCHCASE : 0; - flags |= wholeWord ? SCFIND_WHOLEWORD : 0; ft.chrg.cpMin = minPos; ft.chrg.cpMax = maxPos; - ft.lpstrText = (char*)text.c_str(); + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); + ft.lpstrText = (char*)(const char*)buf; return SendMsg(%s, flags, (long)&ft);''', 0), @@ -297,15 +303,15 @@ methodOverrideMap = { 'wxString %s(int line);', '''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(len); + if (!len) return wxEmptyString; - return text;''', + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len+1); + SendMsg(%s, line, (long)buf); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', ('Retrieve the contents of a line.',)), @@ -314,18 +320,19 @@ methodOverrideMap = { 'wxString %s();', '''wxString %s() { - wxString text; int start; int end; GetSelection(&start, &end); int len = end - start; - if (!len) return ""; - char* buff = text.GetWriteBuf(len); + if (!len) return wxEmptyString; - SendMsg(%s, 0, (long)buff); - text.UngetWriteBuf(len); - return text;''', + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len+1); + SendMsg(%s, 0, (long)buf); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', ('Retrieve the selected text.',)), @@ -333,23 +340,23 @@ methodOverrideMap = { 'wxString %s(int startPos, int endPos);', '''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 ""; - char* buff = text.GetWriteBuf(len); + if (!len) return wxEmptyString; + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len); TextRange tr; - tr.lpstrText = buff; + tr.lpstrText = buf; tr.chrg.cpMin = startPos; tr.chrg.cpMax = endPos; - SendMsg(%s, 0, (long)&tr); - text.UngetWriteBuf(len); - return text;''', + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', ('Retrieve a range of text.',)), @@ -364,13 +371,13 @@ methodOverrideMap = { 'wxString %s();', '''wxString %s() { - wxString text; - int len = GetTextLength(); - char* buff = text.GetWriteBuf(len+1); // leave room for the null... - - SendMsg(%s, len+1, (long)buff); - text.UngetWriteBuf(len); - return text;''', + int len = GetTextLength(); + wxMemoryBuffer mbuf(len+1); // leave room for the null... + char* buf = (char*)mbuf.GetWriteBuf(len+1); + SendMsg(%s, len+1, (long)buf); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', ('Retrieve all the text in the document.', )), @@ -387,9 +394,8 @@ methodOverrideMap = { ''' int %s(const wxString& text) { - return SendMsg(%s, text.Len(), (long)text.c_str()); - ''', - + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); + return SendMsg(%s, strlen(buf), (long)(const char*)buf);''', 0), 'ReplaceTargetRE' : (0, @@ -397,9 +403,8 @@ methodOverrideMap = { ''' int %s(const wxString& text) { - return SendMsg(%s, text.Len(), (long)text.c_str()); - ''', - + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); + return SendMsg(%s, strlen(buf), (long)(const char*)buf);''', 0), 'SearchInTarget' : (0, @@ -407,9 +412,8 @@ methodOverrideMap = { ''' int %s(const wxString& text) { - return SendMsg(%s, text.Len(), (long)text.c_str()); - ''', - + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); + return SendMsg(%s, strlen(buf), (long)(const char*)buf);''', 0), @@ -460,6 +464,7 @@ methodOverrideMap = { 'UpperCase' : (None, 0, 0, 0), 'LineScrollDown' : (None, 0, 0, 0), 'LineScrollUp' : (None, 0, 0, 0), + 'DeleteBackNotLine' : (None, 0, 0, 0), 'GetDocPointer' : (0, @@ -491,6 +496,19 @@ methodOverrideMap = { '''void %s(void* docPointer) { SendMsg(%s, (long)docPointer);''', 0), + 'SetCodePage' : (0, + 0, + '''void %s(int codePage) { +#if wxUSE_UNICODE + wxASSERT_MSG(codePage == wxSTC_CP_UTF8, + wxT("Only wxSTC_CP_UTF8 may be used when wxUSE_UNICODE is on.")); +#else + wxASSERT_MSG(codePage != wxSTC_CP_UTF8, + wxT("wxSTC_CP_UTF8 may not be used when wxUSE_UNICODE is off.")); +#endif + SendMsg(%s, codePage);''', + ("Set the code page used to interpret the bytes of the document as characters.",) ), + 'GrabFocus' : (None, 0, 0, 0), 'SetFocus' : ('SetSTCFocus', 0, 0, 0), @@ -630,14 +648,18 @@ def checkMethodOverride(name, number, docs): if methodOverrideMap.has_key(name): item = methodOverrideMap[name] - if item[0] != 0: - name = item[0] - if item[1] != 0: - theDef = ' ' + (item[1] % name) - if item[2] != 0: - theImp = item[2] % ('wxStyledTextCtrl::'+name, number) + '\n}' - if item[3] != 0: - docs = item[3] + try: + if item[0] != 0: + name = item[0] + if item[1] != 0: + theDef = ' ' + (item[1] % name) + if item[2] != 0: + theImp = item[2] % ('wxStyledTextCtrl::'+name, number) + '\n}' + if item[3] != 0: + docs = item[3] + except: + print "*************", name + raise return name, theDef, theImp, docs @@ -650,7 +672,7 @@ def makeArgString(param): typ, name = param if typ == 'string': - return '(long)%s.c_str()' % name + return '(long)(const char*)wx2stc(%s)' % name if typ == 'colour': return 'wxColourAsLong(%s)' % name @@ -719,7 +741,7 @@ def parseFun(line, methods, docs, values): num = string.atoi(number) for v in cmdValues: if (type(v) == type(()) and v[0] <= num < v[1]) or v == num: - parseVal('CMD_%s=%s' % (string.upper(name), number), values, ()) + parseVal('CMD_%s=%s' % (string.upper(name), number), values, docs) #if retType == 'void' and not param1 and not param2: