X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b796ba39311830b11e375de10ca2378f501c5b8c..58cab5e2434b122c41c2ecbfc6118e4eb2621805:/src/stc/gen_iface.py?ds=sidebyside diff --git a/src/stc/gen_iface.py b/src/stc/gen_iface.py index 8dda03017d..831cf85fe4 100755 --- a/src/stc/gen_iface.py +++ b/src/stc/gen_iface.py @@ -8,7 +8,7 @@ # Created: 5-Sept-2000 # RCS-ID: $Id$ # Copyright: (c) 2000 by Total Control Software -# Licence: wxWindows license +# Licence: wxWindows licence #---------------------------------------------------------------------------- @@ -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 = '/dev/null' #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 @@ -84,8 +88,8 @@ methodOverrideMap = { 'void %s(const wxString& text);', '''void %s(const wxString& text) { - wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', + const wxWX2MBbuf buf = wx2stc(text); + SendMsg(%s, wx2stclen(text, buf), (sptr_t)(const char*)buf);''', 0), 'AddStyledText' : (0, @@ -99,8 +103,8 @@ methodOverrideMap = { 'void %s(const wxString& text);', '''void %s(const wxString& text) { - wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', + const wxWX2MBbuf buf = wx2stc(text); + SendMsg(%s, wx2stclen(text, buf), (sptr_t)(const char*)buf);''', 0), 'GetViewWS' : ( 'GetViewWhiteSpace', 0, 0, 0), @@ -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, @@ -188,9 +194,9 @@ methodOverrideMap = { const wxColour& background) { SendMsg(%s, markerNumber, markerSymbol); - if (foreground.Ok()) + if (foreground.IsOk()) MarkerSetForeground(markerNumber, foreground); - if (background.Ok()) + if (background.IsOk()) MarkerSetBackground(markerNumber, background);''', ('Set the symbol used for a particular marker number,', @@ -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), @@ -279,6 +353,8 @@ methodOverrideMap = { 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), @@ -362,7 +439,7 @@ methodOverrideMap = { TextToFind ft; ft.chrg.cpMin = minPos; ft.chrg.cpMax = maxPos; - wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); + const wxWX2MBbuf buf = wx2stc(text); ft.lpstrText = (char*)(const char*)buf; return SendMsg(%s, flags, (sptr_t)&ft);''', @@ -425,18 +502,14 @@ methodOverrideMap = { ('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; - - GetSelection(&start, &end); - int len = end - start; + const int len = SendMsg(SCI_GETSELTEXT, 0, (sptr_t)0); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+2); @@ -519,8 +592,8 @@ methodOverrideMap = { ''' int %s(const wxString& text) { - wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', + const wxWX2MBbuf buf = wx2stc(text); + return SendMsg(%s, wx2stclen(text, buf), (sptr_t)(const char*)buf);''', 0), 'ReplaceTargetRE' : @@ -529,8 +602,8 @@ methodOverrideMap = { ''' int %s(const wxString& text) { - wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', + const wxWX2MBbuf buf = wx2stc(text); + return SendMsg(%s, wx2stclen(text, buf), (sptr_t)(const char*)buf);''', 0), 'SearchInTarget' : @@ -539,8 +612,8 @@ methodOverrideMap = { ''' int %s(const wxString& text) { - wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - return SendMsg(%s, strlen(buf), (sptr_t)(const char*)buf);''', + const wxWX2MBbuf buf = wx2stc(text); + return SendMsg(%s, wx2stclen(text, buf), (sptr_t)(const char*)buf);''', 0), # not sure what to do about these yet @@ -650,6 +723,17 @@ 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), @@ -659,13 +743,14 @@ methodOverrideMap = { # 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 = set(( +constNonGetterMethods = ( 'LineFromPosition', 'PositionFromLine', 'LineLength', + 'CanPaste', 'CanRedo', 'CanUndo', -)) +) #---------------------------------------------------------------------------- @@ -696,7 +781,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest): curDocStrings = [] elif op == 'cat ': - if string.strip(line[4:]) == 'Deprecated': + if line[4:].strip() == 'Deprecated': break # skip the rest of the file elif op == 'evt ': @@ -709,7 +794,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest): pass else: - print '***** Unknown line type: ', line + print('***** Unknown line type: %s' % line) # process templates @@ -735,6 +820,9 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest): +def joinWithNewLines(values): + return '\n'.join(values) + #---------------------------------------------------------------------------- def processVals(values): @@ -745,7 +833,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) #---------------------------------------------------------------------------- @@ -765,7 +853,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 @@ -806,14 +894,14 @@ def processMethods(methods): imps.append(theImp) - return '\n'.join(defs), '\n'.join(imps), '\n'.join(dstr) + return joinWithNewLines(defs), joinWithNewLines(imps), joinWithNewLines(dstr) #---------------------------------------------------------------------------- def checkMethodOverride(name, number, docs): theDef = theImp = None - if methodOverrideMap.has_key(name): + if name in methodOverrideMap: item = methodOverrideMap[name] try: @@ -826,7 +914,7 @@ def checkMethodOverride(name, number, docs): if item[3] != 0: docs = item[3] except: - print "*************", name + print("************* " + name) raise return name, theDef, theImp, docs @@ -866,7 +954,7 @@ def makeParamString(param1, param2): #---------------------------------------------------------------------------- def parseVal(line, values, docs): - name, val = string.split(line, '=') + name, val = line.split('=') # remove prefixes such as SCI, etc. for old, new in valPrefixes: @@ -885,20 +973,20 @@ 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): - param = string.strip(param) + param = param.strip() if param == '': param = None else: - param = tuple(string.split(param)) + param = tuple(param.split()) return param mo = funregex.match(line) if mo is None: - print "***** Line doesn't match! : " + line + print("***** Line doesn't match! : %s" % line) retType, name, number, param1, param2 = mo.groups() @@ -906,10 +994,10 @@ def parseFun(line, methods, docs, values, is_const): param2 = parseParam(param2) # Special case. For the key command functions we want a value defined too - num = string.atoi(number) + num = int(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, docs) + parseVal('CMD_%s=%s' % (name.upper(), number), values, docs) # if we are not also doing a function for CMD values, then # just return, otherwise fall through to the append blow. @@ -927,7 +1015,7 @@ def main(args): # TODO: parse command line args to replace default input/output files??? if not os.path.exists(IFACE): - print 'Please run this script from src/stc subdirectory.' + print('Please run this script from src/stc subdirectory.') sys.exit(1) # Now just do it