From 939fba6c17da245488a77a3f58e983180fc5de91 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sun, 14 Sep 2003 18:40:43 +0000 Subject: [PATCH] removal of pc-mac charset conversion for wxMac git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/app.h | 6 -- include/wx/filefn.h | 7 -- include/wx/mac/private.h | 79 -------------------- include/wx/wxchar.h | 9 +-- src/common/appbase.cpp | 4 - src/common/filefn.cpp | 23 +----- src/common/wxchar.cpp | 22 ------ src/generic/logg.cpp | 7 -- src/mac/app.cpp | 2 - src/mac/carbon/app.cpp | 2 - src/mac/carbon/choice.cpp | 3 +- src/mac/carbon/clipbrd.cpp | 21 ++---- src/mac/carbon/dc.cpp | 51 +++---------- src/mac/carbon/dnd.cpp | 4 +- src/mac/carbon/listbox.cpp | 5 +- src/mac/carbon/textctrl.cpp | 42 ++++++----- src/mac/carbon/tooltip.cpp | 2 +- src/mac/carbon/utils.cpp | 143 ++++-------------------------------- src/mac/choice.cpp | 3 +- src/mac/clipbrd.cpp | 21 ++---- src/mac/dc.cpp | 51 +++---------- src/mac/dnd.cpp | 4 +- src/mac/listbox.cpp | 5 +- src/mac/textctrl.cpp | 42 ++++++----- src/mac/tooltip.cpp | 2 +- src/mac/utils.cpp | 143 ++++-------------------------------- 26 files changed, 131 insertions(+), 572 deletions(-) diff --git a/include/wx/app.h b/include/wx/app.h index 477ce55e93..edd3eef488 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -291,12 +291,6 @@ public: int argc; wxChar **argv; -#ifdef __WXMAC__ - // This is needed in the wxAppConsole class because it is refereced from - // the wxBase library - static bool s_macDefaultEncodingIsPC ; -#endif - protected: // the function which creates the traits object when GetTraits() needs it // for the first time diff --git a/include/wx/filefn.h b/include/wx/filefn.h index 32ff8ffaf3..2acd4857c4 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -157,18 +157,11 @@ enum wxSeekMode WXDLLIMPEXP_BASE int wxStat( const wxChar *file_name, wxStructStat *buf ); WXDLLIMPEXP_BASE int wxAccess( const wxChar *pathname, int mode ); WXDLLIMPEXP_BASE int wxOpen( const wxChar *pathname, int flags, mode_t mode ); -#else -#if defined(__WXMAC__) && !defined(__DARWIN__) && !wxUSE_UNICODE -#include -WXDLLIMPEXP_BASE int wxStat( const wxChar *file_name, wxStructStat *buf ); -WXDLLIMPEXP_BASE int wxAccess( const wxChar *pathname, int mode ); -WXDLLIMPEXP_BASE int wxOpen( const wxChar *pathname, int flags, mode_t mode ); #else #define wxOpen open #define wxStat stat #define wxAccess access #endif -#endif #endif // VC++ diff --git a/include/wx/mac/private.h b/include/wx/mac/private.h index 5ebbdf1857..d909c2009b 100644 --- a/include/wx/mac/private.h +++ b/include/wx/mac/private.h @@ -161,11 +161,6 @@ void wxMacCleanupConverters() ; void wxMacStringToPascal( const wxString&from , StringPtr to ) ; wxString wxMacMakeStringFromPascal( ConstStringPtr from ) ; -wxCharBuffer wxMacStringToCString( const wxString &from ) ; -wxWCharBuffer wxMacStringToWString( const wxString &from ) ; -wxString wxMacMakeStringFromCString( const char * from , int len ) ; -wxString wxMacMakeStringFromCString( const char * from ) ; - #if TARGET_CARBON class wxMacCFStringHolder @@ -227,81 +222,7 @@ private: bool m_release ; } ; -// CFStringRef wxMacStringToCFString( const wxString &str ) ; -// wxString wxMacMakeStringFromCFString( CFStringRef cf ) ; #endif -#if 0 - -void wxMacConvertToPC( const char *from , char *to , int len ) ; -void wxMacConvertFromPC( const char *from , char *to , int len ) ; -void wxMacConvertToPC( const char *from , char *to , int len ) ; - -wxString wxMacMakeMacStringFromPC( const wxChar * p ) ; - -wxString wxMacMakePCStringFromMac( const wxChar * p ) ; - - -// converts this c string into a wxString with optional mac 2 pc encoding -wxString wxMacMakeStringFromMacString( const wxChar* from , bool mac2pcEncoding ) ; - -// converts this c string into a wxString with pc 2 mac encoding if s_macDefaultEncodingIsPC -inline wxString wxMacMakeStringFromMacString( const wxChar* from ) - { return wxMacMakeStringFromMacString( from , wxApp::s_macDefaultEncodingIsPC ) ; } - -#if wxUSE_UNICODE - -wxString wxMacMakeMacStringFromPC( const char * p ) ; - -wxString wxMacMakePCStringFromMac( const char * p ) ; - -// converts this c string into a wxString with optional mac 2 pc encoding -wxString wxMacMakeStringFromMacString( const char* from , bool mac2pcEncoding ) ; - -// converts this c string into a wxString with pc 2 mac encoding if s_macDefaultEncodingIsPC -inline wxString wxMacMakeStringFromMacString( const char* from ) - { return wxMacMakeStringFromMacString( from , wxApp::s_macDefaultEncodingIsPC ) ; } - -#endif - -// converts this c string into a wxString with pc 2 mac encoding if s_macDefaultEncodingIsPC -inline wxString wxMacMakeStringFromMacString( const wxString& from ) - { return wxApp::s_macDefaultEncodingIsPC ? - wxMacMakeStringFromMacString( from.c_str() , true ) : from ; } - -// -// Pascal Strings -// - -// converts this string into a pascal with optional pc 2 mac encoding -void wxMacStringToPascal( const wxChar * from , StringPtr to , bool pc2macEncoding ) ; - -// converts this string into a pascal with pc 2 mac encoding if s_macDefaultEncodingIsPC -inline void wxMacStringToPascal( const wxChar * from , StringPtr to ) - { wxMacStringToPascal( from , to , wxApp::s_macDefaultEncodingIsPC ) ; } - -// converts this string into a pascal with optional mac 2 pc encoding -wxString wxMacMakeStringFromPascal( ConstStringPtr from , bool mac2pcEncoding ) ; - -// converts this pascal string into a wxString with pc 2 mac encoding if s_macDefaultEncodingIsPC -inline wxString wxMacMakeStringFromPascal( ConstStringPtr from ) - { return wxMacMakeStringFromPascal( from , wxApp::s_macDefaultEncodingIsPC ) ; } - -// -// CFStringRefs (Carbon only) -// - -#if TARGET_CARBON -// converts this string into a carbon foundation string with optional pc 2 mac encoding -CFStringRef wxMacStringToCFString( const wxString &str , bool pc2macEncoding ) ; - -// converts this string into a carbon foundation string with optional pc 2 mac encoding -inline CFStringRef wxMacStringToCFString( const wxString &str ) - { return wxMacStringToCFString( str , wxApp::s_macDefaultEncodingIsPC ) ; } - -#endif //TARGET_CARBON - -#endif // 0 - #endif // _WX_PRIVATE_H_ diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 27148c595d..c2c2605bf2 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -580,18 +580,11 @@ #define wxStrxfrm strxfrm // stdio.h functions - #if defined(__WXMAC__) && !defined(__DARWIN__) && !wxUSE_UNICODE - #include - WXDLLIMPEXP_BASE FILE * wxFopen(const wxChar *path, const wxChar *mode); - WXDLLIMPEXP_BASE FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *stream); - WXDLLIMPEXP_BASE int wxRemove(const wxChar *path); - WXDLLIMPEXP_BASE int wxRename(const wxChar *oldpath, const wxChar *newpath); - #else #define wxFopen fopen #define wxFreopen freopen #define wxRemove remove #define wxRename rename - #endif + #define wxPerror perror #define wxTmpnam tmpnam diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp index 1ba660b4f3..51f2c8f1b6 100644 --- a/src/common/appbase.cpp +++ b/src/common/appbase.cpp @@ -93,10 +93,6 @@ wxAppConsole *wxAppConsole::ms_appInstance = NULL; wxAppInitializerFunction wxAppConsole::ms_appInitFn = NULL; -#ifdef __WXMAC__ -bool wxAppConsole::s_macDefaultEncodingIsPC = true ; -#endif - // ============================================================================ // wxAppConsole implementation // ============================================================================ diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index d26964413a..8c6e4a7204 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -196,25 +196,6 @@ const off_t wxInvalidOffset = (off_t)-1; // implementation // ============================================================================ -#if defined(__WXMAC__) && !defined(__DARWIN__) && !wxUSE_UNICODE - -WXDLLEXPORT int wxStat( const wxChar *file_name, wxStructStat *buf ) -{ - return stat( wxMacStringToCString( file_name ), buf ); -} - -WXDLLEXPORT int wxAccess( const wxChar *pathname, int mode ) -{ - return access( wxMacStringToCString( pathname ), mode ); -} - -WXDLLEXPORT int wxOpen( const wxChar *pathname, int flags, mode_t mode ) -{ - return open( wxMacStringToCString( pathname ), flags, mode ); -} - -#endif - #ifdef wxNEED_WX_UNISTD_H WXDLLEXPORT int wxStat( const wxChar *file_name, wxStructStat *buf ) @@ -991,7 +972,7 @@ wxString wxMacFSSpec2MacFilename( const FSSpec *spec ) (*myPath)[length-1] = 0 ; // create path string for return value - wxString result = wxMacMakeStringFromCString( *myPath ) ; + wxString result( *myPath , wxConvLocal) ; // free allocated handle ::HUnlock( myPath ) ; @@ -1037,7 +1018,7 @@ void wxMacFilename2FSSpec( const char *path , FSSpec *spec ) #if wxUSE_UNICODE WXDLLEXPORT void wxMacFilename2FSSpec( const wxChar *path , FSSpec *spec ) { - return wxMacFilename2FSSpec( wxMacStringToCString( wxString( path ) ) , spec ) ; + return wxMacFilename2FSSpec( wxConvFile.cWC2MB(path) , spec ) ; } #endif diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index 230a9338ac..11233ff4fd 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -1205,28 +1205,6 @@ WXDLLEXPORT long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base) } #endif // wxNEED_WX_STRING_H -#if defined(__WXMAC__) && !defined(__DARWIN__) && !wxUSE_UNICODE -WXDLLEXPORT FILE * wxFopen(const wxChar *path, const wxChar *mode) -{ - return fopen( wxMacStringToCString(path), mode ); -} - -WXDLLEXPORT FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *stream) -{ - return freopen( wxMacStringToCString(path), mode, stream ); -} - -WXDLLEXPORT int wxRemove(const wxChar *path) -{ - return remove( wxMacStringToCString(path) ); -} - -WXDLLEXPORT int wxRename(const wxChar *oldpath, const wxChar *newpath) -{ - return rename( wxMacStringToCString(oldpath), wxMacStringToCString(newpath) ); -} -#endif - #ifdef wxNEED_WX_STDIO_H WXDLLEXPORT FILE * wxFopen(const wxChar *path, const wxChar *mode) { diff --git a/src/generic/logg.cpp b/src/generic/logg.cpp index ca78f51f9e..daea3accf7 100644 --- a/src/generic/logg.cpp +++ b/src/generic/logg.cpp @@ -1171,14 +1171,7 @@ void wxLogTextCtrl::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) wxString msg; TimeStamp(&msg); -#if defined(__WXMAC__) - // VZ: this is a bug in wxMac, it *must* accept '\n' as new line, the - // translation must be done in wxTextCtrl, not here! (FIXME) - msg << szString << wxT('\r'); -#else msg << szString << wxT('\n'); -#endif - m_pTextCtrl->AppendText(msg); } diff --git a/src/mac/app.cpp b/src/mac/app.cpp index 9b891f5fa4..90ff659bcb 100644 --- a/src/mac/app.cpp +++ b/src/mac/app.cpp @@ -600,7 +600,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv) #endif #endif - wxMacSetupConverters() ; s_macCursorRgn = ::NewRgn() ; @@ -702,7 +701,6 @@ void wxApp::CleanUp() // __wxterminate in Mach-O shared libraries wxStAppResource::CloseSharedLibraryResource(); #endif - wxMacCleanupConverters() ; UMACleanupToolbox() ; if (s_macCursorRgn) { diff --git a/src/mac/carbon/app.cpp b/src/mac/carbon/app.cpp index 9b891f5fa4..90ff659bcb 100644 --- a/src/mac/carbon/app.cpp +++ b/src/mac/carbon/app.cpp @@ -600,7 +600,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv) #endif #endif - wxMacSetupConverters() ; s_macCursorRgn = ::NewRgn() ; @@ -702,7 +701,6 @@ void wxApp::CleanUp() // __wxterminate in Mach-O shared libraries wxStAppResource::CloseSharedLibraryResource(); #endif - wxMacCleanupConverters() ; UMACleanupToolbox() ; if (s_macCursorRgn) { diff --git a/src/mac/carbon/choice.cpp b/src/mac/carbon/choice.cpp index c130d3798a..c963dcad32 100644 --- a/src/mac/carbon/choice.cpp +++ b/src/mac/carbon/choice.cpp @@ -272,8 +272,7 @@ wxSize wxChoice::DoGetBestSize() const &baseline ); wLine = bounds.h ; #else - wxCharBuffer text = wxMacStringToCString( str ) ; - wLine = ::TextWidth( text , 0 , strlen(text) ) ; + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; #endif lbWidth = wxMax(lbWidth, wLine); } diff --git a/src/mac/carbon/clipbrd.cpp b/src/mac/carbon/clipbrd.cpp index d7a5b8bc52..5ef8fdb107 100644 --- a/src/mac/carbon/clipbrd.cpp +++ b/src/mac/carbon/clipbrd.cpp @@ -136,18 +136,14 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) return NULL ; } - if ( dataFormat.GetType() == wxDF_TEXT && wxApp::s_macDefaultEncodingIsPC ) + if ( dataFormat.GetType() == wxDF_TEXT ) { - wxString st = wxMacMakeStringFromCString( (char*) data ) ; -#if wxUSE_UNICODE - wxCharBuffer buf = st.ToAscii() ; -#else - const char* buf = st ; -#endif - char* newdata = new char[strlen(buf)+1] ; - memcpy( newdata , buf , strlen(buf)+1 ) ; - delete[] ((char*) data ) ; - data = newdata ; + char * buf = (char*) data ; + while( (buf=strchr(buf,0x0a)) != NULL ) + { + *buf = 13 ; + buf++ ; + } } return data; @@ -252,8 +248,7 @@ bool wxClipboard::AddData( wxDataObject *data ) case wxDF_OEMTEXT: { wxTextDataObject* textDataObject = (wxTextDataObject*) data; - wxString str(textDataObject->GetText()); - wxCharBuffer buf = wxMacStringToCString( str ) ; + wxCharBuffer buf = textDataObject->GetText().mb_str() ; err = UMAPutScrap( strlen(buf) , kScrapFlavorTypeText , (void*) buf.data() ) ; } break ; diff --git a/src/mac/carbon/dc.cpp b/src/mac/carbon/dc.cpp index edfaa69506..9285b2006a 100644 --- a/src/mac/carbon/dc.cpp +++ b/src/mac/carbon/dc.cpp @@ -55,6 +55,8 @@ const double RAD2DEG = 180.0 / M_PI; const short kEmulatedMode = -1 ; const short kUnsupportedMode = -2 ; +extern TECObjectRef s_TECNativeCToUnicode ; + // set to 0 if problems arise #define wxMAC_EXPERIMENTAL_DC 1 @@ -1353,24 +1355,9 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) (const wxChar*) str , 0 , str.Length() , str.Length() , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; #else - TECObjectRef ec; - status = TECCreateConverter(&ec, - wxApp::s_macDefaultEncodingIsPC - ? (int)kTextEncodingWindowsLatin1 - : (int)kTextEncodingMacRoman, - kTextEncodingUnicodeDefault); - - wxASSERT_MSG( status == noErr , wxT("couldn't start converter") ) ; - ByteCount byteOutLen ; - ByteCount byteInLen = str.Length() ; - ByteCount byteBufferLen = byteInLen *2 ; - char* buf = new char[byteBufferLen] ; - status = TECConvertText(ec, (ConstTextPtr)str.c_str() , byteInLen, &byteInLen, - (TextPtr)buf, byteBufferLen, &byteOutLen); - wxASSERT_MSG( status == noErr , wxT("couldn't convert text") ) ; - status = TECDisposeConverter(ec); - wxASSERT_MSG( status == noErr , wxT("couldn't dispose converter") ) ; - status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) buf , 0 , byteOutLen / 2 , byteOutLen / 2 , 1 , + wxWCharBuffer wchar = str.wc_str( wxConvLocal ) ; + int wlen = wxWcslen( wchar.data() ) ; + status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) wchar.data() , 0 , wlen , wlen , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; #endif wxASSERT_MSG( status == noErr , wxT("couldn't create the layout of the rotated text") ); @@ -1418,10 +1405,6 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, CalcBoundingBox(XDEV2LOG(rect.left), YDEV2LOG(rect.top) ); CalcBoundingBox(XDEV2LOG(rect.right), YDEV2LOG(rect.bottom) ); ::ATSUDisposeTextLayout(atsuLayout); -#if wxUSE_UNICODE -#else - delete[] buf ; -#endif } void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) @@ -1501,7 +1484,7 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; ::DrawText( text , 0 , strlen(text) ) ; line++ ; ::MoveTo( xx , yy + line*(fi.descent + fi.ascent + fi.leading) ); @@ -1543,7 +1526,7 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; ::DrawText( text , 0 , strlen(text) ) ; } } @@ -1583,21 +1566,7 @@ void wxDC::DoGetTextExtent( const wxString &strtext, wxCoord *width, wxCoord *h if ( externalLeading ) *externalLeading = YDEV2LOGREL( fi.leading ) ; int length = strtext.Length() ; - /* - const char *text = NULL ; - wxString macText ; - if ( wxApp::s_macDefaultEncodingIsPC ) - { - macText = wxMacMakeMacStringFromPC( string ) ; - text = macText ; - length = macText.Length() ; - } - else - { - text = string ; - length = string.Length() ; - } - */ + int laststop = 0 ; int i = 0 ; int curwidth = 0 ; @@ -1628,7 +1597,7 @@ void wxDC::DoGetTextExtent( const wxString &strtext, wxCoord *width, wxCoord *h else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; curwidth = ::TextWidth( text , 0 , strlen(text) ) ; } if ( curwidth > *width ) @@ -1656,7 +1625,7 @@ void wxDC::DoGetTextExtent( const wxString &strtext, wxCoord *width, wxCoord *h else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; curwidth = ::TextWidth( text , 0 , strlen(text) ) ; } if ( curwidth > *width ) diff --git a/src/mac/carbon/dnd.cpp b/src/mac/carbon/dnd.cpp index 8372417d08..22ced39ede 100644 --- a/src/mac/carbon/dnd.cpp +++ b/src/mac/carbon/dnd.cpp @@ -206,7 +206,7 @@ bool wxDropTarget::GetData() if( theType == 'TEXT' ) { theData[dataSize]=0 ; - wxString convert = wxMacMakeStringFromCString( theData ) ; + wxString convert( theData , wxConvLocal ) ; m_dataObject->SetData( format, convert.Length() * sizeof(wxChar), (const wxChar*) convert ); } else if ( theType == kDragFlavorTypeHFS ) @@ -302,7 +302,7 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) dataSize-- ; dataPtr[ dataSize ] = 0 ; wxString st( (wxChar*) dataPtr ) ; - wxCharBuffer buf = wxMacStringToCString( st ) ; + wxCharBuffer buf = st.mb_str( wxConvLocal) ; AddDragItemFlavor(theDrag, theItem, type , buf.data(), strlen(buf), 0); } else if (type == kDragFlavorTypeHFS ) diff --git a/src/mac/carbon/listbox.cpp b/src/mac/carbon/listbox.cpp index d5c590caeb..b72970b0c2 100644 --- a/src/mac/carbon/listbox.cpp +++ b/src/mac/carbon/listbox.cpp @@ -137,7 +137,7 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect } #else { - wxCharBuffer text = wxMacStringToCString( linetext ) ; + wxCharBuffer text = linetext.mb_str( wxConvLocal) ; MoveTo(drawRect->left + 4 , drawRect->top + 10 ); DrawText(text, 0 , strlen(text) ); } @@ -633,8 +633,7 @@ wxSize wxListBox::DoGetBestSize() const &baseline ); wLine = bounds.h ; #else - wxCharBuffer text = wxMacStringToCString( str ) ; - wLine = ::TextWidth( text , 0 , strlen(text) ) ; + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; #endif lbWidth = wxMax(lbWidth, wLine); } diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index 50daa9708f..e86d3299a3 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -687,7 +687,7 @@ const short kVerticalMargin = 2 ; const short kHorizontalMargin = 2 ; bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& st, + const wxString& str, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, @@ -747,6 +747,8 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, m_editable = FALSE ; } + wxString st = str ; + st.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , false , 0 , 0 , 1, @@ -771,7 +773,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, if ( !m_macUsesTXN ) { - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , strlen(text) , text ) ; } else @@ -785,7 +787,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, TXNSetData( ((TXNObject) m_macTXN) , kTXNUnicodeTextData, (void*)st.wc_str(), st.Length() * 2, kTXNStartOffset, kTXNEndOffset); #else - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TXNSetData( ((TXNObject) m_macTXN) , kTXNTextData, (void*)text.data(), strlen( text ) , kTXNStartOffset, kTXNEndOffset); #endif @@ -817,7 +819,7 @@ wxString wxTextCtrl::GetValue() const ::GetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, actualSize , buf.data() , &actualSize ) ; - result = wxMacMakeStringFromCString( buf ) ; + result = wxString( buf , wxConvLocal) ; } } else @@ -856,14 +858,14 @@ wxString wxTextCtrl::GetValue() const if ( actualSize > 0 ) { HLock( theText ) ; - result = wxMacMakeStringFromCString( *theText , actualSize ) ; + result = wxString( *theText , wxConvLocal , actualSize ) ; HUnlock( theText ) ; } DisposeHandle( theText ) ; } #endif } - + result.Replace(wxT("\r"),wxT("\n")) ; return result ; } @@ -880,11 +882,13 @@ void wxTextCtrl::GetSelection(long* from, long* to) const } } -void wxTextCtrl::SetValue(const wxString& st) +void wxTextCtrl::SetValue(const wxString& str) { + wxString st = str ; + st.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , strlen(text) , text ) ; } else @@ -896,7 +900,7 @@ void wxTextCtrl::SetValue(const wxString& st) TXNSetData( ((TXNObject) m_macTXN), kTXNUnicodeTextData, (void*)st.wc_str(), st.Length() * 2 , kTXNStartOffset, kTXNEndOffset); #else - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)text.data(), strlen( text ) , kTXNStartOffset, kTXNEndOffset); #endif @@ -1167,8 +1171,10 @@ long wxTextCtrl::GetLastPosition() const } } -void wxTextCtrl::Replace(long from, long to, const wxString& value) +void wxTextCtrl::Replace(long from, long to, const wxString& str) { + wxString value = str ; + value.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { ControlEditTextSelectionRec selection ; @@ -1270,11 +1276,13 @@ bool wxTextCtrl::LoadFile(const wxString& file) return FALSE; } -void wxTextCtrl::WriteText(const wxString& st) +void wxTextCtrl::WriteText(const wxString& str) { + wxString st = str ; + st.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TEInsert( text , strlen(text) , ((TEHandle) m_macTE) ) ; } else @@ -1288,7 +1296,7 @@ void wxTextCtrl::WriteText(const wxString& st) TXNSetData( ((TXNObject) m_macTXN), kTXNUnicodeTextData, (void*)st.wc_str(), st.Length() * 2 , kTXNUseCurrentSelection, kTXNUseCurrentSelection); #else - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)text.data(), strlen( text ) , kTXNUseCurrentSelection, kTXNUseCurrentSelection); #endif @@ -1477,12 +1485,12 @@ int wxTextCtrl::GetLineLength(long lineNo) const for (size_t j = i; j < content.Length(); j++) { count++; - if (content[j] == '\r') return count; + if (content[j] == '\n') return count; } return count; } - if (content[i] == '\r') count++; + if (content[i] == '\n') count++; } return 0; } @@ -1503,7 +1511,7 @@ wxString wxTextCtrl::GetLineText(long lineNo) const for (size_t j = i; j < content.Length(); j++) { - if (content[j] == '\r') + if (content[j] == '\n') return tmp; tmp += content[j]; @@ -1511,7 +1519,7 @@ wxString wxTextCtrl::GetLineText(long lineNo) const return tmp; } - if (content[i] == '\r') count++; + if (content[i] == '\n') count++; } return wxEmptyString ; } diff --git a/src/mac/carbon/tooltip.cpp b/src/mac/carbon/tooltip.cpp index 042a6f2c35..3334d6b70b 100644 --- a/src/mac/carbon/tooltip.cpp +++ b/src/mac/carbon/tooltip.cpp @@ -262,7 +262,7 @@ void wxMacToolTip::Draw() int width = 0 ; int thiswidth = 0 ; int laststop = 0 ; - wxCharBuffer text = wxMacStringToCString( m_label ) ; + wxCharBuffer text = m_label.mb_str( wxConvLocal) ; while( i < length ) { diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index 377d61880d..16f91e18e3 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -546,6 +546,8 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) // wxMac Specific utility functions //--------------------------------------------------------------------------- +#if 0 + char StringMac[] = "\x0d\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xae\xaf" @@ -632,17 +634,17 @@ void wxMacConvertToPC( const char *from , char *to , int len ) TECObjectRef s_TECNativeCToUnicode = NULL ; TECObjectRef s_TECUnicodeToNativeC = NULL ; -TECObjectRef s_TECPlatformToNativeC = NULL ; -TECObjectRef s_TECNativeCToPlatform = NULL ; + void wxMacSetupConverters() { // if we assume errors are happening here we need low level debugging // since the high level assert will use the encoders that are not yet // setup... - const int kEncoding = wxApp::s_macDefaultEncodingIsPC - ? (int)kTextEncodingWindowsLatin1 - : (int)kTextEncodingMacRoman; - +#if TARGET_CARBON + const TextEncodingBase kEncoding = CFStringGetSystemEncoding(); +#else + const TextEncodingBase kEncoding = kTextEncodingMacRoman; +#endif OSStatus status = noErr ; status = TECCreateConverter(&s_TECNativeCToUnicode, kEncoding, @@ -652,18 +654,6 @@ void wxMacSetupConverters() status = TECCreateConverter(&s_TECUnicodeToNativeC, kTextEncodingUnicodeDefault, kEncoding); - - if ( wxApp::s_macDefaultEncodingIsPC ) - { - status = TECCreateConverter(&s_TECPlatformToNativeC, - kTextEncodingMacRoman, - kTextEncodingWindowsLatin1); - - - status = TECCreateConverter(&s_TECNativeCToPlatform, - kTextEncodingWindowsLatin1, - kTextEncodingMacRoman); - } } void wxMacCleanupConverters() @@ -672,10 +662,6 @@ void wxMacCleanupConverters() status = TECDisposeConverter(s_TECNativeCToUnicode); status = TECDisposeConverter(s_TECUnicodeToNativeC); - - status = TECDisposeConverter(s_TECPlatformToNativeC); - - status = TECDisposeConverter(s_TECNativeCToPlatform); } wxWCharBuffer wxMacStringToWString( const wxString &from ) @@ -709,17 +695,7 @@ wxString wxMacMakeStringFromCString( const char * from , int len ) status = TECConvertText(s_TECNativeCToUnicode, (ConstTextPtr)from , byteInLen, &byteInLen, (TextPtr)buf, byteBufferLen, &byteOutLen); #else - if ( !wxApp::s_macDefaultEncodingIsPC ) - memcpy( buf , from , len ) ; - else - { - ByteCount byteOutLen ; - ByteCount byteInLen = len ; - ByteCount byteBufferLen = byteInLen ; - - status = TECConvertText(s_TECPlatformToNativeC, (ConstTextPtr)from , byteInLen, &byteInLen, - (TextPtr)buf, byteBufferLen, &byteOutLen); - } + memcpy( buf , from , len ) ; #endif buf[len] = 0 ; result.UngetWriteBuf() ; @@ -743,26 +719,14 @@ wxCharBuffer wxMacStringToCString( const wxString &from ) (TextPtr)result.data(), byteBufferLen, &byteOutLen); return result ; #else - if ( !wxApp::s_macDefaultEncodingIsPC ) - return wxCharBuffer( from.c_str() ) ; - else - { - wxCharBuffer result( from.Length() ) ; - OSStatus status = noErr ; - ByteCount byteOutLen ; - ByteCount byteInLen = from.Length() ; - ByteCount byteBufferLen = byteInLen ; - - status = TECConvertText(s_TECNativeCToPlatform, (ConstTextPtr)from.c_str() , byteInLen, &byteInLen, - (TextPtr)result.data(), byteBufferLen, &byteOutLen); - return result ; - } + return wxCharBuffer( from.c_str() ) ; #endif } +#endif void wxMacStringToPascal( const wxString&from , StringPtr to ) { - wxCharBuffer buf = wxMacStringToCString( from ) ; + wxCharBuffer buf = from.mb_str( wxConvLocal ) ; int len = strlen(buf) ; if ( len > 255 ) @@ -773,7 +737,7 @@ void wxMacStringToPascal( const wxString&from , StringPtr to ) wxString wxMacMakeStringFromPascal( ConstStringPtr from ) { - return wxMacMakeStringFromCString( (char*) &from[1] , from[0] ) ; + return wxString( (char*) &from[1] , wxConvLocal , from[0] ) ; } #endif // wxUSE_BASE @@ -794,8 +758,7 @@ void wxMacCFStringHolder::Assign( const wxString &str ) (const unsigned short*)str.wc_str(), str.Len() ); #else m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() , - wxApp::s_macDefaultEncodingIsPC ? - kCFStringEncodingWindowsLatin1 : CFStringGetSystemEncoding() ) ; + CFStringGetSystemEncoding() ) ; #endif m_release = true ; } @@ -808,89 +771,13 @@ wxString wxMacCFStringHolder::AsString() #if wxUSE_UNICODE CFStringGetCharacters( m_cfs , CFRangeMake( 0 , len ) , (UniChar*) buf ) ; #else - CFStringGetCString( m_cfs , buf , len+1 , wxApp::s_macDefaultEncodingIsPC ? - kCFStringEncodingWindowsLatin1 : CFStringGetSystemEncoding() ) ; + CFStringGetCString( m_cfs , buf , len+1 , CFStringGetSystemEncoding() ) ; #endif buf[len] = 0 ; result.UngetWriteBuf() ; return result ; } -#if 0 - -wxString wxMacMakeMacStringFromPC( const wxChar * p ) -{ - wxString result ; - int len = wxStrlen ( p ) ; - if ( len > 0 ) - { - wxChar* ptr = result.GetWriteBuf(len) ; - wxMacConvertFromPC( p , ptr , len ) ; - ptr[len] = 0 ; - result.UngetWriteBuf( len ) ; - } - return result ; -} - -wxString wxMacMakePCStringFromMac( const wxChar * p ) -{ - wxString result ; - int len = wxStrlen ( p ) ; - if ( len > 0 ) - { - wxChar* ptr = result.GetWriteBuf(len) ; - wxMacConvertToPC( p , ptr , len ) ; - ptr[len] = 0 ; - result.UngetWriteBuf( len ) ; - } - return result ; -} - -wxString wxMacMakeStringFromMacString( const wxChar* from , bool mac2pcEncoding ) -{ - if (mac2pcEncoding) - { - return wxMacMakePCStringFromMac( from ) ; - } - else - { - return wxString( from ) ; - } -} - -// -// Pascal Strings -// - -wxString wxMacMakeStringFromPascal( ConstStringPtr from , bool mac2pcEncoding ) -{ - // this is safe since a pascal string can never be larger than 256 bytes - char s[256] ; - CopyPascalStringToC( from , s ) ; - if (mac2pcEncoding) - { - return wxMacMakePCStringFromMac( s ) ; - } - else - { - return wxString( s ) ; - } -} - -void wxMacStringToPascal( const wxChar * from , StringPtr to , bool pc2macEncoding ) -{ - if (pc2macEncoding) - { - CopyCStringToPascal( wxMacMakeMacStringFromPC( from ) , to ) ; - } - else - { - CopyCStringToPascal( from , to ) ; - } -} -#endif - - #endif //TARGET_CARBON // ---------------------------------------------------------------------------- diff --git a/src/mac/choice.cpp b/src/mac/choice.cpp index c130d3798a..c963dcad32 100644 --- a/src/mac/choice.cpp +++ b/src/mac/choice.cpp @@ -272,8 +272,7 @@ wxSize wxChoice::DoGetBestSize() const &baseline ); wLine = bounds.h ; #else - wxCharBuffer text = wxMacStringToCString( str ) ; - wLine = ::TextWidth( text , 0 , strlen(text) ) ; + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; #endif lbWidth = wxMax(lbWidth, wLine); } diff --git a/src/mac/clipbrd.cpp b/src/mac/clipbrd.cpp index d7a5b8bc52..5ef8fdb107 100644 --- a/src/mac/clipbrd.cpp +++ b/src/mac/clipbrd.cpp @@ -136,18 +136,14 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) return NULL ; } - if ( dataFormat.GetType() == wxDF_TEXT && wxApp::s_macDefaultEncodingIsPC ) + if ( dataFormat.GetType() == wxDF_TEXT ) { - wxString st = wxMacMakeStringFromCString( (char*) data ) ; -#if wxUSE_UNICODE - wxCharBuffer buf = st.ToAscii() ; -#else - const char* buf = st ; -#endif - char* newdata = new char[strlen(buf)+1] ; - memcpy( newdata , buf , strlen(buf)+1 ) ; - delete[] ((char*) data ) ; - data = newdata ; + char * buf = (char*) data ; + while( (buf=strchr(buf,0x0a)) != NULL ) + { + *buf = 13 ; + buf++ ; + } } return data; @@ -252,8 +248,7 @@ bool wxClipboard::AddData( wxDataObject *data ) case wxDF_OEMTEXT: { wxTextDataObject* textDataObject = (wxTextDataObject*) data; - wxString str(textDataObject->GetText()); - wxCharBuffer buf = wxMacStringToCString( str ) ; + wxCharBuffer buf = textDataObject->GetText().mb_str() ; err = UMAPutScrap( strlen(buf) , kScrapFlavorTypeText , (void*) buf.data() ) ; } break ; diff --git a/src/mac/dc.cpp b/src/mac/dc.cpp index edfaa69506..9285b2006a 100644 --- a/src/mac/dc.cpp +++ b/src/mac/dc.cpp @@ -55,6 +55,8 @@ const double RAD2DEG = 180.0 / M_PI; const short kEmulatedMode = -1 ; const short kUnsupportedMode = -2 ; +extern TECObjectRef s_TECNativeCToUnicode ; + // set to 0 if problems arise #define wxMAC_EXPERIMENTAL_DC 1 @@ -1353,24 +1355,9 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) (const wxChar*) str , 0 , str.Length() , str.Length() , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; #else - TECObjectRef ec; - status = TECCreateConverter(&ec, - wxApp::s_macDefaultEncodingIsPC - ? (int)kTextEncodingWindowsLatin1 - : (int)kTextEncodingMacRoman, - kTextEncodingUnicodeDefault); - - wxASSERT_MSG( status == noErr , wxT("couldn't start converter") ) ; - ByteCount byteOutLen ; - ByteCount byteInLen = str.Length() ; - ByteCount byteBufferLen = byteInLen *2 ; - char* buf = new char[byteBufferLen] ; - status = TECConvertText(ec, (ConstTextPtr)str.c_str() , byteInLen, &byteInLen, - (TextPtr)buf, byteBufferLen, &byteOutLen); - wxASSERT_MSG( status == noErr , wxT("couldn't convert text") ) ; - status = TECDisposeConverter(ec); - wxASSERT_MSG( status == noErr , wxT("couldn't dispose converter") ) ; - status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) buf , 0 , byteOutLen / 2 , byteOutLen / 2 , 1 , + wxWCharBuffer wchar = str.wc_str( wxConvLocal ) ; + int wlen = wxWcslen( wchar.data() ) ; + status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) wchar.data() , 0 , wlen , wlen , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; #endif wxASSERT_MSG( status == noErr , wxT("couldn't create the layout of the rotated text") ); @@ -1418,10 +1405,6 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, CalcBoundingBox(XDEV2LOG(rect.left), YDEV2LOG(rect.top) ); CalcBoundingBox(XDEV2LOG(rect.right), YDEV2LOG(rect.bottom) ); ::ATSUDisposeTextLayout(atsuLayout); -#if wxUSE_UNICODE -#else - delete[] buf ; -#endif } void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) @@ -1501,7 +1484,7 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; ::DrawText( text , 0 , strlen(text) ) ; line++ ; ::MoveTo( xx , yy + line*(fi.descent + fi.ascent + fi.leading) ); @@ -1543,7 +1526,7 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; ::DrawText( text , 0 , strlen(text) ) ; } } @@ -1583,21 +1566,7 @@ void wxDC::DoGetTextExtent( const wxString &strtext, wxCoord *width, wxCoord *h if ( externalLeading ) *externalLeading = YDEV2LOGREL( fi.leading ) ; int length = strtext.Length() ; - /* - const char *text = NULL ; - wxString macText ; - if ( wxApp::s_macDefaultEncodingIsPC ) - { - macText = wxMacMakeMacStringFromPC( string ) ; - text = macText ; - length = macText.Length() ; - } - else - { - text = string ; - length = string.Length() ; - } - */ + int laststop = 0 ; int i = 0 ; int curwidth = 0 ; @@ -1628,7 +1597,7 @@ void wxDC::DoGetTextExtent( const wxString &strtext, wxCoord *width, wxCoord *h else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; curwidth = ::TextWidth( text , 0 , strlen(text) ) ; } if ( curwidth > *width ) @@ -1656,7 +1625,7 @@ void wxDC::DoGetTextExtent( const wxString &strtext, wxCoord *width, wxCoord *h else #endif { - wxCharBuffer text = wxMacStringToCString(linetext) ; + wxCharBuffer text = linetext.mb_str(wxConvLocal) ; curwidth = ::TextWidth( text , 0 , strlen(text) ) ; } if ( curwidth > *width ) diff --git a/src/mac/dnd.cpp b/src/mac/dnd.cpp index 8372417d08..22ced39ede 100644 --- a/src/mac/dnd.cpp +++ b/src/mac/dnd.cpp @@ -206,7 +206,7 @@ bool wxDropTarget::GetData() if( theType == 'TEXT' ) { theData[dataSize]=0 ; - wxString convert = wxMacMakeStringFromCString( theData ) ; + wxString convert( theData , wxConvLocal ) ; m_dataObject->SetData( format, convert.Length() * sizeof(wxChar), (const wxChar*) convert ); } else if ( theType == kDragFlavorTypeHFS ) @@ -302,7 +302,7 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) dataSize-- ; dataPtr[ dataSize ] = 0 ; wxString st( (wxChar*) dataPtr ) ; - wxCharBuffer buf = wxMacStringToCString( st ) ; + wxCharBuffer buf = st.mb_str( wxConvLocal) ; AddDragItemFlavor(theDrag, theItem, type , buf.data(), strlen(buf), 0); } else if (type == kDragFlavorTypeHFS ) diff --git a/src/mac/listbox.cpp b/src/mac/listbox.cpp index d5c590caeb..b72970b0c2 100644 --- a/src/mac/listbox.cpp +++ b/src/mac/listbox.cpp @@ -137,7 +137,7 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect } #else { - wxCharBuffer text = wxMacStringToCString( linetext ) ; + wxCharBuffer text = linetext.mb_str( wxConvLocal) ; MoveTo(drawRect->left + 4 , drawRect->top + 10 ); DrawText(text, 0 , strlen(text) ); } @@ -633,8 +633,7 @@ wxSize wxListBox::DoGetBestSize() const &baseline ); wLine = bounds.h ; #else - wxCharBuffer text = wxMacStringToCString( str ) ; - wLine = ::TextWidth( text , 0 , strlen(text) ) ; + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; #endif lbWidth = wxMax(lbWidth, wLine); } diff --git a/src/mac/textctrl.cpp b/src/mac/textctrl.cpp index 50daa9708f..e86d3299a3 100644 --- a/src/mac/textctrl.cpp +++ b/src/mac/textctrl.cpp @@ -687,7 +687,7 @@ const short kVerticalMargin = 2 ; const short kHorizontalMargin = 2 ; bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& st, + const wxString& str, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, @@ -747,6 +747,8 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, m_editable = FALSE ; } + wxString st = str ; + st.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , false , 0 , 0 , 1, @@ -771,7 +773,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, if ( !m_macUsesTXN ) { - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , strlen(text) , text ) ; } else @@ -785,7 +787,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, TXNSetData( ((TXNObject) m_macTXN) , kTXNUnicodeTextData, (void*)st.wc_str(), st.Length() * 2, kTXNStartOffset, kTXNEndOffset); #else - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TXNSetData( ((TXNObject) m_macTXN) , kTXNTextData, (void*)text.data(), strlen( text ) , kTXNStartOffset, kTXNEndOffset); #endif @@ -817,7 +819,7 @@ wxString wxTextCtrl::GetValue() const ::GetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, actualSize , buf.data() , &actualSize ) ; - result = wxMacMakeStringFromCString( buf ) ; + result = wxString( buf , wxConvLocal) ; } } else @@ -856,14 +858,14 @@ wxString wxTextCtrl::GetValue() const if ( actualSize > 0 ) { HLock( theText ) ; - result = wxMacMakeStringFromCString( *theText , actualSize ) ; + result = wxString( *theText , wxConvLocal , actualSize ) ; HUnlock( theText ) ; } DisposeHandle( theText ) ; } #endif } - + result.Replace(wxT("\r"),wxT("\n")) ; return result ; } @@ -880,11 +882,13 @@ void wxTextCtrl::GetSelection(long* from, long* to) const } } -void wxTextCtrl::SetValue(const wxString& st) +void wxTextCtrl::SetValue(const wxString& str) { + wxString st = str ; + st.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , strlen(text) , text ) ; } else @@ -896,7 +900,7 @@ void wxTextCtrl::SetValue(const wxString& st) TXNSetData( ((TXNObject) m_macTXN), kTXNUnicodeTextData, (void*)st.wc_str(), st.Length() * 2 , kTXNStartOffset, kTXNEndOffset); #else - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)text.data(), strlen( text ) , kTXNStartOffset, kTXNEndOffset); #endif @@ -1167,8 +1171,10 @@ long wxTextCtrl::GetLastPosition() const } } -void wxTextCtrl::Replace(long from, long to, const wxString& value) +void wxTextCtrl::Replace(long from, long to, const wxString& str) { + wxString value = str ; + value.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { ControlEditTextSelectionRec selection ; @@ -1270,11 +1276,13 @@ bool wxTextCtrl::LoadFile(const wxString& file) return FALSE; } -void wxTextCtrl::WriteText(const wxString& st) +void wxTextCtrl::WriteText(const wxString& str) { + wxString st = str ; + st.Replace(wxT("\n"), wxT("\r")); if ( !m_macUsesTXN ) { - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TEInsert( text , strlen(text) , ((TEHandle) m_macTE) ) ; } else @@ -1288,7 +1296,7 @@ void wxTextCtrl::WriteText(const wxString& st) TXNSetData( ((TXNObject) m_macTXN), kTXNUnicodeTextData, (void*)st.wc_str(), st.Length() * 2 , kTXNUseCurrentSelection, kTXNUseCurrentSelection); #else - wxCharBuffer text = wxMacStringToCString( st ) ; + wxCharBuffer text = st.mb_str(wxConvLocal) ; TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)text.data(), strlen( text ) , kTXNUseCurrentSelection, kTXNUseCurrentSelection); #endif @@ -1477,12 +1485,12 @@ int wxTextCtrl::GetLineLength(long lineNo) const for (size_t j = i; j < content.Length(); j++) { count++; - if (content[j] == '\r') return count; + if (content[j] == '\n') return count; } return count; } - if (content[i] == '\r') count++; + if (content[i] == '\n') count++; } return 0; } @@ -1503,7 +1511,7 @@ wxString wxTextCtrl::GetLineText(long lineNo) const for (size_t j = i; j < content.Length(); j++) { - if (content[j] == '\r') + if (content[j] == '\n') return tmp; tmp += content[j]; @@ -1511,7 +1519,7 @@ wxString wxTextCtrl::GetLineText(long lineNo) const return tmp; } - if (content[i] == '\r') count++; + if (content[i] == '\n') count++; } return wxEmptyString ; } diff --git a/src/mac/tooltip.cpp b/src/mac/tooltip.cpp index 042a6f2c35..3334d6b70b 100644 --- a/src/mac/tooltip.cpp +++ b/src/mac/tooltip.cpp @@ -262,7 +262,7 @@ void wxMacToolTip::Draw() int width = 0 ; int thiswidth = 0 ; int laststop = 0 ; - wxCharBuffer text = wxMacStringToCString( m_label ) ; + wxCharBuffer text = m_label.mb_str( wxConvLocal) ; while( i < length ) { diff --git a/src/mac/utils.cpp b/src/mac/utils.cpp index 377d61880d..16f91e18e3 100644 --- a/src/mac/utils.cpp +++ b/src/mac/utils.cpp @@ -546,6 +546,8 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) // wxMac Specific utility functions //--------------------------------------------------------------------------- +#if 0 + char StringMac[] = "\x0d\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xae\xaf" @@ -632,17 +634,17 @@ void wxMacConvertToPC( const char *from , char *to , int len ) TECObjectRef s_TECNativeCToUnicode = NULL ; TECObjectRef s_TECUnicodeToNativeC = NULL ; -TECObjectRef s_TECPlatformToNativeC = NULL ; -TECObjectRef s_TECNativeCToPlatform = NULL ; + void wxMacSetupConverters() { // if we assume errors are happening here we need low level debugging // since the high level assert will use the encoders that are not yet // setup... - const int kEncoding = wxApp::s_macDefaultEncodingIsPC - ? (int)kTextEncodingWindowsLatin1 - : (int)kTextEncodingMacRoman; - +#if TARGET_CARBON + const TextEncodingBase kEncoding = CFStringGetSystemEncoding(); +#else + const TextEncodingBase kEncoding = kTextEncodingMacRoman; +#endif OSStatus status = noErr ; status = TECCreateConverter(&s_TECNativeCToUnicode, kEncoding, @@ -652,18 +654,6 @@ void wxMacSetupConverters() status = TECCreateConverter(&s_TECUnicodeToNativeC, kTextEncodingUnicodeDefault, kEncoding); - - if ( wxApp::s_macDefaultEncodingIsPC ) - { - status = TECCreateConverter(&s_TECPlatformToNativeC, - kTextEncodingMacRoman, - kTextEncodingWindowsLatin1); - - - status = TECCreateConverter(&s_TECNativeCToPlatform, - kTextEncodingWindowsLatin1, - kTextEncodingMacRoman); - } } void wxMacCleanupConverters() @@ -672,10 +662,6 @@ void wxMacCleanupConverters() status = TECDisposeConverter(s_TECNativeCToUnicode); status = TECDisposeConverter(s_TECUnicodeToNativeC); - - status = TECDisposeConverter(s_TECPlatformToNativeC); - - status = TECDisposeConverter(s_TECNativeCToPlatform); } wxWCharBuffer wxMacStringToWString( const wxString &from ) @@ -709,17 +695,7 @@ wxString wxMacMakeStringFromCString( const char * from , int len ) status = TECConvertText(s_TECNativeCToUnicode, (ConstTextPtr)from , byteInLen, &byteInLen, (TextPtr)buf, byteBufferLen, &byteOutLen); #else - if ( !wxApp::s_macDefaultEncodingIsPC ) - memcpy( buf , from , len ) ; - else - { - ByteCount byteOutLen ; - ByteCount byteInLen = len ; - ByteCount byteBufferLen = byteInLen ; - - status = TECConvertText(s_TECPlatformToNativeC, (ConstTextPtr)from , byteInLen, &byteInLen, - (TextPtr)buf, byteBufferLen, &byteOutLen); - } + memcpy( buf , from , len ) ; #endif buf[len] = 0 ; result.UngetWriteBuf() ; @@ -743,26 +719,14 @@ wxCharBuffer wxMacStringToCString( const wxString &from ) (TextPtr)result.data(), byteBufferLen, &byteOutLen); return result ; #else - if ( !wxApp::s_macDefaultEncodingIsPC ) - return wxCharBuffer( from.c_str() ) ; - else - { - wxCharBuffer result( from.Length() ) ; - OSStatus status = noErr ; - ByteCount byteOutLen ; - ByteCount byteInLen = from.Length() ; - ByteCount byteBufferLen = byteInLen ; - - status = TECConvertText(s_TECNativeCToPlatform, (ConstTextPtr)from.c_str() , byteInLen, &byteInLen, - (TextPtr)result.data(), byteBufferLen, &byteOutLen); - return result ; - } + return wxCharBuffer( from.c_str() ) ; #endif } +#endif void wxMacStringToPascal( const wxString&from , StringPtr to ) { - wxCharBuffer buf = wxMacStringToCString( from ) ; + wxCharBuffer buf = from.mb_str( wxConvLocal ) ; int len = strlen(buf) ; if ( len > 255 ) @@ -773,7 +737,7 @@ void wxMacStringToPascal( const wxString&from , StringPtr to ) wxString wxMacMakeStringFromPascal( ConstStringPtr from ) { - return wxMacMakeStringFromCString( (char*) &from[1] , from[0] ) ; + return wxString( (char*) &from[1] , wxConvLocal , from[0] ) ; } #endif // wxUSE_BASE @@ -794,8 +758,7 @@ void wxMacCFStringHolder::Assign( const wxString &str ) (const unsigned short*)str.wc_str(), str.Len() ); #else m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() , - wxApp::s_macDefaultEncodingIsPC ? - kCFStringEncodingWindowsLatin1 : CFStringGetSystemEncoding() ) ; + CFStringGetSystemEncoding() ) ; #endif m_release = true ; } @@ -808,89 +771,13 @@ wxString wxMacCFStringHolder::AsString() #if wxUSE_UNICODE CFStringGetCharacters( m_cfs , CFRangeMake( 0 , len ) , (UniChar*) buf ) ; #else - CFStringGetCString( m_cfs , buf , len+1 , wxApp::s_macDefaultEncodingIsPC ? - kCFStringEncodingWindowsLatin1 : CFStringGetSystemEncoding() ) ; + CFStringGetCString( m_cfs , buf , len+1 , CFStringGetSystemEncoding() ) ; #endif buf[len] = 0 ; result.UngetWriteBuf() ; return result ; } -#if 0 - -wxString wxMacMakeMacStringFromPC( const wxChar * p ) -{ - wxString result ; - int len = wxStrlen ( p ) ; - if ( len > 0 ) - { - wxChar* ptr = result.GetWriteBuf(len) ; - wxMacConvertFromPC( p , ptr , len ) ; - ptr[len] = 0 ; - result.UngetWriteBuf( len ) ; - } - return result ; -} - -wxString wxMacMakePCStringFromMac( const wxChar * p ) -{ - wxString result ; - int len = wxStrlen ( p ) ; - if ( len > 0 ) - { - wxChar* ptr = result.GetWriteBuf(len) ; - wxMacConvertToPC( p , ptr , len ) ; - ptr[len] = 0 ; - result.UngetWriteBuf( len ) ; - } - return result ; -} - -wxString wxMacMakeStringFromMacString( const wxChar* from , bool mac2pcEncoding ) -{ - if (mac2pcEncoding) - { - return wxMacMakePCStringFromMac( from ) ; - } - else - { - return wxString( from ) ; - } -} - -// -// Pascal Strings -// - -wxString wxMacMakeStringFromPascal( ConstStringPtr from , bool mac2pcEncoding ) -{ - // this is safe since a pascal string can never be larger than 256 bytes - char s[256] ; - CopyPascalStringToC( from , s ) ; - if (mac2pcEncoding) - { - return wxMacMakePCStringFromMac( s ) ; - } - else - { - return wxString( s ) ; - } -} - -void wxMacStringToPascal( const wxChar * from , StringPtr to , bool pc2macEncoding ) -{ - if (pc2macEncoding) - { - CopyCStringToPascal( wxMacMakeMacStringFromPC( from ) , to ) ; - } - else - { - CopyCStringToPascal( from , to ) ; - } -} -#endif - - #endif //TARGET_CARBON // ---------------------------------------------------------------------------- -- 2.47.2