#----------------------------------------------------------------------------
-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
'''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);
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;''',
'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),
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();
'''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;''',
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.',)),
'''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.',)),
'''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.', )),
'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),
'SetDocPointer' : (0,
'void %s(void* docPointer);',
'''void %s(void* docPointer) {
- SendMsg(%s, (long)docPointer);''',
+ SendMsg(%s, 0, (long)docPointer);''',
0),
'CreateDocument' : (0,
0),
'GrabFocus' : (None, 0, 0, 0),
+ 'SetFocus' : ('SetSTCFocus', 0, 0, 0),
+ 'GetFocus' : ('GetSTCFocus', 0, 0, 0),
+
'' : ('', 0, 0, 0),
#----------------------------------------------------------------------------
-