X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/591e2d8ef96e3890801dd4ed99fc974c7614a7e8..d67fc8b73514909eb198223333e11be4d900f431:/src/stc/gen_iface.py?ds=sidebyside diff --git a/src/stc/gen_iface.py b/src/stc/gen_iface.py index bde1a8447d..8fddb97722 100755 --- a/src/stc/gen_iface.py +++ b/src/stc/gen_iface.py @@ -21,7 +21,10 @@ 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') -DOCSTR_DEST = os.path.abspath('../../../wxPython/contrib/stc/_stc_gendocs.i') +if len(sys.argv) > 1 and sys.argv[1] == '--wxpython': + DOCSTR_DEST = os.path.abspath('../../../wxPython/src/_stc_gendocs.i') +else: + DOCSTR_DEST = '/dev/null' # Value prefixes to convert @@ -29,6 +32,7 @@ valPrefixes = [('SCI_', ''), ('SC_', ''), ('SCN_', None), # just toss these out... ('SCEN_', None), + ('SC_EFF', None), ('SCE_', ''), ('SCLEX_', 'LEX_'), ('SCK_', 'KEY_'), @@ -52,7 +56,7 @@ cmdValues = [ 2011, # Should a funciton be also generated for the CMDs? -FUNC_FOR_CMD = True +FUNC_FOR_CMD = 1 # Map some generic typenames to wx types, using return value syntax @@ -85,14 +89,14 @@ methodOverrideMap = { '''void %s(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - SendMsg(%s, strlen(buf), (long)(const char*)buf);''', + SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', 0), 'AddStyledText' : (0, 'void %s(const wxMemoryBuffer& data);', '''void %s(const wxMemoryBuffer& data) { - SendMsg(%s, data.GetDataLen(), (long)data.GetData());''', + SendMsg(%s, data.GetDataLen(), (sptr_t)data.GetData());''', 0), 'AppendText' : (0, @@ -100,7 +104,7 @@ methodOverrideMap = { '''void %s(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - SendMsg(%s, strlen(buf), (long)(const char*)buf);''', + SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', 0), 'GetViewWS' : ( 'GetViewWhiteSpace', 0, 0, 0), @@ -135,7 +139,7 @@ methodOverrideMap = { tr.lpstrText = (char*)buf.GetWriteBuf(len*2+1); tr.chrg.cpMin = startPos; tr.chrg.cpMax = endPos; - len = SendMsg(%s, 0, (long)&tr); + len = SendMsg(%s, 0, (sptr_t)&tr); buf.UngetWriteBuf(len); return buf;''', @@ -144,9 +148,9 @@ methodOverrideMap = { 'PositionFromPoint' : (0, - 'int %s(wxPoint pt);', + 'int %s(wxPoint pt) const;', - '''int %s(wxPoint pt) { + '''int %s(wxPoint pt) const { return SendMsg(%s, pt.x, pt.y);''', 0), @@ -164,7 +168,7 @@ methodOverrideMap = { wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - int pos = SendMsg(%s, len+1, (long)buf); + int pos = SendMsg(%s, len+1, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); if (linePos) *linePos = pos; @@ -177,6 +181,8 @@ methodOverrideMap = { 'MarkerSetFore' : ('MarkerSetForeground', 0, 0, 0), 'MarkerSetBack' : ('MarkerSetBackground', 0, 0, 0), + 'MarkerSymbolDefined' : ('GetMarkerSymbolDefined', 0, 0, 0), + 'MarkerDefine' : (0, '''void %s(int markerNumber, int markerSymbol, @@ -211,7 +217,7 @@ methodOverrideMap = { char* buff = new char[len+1]; strm.CopyTo(buff, len); buff[len] = 0; - SendMsg(%s, markerNumber, (long)buff); + SendMsg(%s, markerNumber, (sptr_t)buff); delete [] buff; ''', ('Define a marker from a bitmap',)), @@ -226,6 +232,74 @@ methodOverrideMap = { 'SetMarginSensitiveN' : ('SetMarginSensitive', 0, 0, 0), 'GetMarginSensitiveN' : ('GetMarginSensitive', 0, 0, 0), + 'MarginGetText' : + (0, + 'wxString %s(int line) const;', + + '''wxString %s(int line) const { + long msg = %s; + long len = SendMsg(msg, line, 0); + + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len+1); + SendMsg(msg, line, (sptr_t)buf); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', + 0), + + 'MarginGetStyles' : + (0, + 'wxString %s(int line) const;', + + '''wxString %s(int line) const { + long msg = %s; + long len = SendMsg(msg, line, 0); + + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len+1); + SendMsg(msg, line, (sptr_t)buf); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', + 0), + + 'SetAdditionalSelFore' : ('SetAdditionalSelForeground', 0, 0, 0), + 'SetAdditionalSelBack' : ('SetAdditionalSelBackground', 0, 0, 0), + 'SetAdditionalCaretFore' : ('SetAdditionalCaretForeground', 0, 0, 0), + 'GetAdditionalCaretFore' : ('GetAdditionalCaretForeground', 0, 0, 0), + + 'AnnotationGetText' : + (0, + 'wxString %s(int line) const;', + + '''wxString %s(int line) const { + long msg = %s; + long len = SendMsg(msg, line, 0); + + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len+1); + SendMsg(msg, line, (sptr_t)buf); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', + 0), + + 'AnnotationGetStyles' : + (0, + 'wxString %s(int line) const;', + + '''wxString %s(int line) const { + long msg = %s; + long len = SendMsg(msg, line, 0); + + wxMemoryBuffer mbuf(len+1); + char* buf = (char*)mbuf.GetWriteBuf(len+1); + SendMsg(msg, line, (sptr_t)buf); + mbuf.UngetWriteBuf(len); + mbuf.AppendByte(0); + return stc2wx(buf);''', + 0), 'StyleGetFore' : ('StyleGetForeground', 0, 0, 0), 'StyleGetBack' : ('StyleGetBackground', 0, 0, 0), @@ -242,7 +316,7 @@ methodOverrideMap = { long len = SendMsg(msg, style, 0); wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(msg, style, (long)buf); + SendMsg(msg, style, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf);''', @@ -275,10 +349,12 @@ methodOverrideMap = { 'void %s(int length, char* styleBytes);', '''void %s(int length, char* styleBytes) { - SendMsg(%s, length, (long)styleBytes);''', + SendMsg(%s, length, (sptr_t)styleBytes);''', 0), + 'IndicSetAlpha' : ('IndicatorSetAlpha', 0, 0, 0), + 'IndicGetAlpha' : ('IndicatorGetAlpha', 0, 0, 0), 'IndicSetStyle' : ('IndicatorSetStyle', 0, 0, 0), 'IndicGetStyle' : ('IndicatorGetStyle', 0, 0, 0), 'IndicSetFore' : ('IndicatorSetForeground', 0, 0, 0), @@ -312,6 +388,7 @@ methodOverrideMap = { 'AutoCGetTypeSeparator' : ('AutoCompGetTypeSeparator', 0, 0, 0), 'AutoCSetTypeSeparator' : ('AutoCompSetTypeSeparator', 0, 0, 0), 'AutoCGetCurrent' : ('AutoCompGetCurrent', 0, 0, 0), + 'AutoCGetCurrentText' : (None, 0, 0, 0), 'AutoCSetMaxWidth' : ('AutoCompSetMaxWidth', 0, 0, 0), 'AutoCGetMaxWidth' : ('AutoCompGetMaxWidth', 0, 0, 0), 'AutoCSetMaxHeight' : ('AutoCompSetMaxHeight', 0, 0, 0), @@ -332,7 +409,7 @@ methodOverrideMap = { char* buff = new char[len+1]; strm.CopyTo(buff, len); buff[len] = 0; - SendMsg(%s, type, (long)buff); + SendMsg(%s, type, (sptr_t)buff); delete [] buff; ''', ('Register an image for use in autocompletion lists.',)), @@ -365,7 +442,7 @@ methodOverrideMap = { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); ft.lpstrText = (char*)(const char*)buf; - return SendMsg(%s, flags, (long)&ft);''', + return SendMsg(%s, flags, (sptr_t)&ft);''', 0), 'FormatRange' : @@ -404,36 +481,36 @@ methodOverrideMap = { fr.chrg.cpMin = startPos; fr.chrg.cpMax = endPos; - return SendMsg(%s, doDraw, (long)&fr);''', + return SendMsg(%s, doDraw, (sptr_t)&fr);''', 0), 'GetLine' : (0, - 'wxString %s(int line);', + 'wxString %s(int line) const;', - '''wxString %s(int line) { + '''wxString %s(int line) const { int len = LineLength(line); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(%s, line, (long)buf); + SendMsg(%s, line, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf);''', ('Retrieve the contents of a line.',)), - 'SetSel' : ('SetSelection', 0, 0, 0), + 'SetSel' : (None, 0,0,0), #'SetSelection', 0, 0, 0), 'GetSelText' : ('GetSelectedText', 'wxString %s();', '''wxString %s() { - int start; - int end; + long start; + long end; GetSelection(&start, &end); int len = end - start; @@ -441,7 +518,7 @@ methodOverrideMap = { wxMemoryBuffer mbuf(len+2); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(%s, 0, (long)buf); + SendMsg(%s, 0, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf);''', @@ -467,7 +544,7 @@ methodOverrideMap = { tr.lpstrText = buf; tr.chrg.cpMin = startPos; tr.chrg.cpMax = endPos; - SendMsg(%s, 0, (long)&tr); + SendMsg(%s, 0, (sptr_t)&tr); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf);''', @@ -483,13 +560,13 @@ methodOverrideMap = { 'GetText' : (0, - 'wxString %s();', + 'wxString %s() const;', - '''wxString %s() { + '''wxString %s() const { 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); + SendMsg(%s, len+1, (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf);''', @@ -520,7 +597,7 @@ methodOverrideMap = { ''' int %s(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(%s, strlen(buf), (long)(const char*)buf);''', + return SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', 0), 'ReplaceTargetRE' : @@ -530,7 +607,7 @@ methodOverrideMap = { ''' int %s(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(%s, strlen(buf), (long)(const char*)buf);''', + return SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', 0), 'SearchInTarget' : @@ -540,7 +617,7 @@ methodOverrideMap = { ''' int %s(const wxString& text) { wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(%s, strlen(buf), (long)(const char*)buf);''', + return SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', 0), # not sure what to do about these yet @@ -554,12 +631,12 @@ methodOverrideMap = { 'wxString %s(const wxString& key);', '''wxString %s(const wxString& key) { - int len = SendMsg(SCI_GETPROPERTY, (long)(const char*)wx2stc(key), 0); + int len = SendMsg(SCI_GETPROPERTY, (sptr_t)(const char*)wx2stc(key), 0); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(%s, (long)(const char*)wx2stc(key), (long)buf); + SendMsg(%s, (uptr_t)(const char*)wx2stc(key), (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf);''', @@ -570,12 +647,12 @@ methodOverrideMap = { 'wxString %s(const wxString& key);', '''wxString %s(const wxString& key) { - int len = SendMsg(SCI_GETPROPERTYEXPANDED, (long)(const char*)wx2stc(key), 0); + int len = SendMsg(SCI_GETPROPERTYEXPANDED, (uptr_t)(const char*)wx2stc(key), 0); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+1); char* buf = (char*)mbuf.GetWriteBuf(len+1); - SendMsg(%s, (long)(const char*)wx2stc(key), (long)buf); + SendMsg(%s, (uptr_t)(const char*)wx2stc(key), (sptr_t)buf); mbuf.UngetWriteBuf(len); mbuf.AppendByte(0); return stc2wx(buf);''', @@ -598,7 +675,7 @@ methodOverrideMap = { (0, 'void %s(void* docPointer);', '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', + SendMsg(%s, 0, (sptr_t)docPointer);''', 0), 'CreateDocument' : @@ -612,14 +689,14 @@ methodOverrideMap = { (0, 'void %s(void* docPointer);', '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', + SendMsg(%s, 0, (sptr_t)docPointer);''', 0), 'ReleaseDocument' : (0, 'void %s(void* docPointer);', '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', + SendMsg(%s, 0, (sptr_t)docPointer);''', 0), 'SetCodePage' : @@ -650,11 +727,35 @@ methodOverrideMap = { 'SetPositionCache' : ('SetPositionCacheSize', 0, 0, 0), 'GetPositionCache' : ('GetPositionCacheSize', 0, 0, 0), + 'GetLexerLanguage' : (None, 0, 0, 0), + 'SetFontQuality' : (None, 0, 0, 0), + 'GetFontQuality' : (None, 0, 0, 0), + 'SetSelection' : (None, 0, 0, 0), + + 'GetCharacterPointer' : (0, + 'const char* %s();', + 'const char* %s() {\n' + ' return (const char*)SendMsg(%s, 0, 0);', + 0), + '' : ('', 0, 0, 0), } +# all Scintilla getters are transformed into const member of wxSTC class but +# some non-getter methods are also logically const and this set contains their +# names (notice that it's useless to include here methods manually overridden +# above) +constNonGetterMethods = ( + 'LineFromPosition', + 'PositionFromLine', + 'LineLength', + 'CanPaste', + 'CanRedo', + 'CanUndo', +) + #---------------------------------------------------------------------------- def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest): @@ -723,6 +824,9 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest): +def joinWithNewLines(values): + return string.join(values, '\n') + #---------------------------------------------------------------------------- def processVals(values): @@ -733,7 +837,7 @@ def processVals(values): for x in docs: text.append('// ' + x) text.append('#define %s %s' % (name, value)) - return string.join(text, '\n') + return joinWithNewLines(text) #---------------------------------------------------------------------------- @@ -753,7 +857,7 @@ def processMethods(methods): # Build docstrings st = 'DocStr(wxStyledTextCtrl::%s,\n' \ - '"%s", "");\n' % (name, '\n'.join(docs)) + '"%s", "");\n' % (name, joinWithNewLines(docs)) dstr.append(st) # Build the method definition for the .h file @@ -794,7 +898,7 @@ def processMethods(methods): imps.append(theImp) - return '\n'.join(defs), '\n'.join(imps), '\n'.join(dstr) + return joinWithNewLines(defs), joinWithNewLines(imps), joinWithNewLines(dstr) #---------------------------------------------------------------------------- @@ -828,7 +932,7 @@ def makeArgString(param): typ, name = param if typ == 'string': - return '(long)(const char*)wx2stc(%s)' % name + return '(sptr_t)(const char*)wx2stc(%s)' % name if typ == 'colour': return 'wxColourAsLong(%s)' % name @@ -873,7 +977,7 @@ funregex = re.compile(r'\s*([a-zA-Z0-9_]+)' # return type '\s+([a-zA-Z0-9_]+)=' # name= '([0-9]+)' # number '\(([ a-zA-Z0-9_]*),' # (param, - '([ a-zA-Z0-9_]*)\)') # param) + '([ a-zA-Z0-9_]*),*\)') # param) def parseFun(line, methods, docs, values, is_const): def parseParam(param): @@ -904,7 +1008,8 @@ def parseFun(line, methods, docs, values, is_const): if not FUNC_FOR_CMD: return - methods.append( (retType, name, number, param1, param2, tuple(docs), is_const) ) + methods.append( (retType, name, number, param1, param2, tuple(docs), + is_const or name in constNonGetterMethods) ) #----------------------------------------------------------------------------