]> git.saurik.com Git - wxWidgets.git/commitdiff
Added some inline helpers so the dependence on wxUSE_UNICODE and
authorRobin Dunn <robin@alldunn.com>
Mon, 13 May 2002 23:31:02 +0000 (23:31 +0000)
committerRobin Dunn <robin@alldunn.com>
Mon, 13 May 2002 23:31:02 +0000 (23:31 +0000)
wxUSE_WCHAR_T can be localized instead of having #if's all over the
place.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
contrib/include/wx/stc/stc.h
contrib/src/stc/PlatWX.cpp
contrib/src/stc/ScintillaWX.cpp
contrib/src/stc/gen_iface.py
contrib/src/stc/stc.cpp
contrib/src/stc/stc.cpp.in
contrib/src/stc/stc.h.in
include/wx/stc/stc.h
src/stc/PlatWX.cpp
src/stc/ScintillaWX.cpp
src/stc/gen_iface.py
src/stc/stc.cpp
src/stc/stc.cpp.in
src/stc/stc.h.in

index 62bc6db59417f7e344e558498683f24e6903f508..4512d0a5929aca27fd63fc17222ad9524a0b8400 100644 (file)
@@ -2031,6 +2031,39 @@ typedef void (wxEvtHandler::*wxStyledTextEventFunction)(wxStyledTextEvent&);
 #endif
 
 //----------------------------------------------------------------------
+// Utility functions used within wxSTC
+
+#ifndef SWIG
+
+inline wxString stc2wx(const char* str) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8);
+#else
+    return wxString(str);
+#endif
+}
+
+inline wxString stc2wx(const char* str, size_t len) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8, len);
+#else
+    return wxString(str, len);
+#endif
+}
+
+#if wxUSE_UNICODE
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mb_str(wxConvUTF8);
+}
+#else
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mbc_str();
+}
+#endif
+
+#endif
+
+
 //----------------------------------------------------------------------
 #endif
 
index 9e477cc58a64d6ebbc0b4055c1a6baad1ee8f63c..d23d0a981ba6252c015b41ff95ddfb25afe82f43 100644 (file)
@@ -187,7 +187,7 @@ void Font::Create(const char *faceName, int characterSet, int size, bool bold, b
                     italic ? wxITALIC :  wxNORMAL,
                     bold ? wxBOLD : wxNORMAL,
                     false,
-                    wxString(faceName, wxConvUTF8),
+                    stc2wx(faceName),
                     encoding);
 }
 
@@ -393,12 +393,9 @@ void SurfaceImpl::DrawTextNoClip(PRectangle rc, Font &font, int ybase,
     hdc->SetTextBackground(wxColourFromCA(back));
     FillRectangle(rc, back);
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
-
     // ybase is where the baseline should be, but wxWin uses the upper left
     // corner, so I need to calculate the real position for the text...
-    hdc->DrawText(str, rc.left, ybase - font.ascent);
+    hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
 }
 
 void SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font, int ybase,
@@ -410,11 +407,8 @@ void SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font, int ybase,
     FillRectangle(rc, back);
     hdc->SetClippingRegion(wxRectFromPRectangle(rc));
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
-
     // see comments above
-    hdc->DrawText(str, rc.left, ybase - font.ascent);
+    hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
     hdc->DestroyClippingRegion();
 }
 
@@ -423,17 +417,13 @@ int SurfaceImpl::WidthText(Font &font, const char *s, int len) {
     int w;
     int h;
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
-
-    hdc->GetTextExtent(str, &w, &h);
+    hdc->GetTextExtent(stc2wx(s, len), &w, &h);
     return w;
 }
 
 
 void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, int *positions) {
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
+    wxString str = stc2wx(s, len);
     SetFont(font);
 
     // Calculate the position of each character based on the widths of
@@ -481,9 +471,7 @@ int SurfaceImpl::WidthChar(Font &font, char ch) {
     int h;
     char s[2] = { ch, 0 };
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, 1);
-    hdc->GetTextExtent(str, &w, &h);
+    hdc->GetTextExtent(stc2wx(s, 1), &w, &h);
     return w;
 }
 
@@ -643,9 +631,7 @@ void Window::SetCursor(Cursor curs) {
 
 
 void Window::SetTitle(const char *s) {
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8);
-    GETWIN(id)->SetTitle(str);
+    GETWIN(id)->SetTitle(stc2wx(s));
 }
 
 
@@ -807,7 +793,7 @@ int ListBox::Find(const char *prefix) {
 
 void ListBox::GetValue(int n, char *value, int len) {
     wxString text = GETLB(id)->GetString(n);
-    strncpy(value, text.mb_str(wxConvUTF8), len);
+    strncpy(value, wx2stc(text), len);
     value[len-1] = '\0';
 }
 
@@ -864,7 +850,7 @@ unsigned int Platform::DoubleClickTime() {
 }
 
 void Platform::DebugDisplay(const char *s) {
-    wxLogDebug(wxString(s, *wxConvCurrent));
+    wxLogDebug(stc2wx(s));
 }
 
 bool Platform::IsKeyDown(int key) {
@@ -923,9 +909,10 @@ void Platform::Assert(const char *c, const char *file, int line) {
        char buffer[2000];
        sprintf(buffer, "Assertion [%s] failed at %s %d", c, file, line);
        if (assertionPopUps) {
-               int idButton = wxMessageBox(wxString(buffer, *wxConvCurrent),
-                                            wxT("Assertion failure"),
-                                            wxICON_HAND | wxOK);
+            /*int idButton = */
+            wxMessageBox(stc2wx(buffer),
+                         wxT("Assertion failure"),
+                         wxICON_HAND | wxOK);
 //             if (idButton == IDRETRY) {
 //                     ::DebugBreak();
 //             } else if (idButton == IDIGNORE) {
index 8a2c4d27b1ccc4ab2f15dd4787dd1b566e1badc8..a633e35e70fc13642fef7dc573c104e38496a02e 100644 (file)
@@ -172,7 +172,7 @@ void ScintillaWX::Finalise() {
 
 void ScintillaWX::StartDrag() {
 #if wxUSE_DRAG_AND_DROP
-    wxString dragText(drag.s, wxConvUTF8, drag.len);
+    wxString dragText = stc2wx(drag.s, drag.len);
 
     // Send an event to allow the drag text to be changed
     wxStyledTextEvent evt(wxEVT_STC_START_DRAG, stc->GetId());
@@ -320,7 +320,7 @@ void ScintillaWX::Copy() {
         SelectionText st;
         CopySelectionRange(&st);
         wxTheClipboard->Open();
-        wxString text(st.s, wxConvUTF8, st.len);
+        wxString text = stc2wx(st.s, st.len);
         wxTheClipboard->SetData(new wxTextDataObject(text));
         wxTheClipboard->Close();
     }
@@ -338,7 +338,7 @@ void ScintillaWX::Paste() {
     gotData = wxTheClipboard->GetData(data);
     wxTheClipboard->Close();
     if (gotData) {
-        wxWX2MBbuf buf = (wxWX2MBbuf)data.GetText().mb_str(wxConvUTF8);
+        wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(data.GetText());
         int        len = strlen(buf);
         pdoc->InsertString(currentPos, buf, len);
         SetEmptySelection(currentPos + len);
@@ -370,7 +370,7 @@ void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) {
     if (!label[0])
         ((wxMenu*)popup.GetID())->AppendSeparator();
     else
-        ((wxMenu*)popup.GetID())->Append(cmd, wxString(label, *wxConvCurrent));
+        ((wxMenu*)popup.GetID())->Append(cmd, stc2wx(label));
 
     if (!enabled)
         ((wxMenu*)popup.GetID())->Enable(cmd, enabled);
@@ -601,7 +601,7 @@ bool ScintillaWX::DoDropText(long x, long y, const wxString& data) {
     dragResult = evt.GetDragResult();
     if (dragResult == wxDragMove || dragResult == wxDragCopy) {
         DropAt(evt.GetPosition(),
-               evt.GetDragText().mb_str(wxConvUTF8),
+               wx2stc(evt.GetDragText()),
                dragResult == wxDragMove,
                FALSE); // TODO: rectangular?
         return TRUE;
index 8de2af862f42877ffc05440cbb5f538263dbaf69..b85de2fa9fa8b3f81b252c85d33956ac49fe4654 100644 (file)
@@ -68,7 +68,7 @@ methodOverrideMap = {
                  'void %s(const wxString& text);',
 
                  '''void %s(const wxString& text) {
-                    wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                    wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                     SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                  0),
 
@@ -130,7 +130,7 @@ methodOverrideMap = {
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
                        if (linePos)  *linePos = pos;
-                       return wxString(buf, wxConvUTF8);''',
+                       return stc2wx(buf);''',
 
                     0),
 
@@ -249,7 +249,7 @@ methodOverrideMap = {
                      flags |= wholeWord     ? SCFIND_WHOLEWORD : 0;
                      ft.chrg.cpMin = minPos;
                      ft.chrg.cpMax = maxPos;
-                     ft.lpstrText = (char*)(const char*)text.mb_str(wxConvUTF8);
+                     ft.lpstrText = (char*)(const char*)wx2stc(text);
 
                      return SendMsg(%s, flags, (long)&ft);''',
                   0),
@@ -305,7 +305,7 @@ methodOverrideMap = {
                        SendMsg(%s, line, (long)buf);
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
-                       return wxString(buf, wxConvUTF8);''',
+                       return stc2wx(buf);''',
 
                     ('Retrieve the contents of a line.',)),
 
@@ -326,7 +326,7 @@ methodOverrideMap = {
                             SendMsg(%s, 0, (long)buf);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);''',
+                            return stc2wx(buf);''',
 
                     ('Retrieve the selected text.',)),
 
@@ -350,7 +350,7 @@ methodOverrideMap = {
                             SendMsg(%s, 0, (long)&tr);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);''',
+                            return stc2wx(buf);''',
 
                        ('Retrieve a range of text.',)),
 
@@ -371,7 +371,7 @@ methodOverrideMap = {
                         SendMsg(%s, len+1, (long)buf);
                         mbuf.UngetWriteBuf(len);
                         mbuf.AppendByte(0);
-                        return wxString(buf, wxConvUTF8);''',
+                        return stc2wx(buf);''',
 
                  ('Retrieve all the text in the document.', )),
 
@@ -388,7 +388,7 @@ methodOverrideMap = {
 
                        '''
                        int %s(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                        0),
 
@@ -397,7 +397,7 @@ methodOverrideMap = {
 
                        '''
                        int %s(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                        0),
 
@@ -406,7 +406,7 @@ methodOverrideMap = {
 
                        '''
                        int %s(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                        0),
 
@@ -662,7 +662,7 @@ def makeArgString(param):
     typ, name = param
 
     if typ == 'string':
-        return '(long)(const char*)%s.mb_str(wxConvUTF8)' % name
+        return '(long)(const char*)wx2stc(%s)' % name
     if typ == 'colour':
         return 'wxColourAsLong(%s)' % name
 
index 6c468c320f542f21feb1c772f997d5e8af08c4ea..b763cac2296a1a55918d57ab158f8f5f2dc556d5 100644 (file)
@@ -164,7 +164,7 @@ static wxColour wxColourFromSpec(const wxString& spec) {
 
 // Add text to the document
 void wxStyledTextCtrl::AddText(const wxString& text) {
-                    wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                    wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                     SendMsg(2001, strlen(buf), (long)(const char*)buf);
 }
 
@@ -175,7 +175,7 @@ void wxStyledTextCtrl::AddStyledText(const wxMemoryBuffer& data) {
 
 // Insert string at a position
 void wxStyledTextCtrl::InsertText(int pos, const wxString& text) {
-    SendMsg(2003, pos, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2003, pos, (long)(const char*)wx2stc(text));
 }
 
 // Delete all text in the document
@@ -328,7 +328,7 @@ wxString wxStyledTextCtrl::GetCurLine(int* linePos) {
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
                        if (linePos)  *linePos = pos;
-                       return wxString(buf, wxConvUTF8);
+                       return stc2wx(buf);
 }
 
 // Retrieve the position of the last correctly styled character.
@@ -523,7 +523,7 @@ void wxStyledTextCtrl::StyleSetSize(int style, int sizePoints) {
 
 // Set the font of a style.
 void wxStyledTextCtrl::StyleSetFaceName(int style, const wxString& fontName) {
-    SendMsg(2056, style, (long)(const char*)fontName.mb_str(wxConvUTF8));
+    SendMsg(2056, style, (long)(const char*)wx2stc(fontName));
 }
 
 // Set a style to have its end of line filled or not.
@@ -604,7 +604,7 @@ void wxStyledTextCtrl::SetCaretPeriod(int periodMilliseconds) {
 // Set the set of characters making up words for when moving or selecting
 // by word.
 void wxStyledTextCtrl::SetWordChars(const wxString& characters) {
-    SendMsg(2077, 0, (long)(const char*)characters.mb_str(wxConvUTF8));
+    SendMsg(2077, 0, (long)(const char*)wx2stc(characters));
 }
 
 // Start a sequence of actions that is undone and redone as a unit.
@@ -697,7 +697,7 @@ void wxStyledTextCtrl::StyleSetChangeable(int style, bool changeable) {
 // The lenEntered parameter indicates how many characters before
 // the caret should be used to provide context.
 void wxStyledTextCtrl::AutoCompShow(int lenEntered, const wxString& itemList) {
-    SendMsg(2100, lenEntered, (long)(const char*)itemList.mb_str(wxConvUTF8));
+    SendMsg(2100, lenEntered, (long)(const char*)wx2stc(itemList));
 }
 
 // Remove the auto-completion list from the screen.
@@ -723,7 +723,7 @@ void wxStyledTextCtrl::AutoCompComplete() {
 
 // Define a set of character that when typed cancel the auto-completion list.
 void wxStyledTextCtrl::AutoCompStops(const wxString& characterSet) {
-    SendMsg(2105, 0, (long)(const char*)characterSet.mb_str(wxConvUTF8));
+    SendMsg(2105, 0, (long)(const char*)wx2stc(characterSet));
 }
 
 // Change the separator character in the string setting up an auto-completion
@@ -739,7 +739,7 @@ int wxStyledTextCtrl::AutoCompGetSeparator() {
 
 // Select the item in the auto-completion list that starts with a string.
 void wxStyledTextCtrl::AutoCompSelect(const wxString& text) {
-    SendMsg(2108, 0, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2108, 0, (long)(const char*)wx2stc(text));
 }
 
 // Should the auto-completion list be cancelled if the user backspaces to a
@@ -756,7 +756,7 @@ bool wxStyledTextCtrl::AutoCompGetCancelAtStart() {
 // Define a set of characters that when typed will cause the autocompletion to
 // choose the selected item.
 void wxStyledTextCtrl::AutoCompSetFillUps(const wxString& characterSet) {
-    SendMsg(2112, 0, (long)(const char*)characterSet.mb_str(wxConvUTF8));
+    SendMsg(2112, 0, (long)(const char*)wx2stc(characterSet));
 }
 
 // Should a single item auto-completion list automatically choose the item.
@@ -781,7 +781,7 @@ bool wxStyledTextCtrl::AutoCompGetIgnoreCase() {
 
 // Display a list of strings and send notification when user chooses one.
 void wxStyledTextCtrl::UserListShow(int listType, const wxString& itemList) {
-    SendMsg(2117, listType, (long)(const char*)itemList.mb_str(wxConvUTF8));
+    SendMsg(2117, listType, (long)(const char*)wx2stc(itemList));
 }
 
 // Set whether or not autocompletion is hidden automatically when nothing matches
@@ -953,7 +953,7 @@ int wxStyledTextCtrl::FindText(int minPos, int maxPos,
                      flags |= wholeWord     ? SCFIND_WHOLEWORD : 0;
                      ft.chrg.cpMin = minPos;
                      ft.chrg.cpMax = maxPos;
-                     ft.lpstrText = (char*)(const char*)text.mb_str(wxConvUTF8);
+                     ft.lpstrText = (char*)(const char*)wx2stc(text);
 
                      return SendMsg(2150, flags, (long)&ft);
 }
@@ -1004,7 +1004,7 @@ wxString wxStyledTextCtrl::GetLine(int line) {
                        SendMsg(2153, line, (long)buf);
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
-                       return wxString(buf, wxConvUTF8);
+                       return stc2wx(buf);
 }
 
 // Returns the number of lines in the document. There is always at least one.
@@ -1056,7 +1056,7 @@ wxString wxStyledTextCtrl::GetSelectedText() {
                             SendMsg(2161, 0, (long)buf);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);
+                            return stc2wx(buf);
 }
 
 // Retrieve a range of text.
@@ -1077,7 +1077,7 @@ wxString wxStyledTextCtrl::GetTextRange(int startPos, int endPos) {
                             SendMsg(2162, 0, (long)&tr);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);
+                            return stc2wx(buf);
 }
 
 // Draw the selection in normal style or with selection highlighted.
@@ -1107,7 +1107,7 @@ void wxStyledTextCtrl::EnsureCaretVisible() {
 
 // Replace the selected text with the argument text.
 void wxStyledTextCtrl::ReplaceSelection(const wxString& text) {
-    SendMsg(2170, 0, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2170, 0, (long)(const char*)wx2stc(text));
 }
 
 // Set to read only or read write.
@@ -1157,7 +1157,7 @@ void wxStyledTextCtrl::Clear() {
 
 // Replace the contents of the document with the argument text.
 void wxStyledTextCtrl::SetText(const wxString& text) {
-    SendMsg(2181, 0, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2181, 0, (long)(const char*)wx2stc(text));
 }
 
 // Retrieve all the text in the document.
@@ -1168,7 +1168,7 @@ wxString wxStyledTextCtrl::GetText() {
                         SendMsg(2182, len+1, (long)buf);
                         mbuf.UngetWriteBuf(len);
                         mbuf.AppendByte(0);
-                        return wxString(buf, wxConvUTF8);
+                        return stc2wx(buf);
 }
 
 // Retrieve the number of characters in the document.
@@ -1223,7 +1223,7 @@ int wxStyledTextCtrl::GetTargetEnd() {
 // Returns the length of the replacement text.
 
                        int wxStyledTextCtrl::ReplaceTarget(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(2194, strlen(buf), (long)(const char*)buf);
 }
 
@@ -1235,7 +1235,7 @@ int wxStyledTextCtrl::GetTargetEnd() {
 // caused by processing the \d patterns.
 
                        int wxStyledTextCtrl::ReplaceTargetRE(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(2195, strlen(buf), (long)(const char*)buf);
 }
 
@@ -1244,7 +1244,7 @@ int wxStyledTextCtrl::GetTargetEnd() {
 // Returns length of range or -1 for failure in which case target is not moved.
 
                        int wxStyledTextCtrl::SearchInTarget(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(2197, strlen(buf), (long)(const char*)buf);
 }
 
@@ -1260,7 +1260,7 @@ int wxStyledTextCtrl::GetSearchFlags() {
 
 // Show a call tip containing a definition near position pos.
 void wxStyledTextCtrl::CallTipShow(int pos, const wxString& definition) {
-    SendMsg(2200, pos, (long)(const char*)definition.mb_str(wxConvUTF8));
+    SendMsg(2200, pos, (long)(const char*)wx2stc(definition));
 }
 
 // Remove the call tip from the screen.
@@ -1517,13 +1517,13 @@ void wxStyledTextCtrl::SearchAnchor() {
 // Find some text starting at the search anchor.
 // Does not ensure the selection is visible.
 int wxStyledTextCtrl::SearchNext(int flags, const wxString& text) {
-    return SendMsg(2367, flags, (long)(const char*)text.mb_str(wxConvUTF8));
+    return SendMsg(2367, flags, (long)(const char*)wx2stc(text));
 }
 
 // Find some text starting at the search anchor and moving backwards.
 // Does not ensure the selection is visible.
 int wxStyledTextCtrl::SearchPrev(int flags, const wxString& text) {
-    return SendMsg(2368, flags, (long)(const char*)text.mb_str(wxConvUTF8));
+    return SendMsg(2368, flags, (long)(const char*)wx2stc(text));
 }
 
 // Set the way the line the caret is on is kept visible.
@@ -1700,17 +1700,17 @@ void wxStyledTextCtrl::Colourise(int start, int end) {
 
 // Set up a value that may be used by a lexer for some optional feature.
 void wxStyledTextCtrl::SetProperty(const wxString& key, const wxString& value) {
-    SendMsg(4004, (long)(const char*)key.mb_str(wxConvUTF8), (long)(const char*)value.mb_str(wxConvUTF8));
+    SendMsg(4004, (long)(const char*)wx2stc(key), (long)(const char*)wx2stc(value));
 }
 
 // Set up the key words used by the lexer.
 void wxStyledTextCtrl::SetKeyWords(int keywordSet, const wxString& keyWords) {
-    SendMsg(4005, keywordSet, (long)(const char*)keyWords.mb_str(wxConvUTF8));
+    SendMsg(4005, keywordSet, (long)(const char*)wx2stc(keyWords));
 }
 
 // Set the lexing language of the document based on string name.
 void wxStyledTextCtrl::SetLexerLanguage(const wxString& language) {
-    SendMsg(4006, 0, (long)(const char*)language.mb_str(wxConvUTF8));
+    SendMsg(4006, 0, (long)(const char*)wx2stc(language));
 }
 
 // END of generated section
@@ -2047,7 +2047,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) {
             wxMemoryBuffer buf(scn.length+1);
             buf.AppendData((void*)scn.text, scn.length);
             buf.AppendByte(0);
-            evt.SetText(wxString(buf, wxConvUTF8));
+            evt.SetText(stc2wx(buf));
         }
         evt.SetLength(scn.length);
         evt.SetLinesAdded(scn.linesAdded);
index f6c30c0896d8f8a8a00ed04dc3d661ae00b7a506..b68d69655d3d3aad3b8c377ef17a18611bb77697 100644 (file)
@@ -497,7 +497,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) {
             wxMemoryBuffer buf(scn.length+1);
             buf.AppendData((void*)scn.text, scn.length);
             buf.AppendByte(0);
-            evt.SetText(wxString(buf, wxConvUTF8));
+            evt.SetText(stc2wx(buf));
         }
         evt.SetLength(scn.length);
         evt.SetLinesAdded(scn.linesAdded);
index 0e56b08abba2625b79dc23632846b4c47c99a41a..1243324bb94ffb534ac6997bf60a7be12cb29051 100644 (file)
@@ -381,6 +381,39 @@ typedef void (wxEvtHandler::*wxStyledTextEventFunction)(wxStyledTextEvent&);
 #endif
 
 //----------------------------------------------------------------------
+// Utility functions used within wxSTC
+
+#ifndef SWIG
+
+inline wxString stc2wx(const char* str) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8);
+#else
+    return wxString(str);
+#endif
+}
+
+inline wxString stc2wx(const char* str, size_t len) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8, len);
+#else
+    return wxString(str, len);
+#endif
+}
+
+#if wxUSE_UNICODE
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mb_str(wxConvUTF8);
+}
+#else
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mbc_str();
+}
+#endif
+
+#endif
+
+
 //----------------------------------------------------------------------
 #endif
 
index 62bc6db59417f7e344e558498683f24e6903f508..4512d0a5929aca27fd63fc17222ad9524a0b8400 100644 (file)
@@ -2031,6 +2031,39 @@ typedef void (wxEvtHandler::*wxStyledTextEventFunction)(wxStyledTextEvent&);
 #endif
 
 //----------------------------------------------------------------------
+// Utility functions used within wxSTC
+
+#ifndef SWIG
+
+inline wxString stc2wx(const char* str) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8);
+#else
+    return wxString(str);
+#endif
+}
+
+inline wxString stc2wx(const char* str, size_t len) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8, len);
+#else
+    return wxString(str, len);
+#endif
+}
+
+#if wxUSE_UNICODE
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mb_str(wxConvUTF8);
+}
+#else
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mbc_str();
+}
+#endif
+
+#endif
+
+
 //----------------------------------------------------------------------
 #endif
 
index 9e477cc58a64d6ebbc0b4055c1a6baad1ee8f63c..d23d0a981ba6252c015b41ff95ddfb25afe82f43 100644 (file)
@@ -187,7 +187,7 @@ void Font::Create(const char *faceName, int characterSet, int size, bool bold, b
                     italic ? wxITALIC :  wxNORMAL,
                     bold ? wxBOLD : wxNORMAL,
                     false,
-                    wxString(faceName, wxConvUTF8),
+                    stc2wx(faceName),
                     encoding);
 }
 
@@ -393,12 +393,9 @@ void SurfaceImpl::DrawTextNoClip(PRectangle rc, Font &font, int ybase,
     hdc->SetTextBackground(wxColourFromCA(back));
     FillRectangle(rc, back);
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
-
     // ybase is where the baseline should be, but wxWin uses the upper left
     // corner, so I need to calculate the real position for the text...
-    hdc->DrawText(str, rc.left, ybase - font.ascent);
+    hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
 }
 
 void SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font, int ybase,
@@ -410,11 +407,8 @@ void SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font, int ybase,
     FillRectangle(rc, back);
     hdc->SetClippingRegion(wxRectFromPRectangle(rc));
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
-
     // see comments above
-    hdc->DrawText(str, rc.left, ybase - font.ascent);
+    hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
     hdc->DestroyClippingRegion();
 }
 
@@ -423,17 +417,13 @@ int SurfaceImpl::WidthText(Font &font, const char *s, int len) {
     int w;
     int h;
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
-
-    hdc->GetTextExtent(str, &w, &h);
+    hdc->GetTextExtent(stc2wx(s, len), &w, &h);
     return w;
 }
 
 
 void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, int *positions) {
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, len);
+    wxString str = stc2wx(s, len);
     SetFont(font);
 
     // Calculate the position of each character based on the widths of
@@ -481,9 +471,7 @@ int SurfaceImpl::WidthChar(Font &font, char ch) {
     int h;
     char s[2] = { ch, 0 };
 
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8, 1);
-    hdc->GetTextExtent(str, &w, &h);
+    hdc->GetTextExtent(stc2wx(s, 1), &w, &h);
     return w;
 }
 
@@ -643,9 +631,7 @@ void Window::SetCursor(Cursor curs) {
 
 
 void Window::SetTitle(const char *s) {
-    // will convert from UTF-8 in unicode mode
-    wxString str(s, wxConvUTF8);
-    GETWIN(id)->SetTitle(str);
+    GETWIN(id)->SetTitle(stc2wx(s));
 }
 
 
@@ -807,7 +793,7 @@ int ListBox::Find(const char *prefix) {
 
 void ListBox::GetValue(int n, char *value, int len) {
     wxString text = GETLB(id)->GetString(n);
-    strncpy(value, text.mb_str(wxConvUTF8), len);
+    strncpy(value, wx2stc(text), len);
     value[len-1] = '\0';
 }
 
@@ -864,7 +850,7 @@ unsigned int Platform::DoubleClickTime() {
 }
 
 void Platform::DebugDisplay(const char *s) {
-    wxLogDebug(wxString(s, *wxConvCurrent));
+    wxLogDebug(stc2wx(s));
 }
 
 bool Platform::IsKeyDown(int key) {
@@ -923,9 +909,10 @@ void Platform::Assert(const char *c, const char *file, int line) {
        char buffer[2000];
        sprintf(buffer, "Assertion [%s] failed at %s %d", c, file, line);
        if (assertionPopUps) {
-               int idButton = wxMessageBox(wxString(buffer, *wxConvCurrent),
-                                            wxT("Assertion failure"),
-                                            wxICON_HAND | wxOK);
+            /*int idButton = */
+            wxMessageBox(stc2wx(buffer),
+                         wxT("Assertion failure"),
+                         wxICON_HAND | wxOK);
 //             if (idButton == IDRETRY) {
 //                     ::DebugBreak();
 //             } else if (idButton == IDIGNORE) {
index 8a2c4d27b1ccc4ab2f15dd4787dd1b566e1badc8..a633e35e70fc13642fef7dc573c104e38496a02e 100644 (file)
@@ -172,7 +172,7 @@ void ScintillaWX::Finalise() {
 
 void ScintillaWX::StartDrag() {
 #if wxUSE_DRAG_AND_DROP
-    wxString dragText(drag.s, wxConvUTF8, drag.len);
+    wxString dragText = stc2wx(drag.s, drag.len);
 
     // Send an event to allow the drag text to be changed
     wxStyledTextEvent evt(wxEVT_STC_START_DRAG, stc->GetId());
@@ -320,7 +320,7 @@ void ScintillaWX::Copy() {
         SelectionText st;
         CopySelectionRange(&st);
         wxTheClipboard->Open();
-        wxString text(st.s, wxConvUTF8, st.len);
+        wxString text = stc2wx(st.s, st.len);
         wxTheClipboard->SetData(new wxTextDataObject(text));
         wxTheClipboard->Close();
     }
@@ -338,7 +338,7 @@ void ScintillaWX::Paste() {
     gotData = wxTheClipboard->GetData(data);
     wxTheClipboard->Close();
     if (gotData) {
-        wxWX2MBbuf buf = (wxWX2MBbuf)data.GetText().mb_str(wxConvUTF8);
+        wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(data.GetText());
         int        len = strlen(buf);
         pdoc->InsertString(currentPos, buf, len);
         SetEmptySelection(currentPos + len);
@@ -370,7 +370,7 @@ void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) {
     if (!label[0])
         ((wxMenu*)popup.GetID())->AppendSeparator();
     else
-        ((wxMenu*)popup.GetID())->Append(cmd, wxString(label, *wxConvCurrent));
+        ((wxMenu*)popup.GetID())->Append(cmd, stc2wx(label));
 
     if (!enabled)
         ((wxMenu*)popup.GetID())->Enable(cmd, enabled);
@@ -601,7 +601,7 @@ bool ScintillaWX::DoDropText(long x, long y, const wxString& data) {
     dragResult = evt.GetDragResult();
     if (dragResult == wxDragMove || dragResult == wxDragCopy) {
         DropAt(evt.GetPosition(),
-               evt.GetDragText().mb_str(wxConvUTF8),
+               wx2stc(evt.GetDragText()),
                dragResult == wxDragMove,
                FALSE); // TODO: rectangular?
         return TRUE;
index 8de2af862f42877ffc05440cbb5f538263dbaf69..b85de2fa9fa8b3f81b252c85d33956ac49fe4654 100644 (file)
@@ -68,7 +68,7 @@ methodOverrideMap = {
                  'void %s(const wxString& text);',
 
                  '''void %s(const wxString& text) {
-                    wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                    wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                     SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                  0),
 
@@ -130,7 +130,7 @@ methodOverrideMap = {
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
                        if (linePos)  *linePos = pos;
-                       return wxString(buf, wxConvUTF8);''',
+                       return stc2wx(buf);''',
 
                     0),
 
@@ -249,7 +249,7 @@ methodOverrideMap = {
                      flags |= wholeWord     ? SCFIND_WHOLEWORD : 0;
                      ft.chrg.cpMin = minPos;
                      ft.chrg.cpMax = maxPos;
-                     ft.lpstrText = (char*)(const char*)text.mb_str(wxConvUTF8);
+                     ft.lpstrText = (char*)(const char*)wx2stc(text);
 
                      return SendMsg(%s, flags, (long)&ft);''',
                   0),
@@ -305,7 +305,7 @@ methodOverrideMap = {
                        SendMsg(%s, line, (long)buf);
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
-                       return wxString(buf, wxConvUTF8);''',
+                       return stc2wx(buf);''',
 
                     ('Retrieve the contents of a line.',)),
 
@@ -326,7 +326,7 @@ methodOverrideMap = {
                             SendMsg(%s, 0, (long)buf);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);''',
+                            return stc2wx(buf);''',
 
                     ('Retrieve the selected text.',)),
 
@@ -350,7 +350,7 @@ methodOverrideMap = {
                             SendMsg(%s, 0, (long)&tr);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);''',
+                            return stc2wx(buf);''',
 
                        ('Retrieve a range of text.',)),
 
@@ -371,7 +371,7 @@ methodOverrideMap = {
                         SendMsg(%s, len+1, (long)buf);
                         mbuf.UngetWriteBuf(len);
                         mbuf.AppendByte(0);
-                        return wxString(buf, wxConvUTF8);''',
+                        return stc2wx(buf);''',
 
                  ('Retrieve all the text in the document.', )),
 
@@ -388,7 +388,7 @@ methodOverrideMap = {
 
                        '''
                        int %s(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                        0),
 
@@ -397,7 +397,7 @@ methodOverrideMap = {
 
                        '''
                        int %s(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                        0),
 
@@ -406,7 +406,7 @@ methodOverrideMap = {
 
                        '''
                        int %s(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
                        0),
 
@@ -662,7 +662,7 @@ def makeArgString(param):
     typ, name = param
 
     if typ == 'string':
-        return '(long)(const char*)%s.mb_str(wxConvUTF8)' % name
+        return '(long)(const char*)wx2stc(%s)' % name
     if typ == 'colour':
         return 'wxColourAsLong(%s)' % name
 
index 6c468c320f542f21feb1c772f997d5e8af08c4ea..b763cac2296a1a55918d57ab158f8f5f2dc556d5 100644 (file)
@@ -164,7 +164,7 @@ static wxColour wxColourFromSpec(const wxString& spec) {
 
 // Add text to the document
 void wxStyledTextCtrl::AddText(const wxString& text) {
-                    wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                    wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                     SendMsg(2001, strlen(buf), (long)(const char*)buf);
 }
 
@@ -175,7 +175,7 @@ void wxStyledTextCtrl::AddStyledText(const wxMemoryBuffer& data) {
 
 // Insert string at a position
 void wxStyledTextCtrl::InsertText(int pos, const wxString& text) {
-    SendMsg(2003, pos, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2003, pos, (long)(const char*)wx2stc(text));
 }
 
 // Delete all text in the document
@@ -328,7 +328,7 @@ wxString wxStyledTextCtrl::GetCurLine(int* linePos) {
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
                        if (linePos)  *linePos = pos;
-                       return wxString(buf, wxConvUTF8);
+                       return stc2wx(buf);
 }
 
 // Retrieve the position of the last correctly styled character.
@@ -523,7 +523,7 @@ void wxStyledTextCtrl::StyleSetSize(int style, int sizePoints) {
 
 // Set the font of a style.
 void wxStyledTextCtrl::StyleSetFaceName(int style, const wxString& fontName) {
-    SendMsg(2056, style, (long)(const char*)fontName.mb_str(wxConvUTF8));
+    SendMsg(2056, style, (long)(const char*)wx2stc(fontName));
 }
 
 // Set a style to have its end of line filled or not.
@@ -604,7 +604,7 @@ void wxStyledTextCtrl::SetCaretPeriod(int periodMilliseconds) {
 // Set the set of characters making up words for when moving or selecting
 // by word.
 void wxStyledTextCtrl::SetWordChars(const wxString& characters) {
-    SendMsg(2077, 0, (long)(const char*)characters.mb_str(wxConvUTF8));
+    SendMsg(2077, 0, (long)(const char*)wx2stc(characters));
 }
 
 // Start a sequence of actions that is undone and redone as a unit.
@@ -697,7 +697,7 @@ void wxStyledTextCtrl::StyleSetChangeable(int style, bool changeable) {
 // The lenEntered parameter indicates how many characters before
 // the caret should be used to provide context.
 void wxStyledTextCtrl::AutoCompShow(int lenEntered, const wxString& itemList) {
-    SendMsg(2100, lenEntered, (long)(const char*)itemList.mb_str(wxConvUTF8));
+    SendMsg(2100, lenEntered, (long)(const char*)wx2stc(itemList));
 }
 
 // Remove the auto-completion list from the screen.
@@ -723,7 +723,7 @@ void wxStyledTextCtrl::AutoCompComplete() {
 
 // Define a set of character that when typed cancel the auto-completion list.
 void wxStyledTextCtrl::AutoCompStops(const wxString& characterSet) {
-    SendMsg(2105, 0, (long)(const char*)characterSet.mb_str(wxConvUTF8));
+    SendMsg(2105, 0, (long)(const char*)wx2stc(characterSet));
 }
 
 // Change the separator character in the string setting up an auto-completion
@@ -739,7 +739,7 @@ int wxStyledTextCtrl::AutoCompGetSeparator() {
 
 // Select the item in the auto-completion list that starts with a string.
 void wxStyledTextCtrl::AutoCompSelect(const wxString& text) {
-    SendMsg(2108, 0, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2108, 0, (long)(const char*)wx2stc(text));
 }
 
 // Should the auto-completion list be cancelled if the user backspaces to a
@@ -756,7 +756,7 @@ bool wxStyledTextCtrl::AutoCompGetCancelAtStart() {
 // Define a set of characters that when typed will cause the autocompletion to
 // choose the selected item.
 void wxStyledTextCtrl::AutoCompSetFillUps(const wxString& characterSet) {
-    SendMsg(2112, 0, (long)(const char*)characterSet.mb_str(wxConvUTF8));
+    SendMsg(2112, 0, (long)(const char*)wx2stc(characterSet));
 }
 
 // Should a single item auto-completion list automatically choose the item.
@@ -781,7 +781,7 @@ bool wxStyledTextCtrl::AutoCompGetIgnoreCase() {
 
 // Display a list of strings and send notification when user chooses one.
 void wxStyledTextCtrl::UserListShow(int listType, const wxString& itemList) {
-    SendMsg(2117, listType, (long)(const char*)itemList.mb_str(wxConvUTF8));
+    SendMsg(2117, listType, (long)(const char*)wx2stc(itemList));
 }
 
 // Set whether or not autocompletion is hidden automatically when nothing matches
@@ -953,7 +953,7 @@ int wxStyledTextCtrl::FindText(int minPos, int maxPos,
                      flags |= wholeWord     ? SCFIND_WHOLEWORD : 0;
                      ft.chrg.cpMin = minPos;
                      ft.chrg.cpMax = maxPos;
-                     ft.lpstrText = (char*)(const char*)text.mb_str(wxConvUTF8);
+                     ft.lpstrText = (char*)(const char*)wx2stc(text);
 
                      return SendMsg(2150, flags, (long)&ft);
 }
@@ -1004,7 +1004,7 @@ wxString wxStyledTextCtrl::GetLine(int line) {
                        SendMsg(2153, line, (long)buf);
                        mbuf.UngetWriteBuf(len);
                        mbuf.AppendByte(0);
-                       return wxString(buf, wxConvUTF8);
+                       return stc2wx(buf);
 }
 
 // Returns the number of lines in the document. There is always at least one.
@@ -1056,7 +1056,7 @@ wxString wxStyledTextCtrl::GetSelectedText() {
                             SendMsg(2161, 0, (long)buf);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);
+                            return stc2wx(buf);
 }
 
 // Retrieve a range of text.
@@ -1077,7 +1077,7 @@ wxString wxStyledTextCtrl::GetTextRange(int startPos, int endPos) {
                             SendMsg(2162, 0, (long)&tr);
                             mbuf.UngetWriteBuf(len);
                             mbuf.AppendByte(0);
-                            return wxString(buf, wxConvUTF8);
+                            return stc2wx(buf);
 }
 
 // Draw the selection in normal style or with selection highlighted.
@@ -1107,7 +1107,7 @@ void wxStyledTextCtrl::EnsureCaretVisible() {
 
 // Replace the selected text with the argument text.
 void wxStyledTextCtrl::ReplaceSelection(const wxString& text) {
-    SendMsg(2170, 0, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2170, 0, (long)(const char*)wx2stc(text));
 }
 
 // Set to read only or read write.
@@ -1157,7 +1157,7 @@ void wxStyledTextCtrl::Clear() {
 
 // Replace the contents of the document with the argument text.
 void wxStyledTextCtrl::SetText(const wxString& text) {
-    SendMsg(2181, 0, (long)(const char*)text.mb_str(wxConvUTF8));
+    SendMsg(2181, 0, (long)(const char*)wx2stc(text));
 }
 
 // Retrieve all the text in the document.
@@ -1168,7 +1168,7 @@ wxString wxStyledTextCtrl::GetText() {
                         SendMsg(2182, len+1, (long)buf);
                         mbuf.UngetWriteBuf(len);
                         mbuf.AppendByte(0);
-                        return wxString(buf, wxConvUTF8);
+                        return stc2wx(buf);
 }
 
 // Retrieve the number of characters in the document.
@@ -1223,7 +1223,7 @@ int wxStyledTextCtrl::GetTargetEnd() {
 // Returns the length of the replacement text.
 
                        int wxStyledTextCtrl::ReplaceTarget(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(2194, strlen(buf), (long)(const char*)buf);
 }
 
@@ -1235,7 +1235,7 @@ int wxStyledTextCtrl::GetTargetEnd() {
 // caused by processing the \d patterns.
 
                        int wxStyledTextCtrl::ReplaceTargetRE(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(2195, strlen(buf), (long)(const char*)buf);
 }
 
@@ -1244,7 +1244,7 @@ int wxStyledTextCtrl::GetTargetEnd() {
 // Returns length of range or -1 for failure in which case target is not moved.
 
                        int wxStyledTextCtrl::SearchInTarget(const wxString& text) {
-                           wxWX2MBbuf buf = (wxWX2MBbuf)text.mb_str(wxConvUTF8);
+                           wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
                            return SendMsg(2197, strlen(buf), (long)(const char*)buf);
 }
 
@@ -1260,7 +1260,7 @@ int wxStyledTextCtrl::GetSearchFlags() {
 
 // Show a call tip containing a definition near position pos.
 void wxStyledTextCtrl::CallTipShow(int pos, const wxString& definition) {
-    SendMsg(2200, pos, (long)(const char*)definition.mb_str(wxConvUTF8));
+    SendMsg(2200, pos, (long)(const char*)wx2stc(definition));
 }
 
 // Remove the call tip from the screen.
@@ -1517,13 +1517,13 @@ void wxStyledTextCtrl::SearchAnchor() {
 // Find some text starting at the search anchor.
 // Does not ensure the selection is visible.
 int wxStyledTextCtrl::SearchNext(int flags, const wxString& text) {
-    return SendMsg(2367, flags, (long)(const char*)text.mb_str(wxConvUTF8));
+    return SendMsg(2367, flags, (long)(const char*)wx2stc(text));
 }
 
 // Find some text starting at the search anchor and moving backwards.
 // Does not ensure the selection is visible.
 int wxStyledTextCtrl::SearchPrev(int flags, const wxString& text) {
-    return SendMsg(2368, flags, (long)(const char*)text.mb_str(wxConvUTF8));
+    return SendMsg(2368, flags, (long)(const char*)wx2stc(text));
 }
 
 // Set the way the line the caret is on is kept visible.
@@ -1700,17 +1700,17 @@ void wxStyledTextCtrl::Colourise(int start, int end) {
 
 // Set up a value that may be used by a lexer for some optional feature.
 void wxStyledTextCtrl::SetProperty(const wxString& key, const wxString& value) {
-    SendMsg(4004, (long)(const char*)key.mb_str(wxConvUTF8), (long)(const char*)value.mb_str(wxConvUTF8));
+    SendMsg(4004, (long)(const char*)wx2stc(key), (long)(const char*)wx2stc(value));
 }
 
 // Set up the key words used by the lexer.
 void wxStyledTextCtrl::SetKeyWords(int keywordSet, const wxString& keyWords) {
-    SendMsg(4005, keywordSet, (long)(const char*)keyWords.mb_str(wxConvUTF8));
+    SendMsg(4005, keywordSet, (long)(const char*)wx2stc(keyWords));
 }
 
 // Set the lexing language of the document based on string name.
 void wxStyledTextCtrl::SetLexerLanguage(const wxString& language) {
-    SendMsg(4006, 0, (long)(const char*)language.mb_str(wxConvUTF8));
+    SendMsg(4006, 0, (long)(const char*)wx2stc(language));
 }
 
 // END of generated section
@@ -2047,7 +2047,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) {
             wxMemoryBuffer buf(scn.length+1);
             buf.AppendData((void*)scn.text, scn.length);
             buf.AppendByte(0);
-            evt.SetText(wxString(buf, wxConvUTF8));
+            evt.SetText(stc2wx(buf));
         }
         evt.SetLength(scn.length);
         evt.SetLinesAdded(scn.linesAdded);
index f6c30c0896d8f8a8a00ed04dc3d661ae00b7a506..b68d69655d3d3aad3b8c377ef17a18611bb77697 100644 (file)
@@ -497,7 +497,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) {
             wxMemoryBuffer buf(scn.length+1);
             buf.AppendData((void*)scn.text, scn.length);
             buf.AppendByte(0);
-            evt.SetText(wxString(buf, wxConvUTF8));
+            evt.SetText(stc2wx(buf));
         }
         evt.SetLength(scn.length);
         evt.SetLinesAdded(scn.linesAdded);
index 0e56b08abba2625b79dc23632846b4c47c99a41a..1243324bb94ffb534ac6997bf60a7be12cb29051 100644 (file)
@@ -381,6 +381,39 @@ typedef void (wxEvtHandler::*wxStyledTextEventFunction)(wxStyledTextEvent&);
 #endif
 
 //----------------------------------------------------------------------
+// Utility functions used within wxSTC
+
+#ifndef SWIG
+
+inline wxString stc2wx(const char* str) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8);
+#else
+    return wxString(str);
+#endif
+}
+
+inline wxString stc2wx(const char* str, size_t len) {
+#if wxUSE_UNICODE
+    return wxString(str, wxConvUTF8, len);
+#else
+    return wxString(str, len);
+#endif
+}
+
+#if wxUSE_UNICODE
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mb_str(wxConvUTF8);
+}
+#else
+inline const wxWX2MBbuf wx2stc(const wxString& str) {
+    return str.mbc_str();
+}
+#endif
+
+#endif
+
+
 //----------------------------------------------------------------------
 #endif