cocoa doesn't need system framework - string conversion for cocoa - focus for cocoa - a bit of change for string unit tests for new functionality
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29780 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
4
configure
vendored
4
configure
vendored
@@ -37472,7 +37472,7 @@ if test "$wxUSE_MAC" = 1 ; then
|
|||||||
LDFLAGS="$LDFLAGS -framework Carbon -framework Cocoa -framework System"
|
LDFLAGS="$LDFLAGS -framework Carbon -framework Cocoa -framework System"
|
||||||
fi
|
fi
|
||||||
if test "$wxUSE_COCOA" = 1 ; then
|
if test "$wxUSE_COCOA" = 1 ; then
|
||||||
LDFLAGS="$LDFLAGS -framework Cocoa -framework System"
|
LDFLAGS="$LDFLAGS -framework Cocoa"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -39781,6 +39781,8 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BAKEFILE_AUTOCONF_INC_M4_VERSION="0.1.4"
|
BAKEFILE_AUTOCONF_INC_M4_VERSION="0.1.4"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -5808,7 +5808,7 @@ if test "$wxUSE_MAC" = 1 ; then
|
|||||||
LDFLAGS="$LDFLAGS -framework Carbon -framework Cocoa -framework System"
|
LDFLAGS="$LDFLAGS -framework Carbon -framework Cocoa -framework System"
|
||||||
fi
|
fi
|
||||||
if test "$wxUSE_COCOA" = 1 ; then
|
if test "$wxUSE_COCOA" = 1 ; then
|
||||||
LDFLAGS="$LDFLAGS -framework Cocoa -framework System"
|
LDFLAGS="$LDFLAGS -framework Cocoa"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl FIXME: should this be covered by the conditional above
|
dnl FIXME: should this be covered by the conditional above
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include "wx/cocoa/ObjcAssociate.h"
|
#include "wx/cocoa/ObjcAssociate.h"
|
||||||
|
|
||||||
typedef struct _NSRect NSRect;
|
typedef struct _NSRect NSRect;
|
||||||
|
class wxWindow;
|
||||||
|
|
||||||
WX_DECLARE_OBJC_HASHMAP(NSView);
|
WX_DECLARE_OBJC_HASHMAP(NSView);
|
||||||
class wxCocoaNSView
|
class wxCocoaNSView
|
||||||
@@ -28,6 +29,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
static void *sm_cocoaObserver;
|
static void *sm_cocoaObserver;
|
||||||
public:
|
public:
|
||||||
|
virtual wxWindow* GetWxWindow() const
|
||||||
|
{ return NULL; }
|
||||||
virtual void Cocoa_FrameChanged(void) = 0;
|
virtual void Cocoa_FrameChanged(void) = 0;
|
||||||
virtual bool Cocoa_drawRect(const NSRect &rect)
|
virtual bool Cocoa_drawRect(const NSRect &rect)
|
||||||
{ return false; }
|
{ return false; }
|
||||||
|
@@ -81,6 +81,7 @@ protected:
|
|||||||
|
|
||||||
void CocoaCreateNSScrollView();
|
void CocoaCreateNSScrollView();
|
||||||
void InitMouseEvent(wxMouseEvent &event, WX_NSEvent cocoaEvent);
|
void InitMouseEvent(wxMouseEvent &event, WX_NSEvent cocoaEvent);
|
||||||
|
virtual wxWindow* GetWxWindow() const;
|
||||||
virtual void Cocoa_FrameChanged(void);
|
virtual void Cocoa_FrameChanged(void);
|
||||||
virtual bool Cocoa_drawRect(const NSRect &rect);
|
virtual bool Cocoa_drawRect(const NSRect &rect);
|
||||||
virtual bool Cocoa_mouseDown(WX_NSEvent theEvent);
|
virtual bool Cocoa_mouseDown(WX_NSEvent theEvent);
|
||||||
|
@@ -695,6 +695,11 @@ WXWidget wxWindow::GetHandle() const
|
|||||||
return m_cocoaNSView;
|
return m_cocoaNSView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxWindow* wxWindow::GetWxWindow() const
|
||||||
|
{
|
||||||
|
return (wxWindow*) this;
|
||||||
|
}
|
||||||
|
|
||||||
void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
|
void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
|
||||||
{
|
{
|
||||||
[m_cocoaNSView setNeedsDisplay:YES];
|
[m_cocoaNSView setNeedsDisplay:YES];
|
||||||
@@ -702,7 +707,14 @@ void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
|
|||||||
|
|
||||||
void wxWindow::SetFocus()
|
void wxWindow::SetFocus()
|
||||||
{
|
{
|
||||||
// TODO
|
#ifdef __WXDEBUG__
|
||||||
|
bool bOK =
|
||||||
|
#endif
|
||||||
|
[GetNSView() lockFocusIfCanDraw];
|
||||||
|
|
||||||
|
//Note that the normal lockFocus works on hidden and minimized windows
|
||||||
|
//and has no return value - which probably isn't what we want
|
||||||
|
wxASSERT(bOK);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindow::DoCaptureMouse()
|
void wxWindow::DoCaptureMouse()
|
||||||
@@ -883,8 +895,12 @@ bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y)
|
|||||||
// Get the window with the focus
|
// Get the window with the focus
|
||||||
wxWindow *wxWindowBase::DoFindFocus()
|
wxWindow *wxWindowBase::DoFindFocus()
|
||||||
{
|
{
|
||||||
// TODO
|
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa([NSView focusView]);
|
||||||
return NULL;
|
|
||||||
|
if (!win)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return win->GetWxWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* static */ wxWindow *wxWindowBase::GetCapture()
|
/* static */ wxWindow *wxWindowBase::GetCapture()
|
||||||
|
@@ -1286,6 +1286,701 @@ private:
|
|||||||
|
|
||||||
#endif // wxHAVE_WIN32_MB2WC
|
#endif // wxHAVE_WIN32_MB2WC
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Cocoa conversion classes
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
#if defined(__WXCOCOA__)
|
||||||
|
|
||||||
|
// RN: There is no UTF-32 support in either Core Foundation or
|
||||||
|
// Cocoa. Strangely enough, internally Core Foundation uses
|
||||||
|
// UTF 32 internally quite a bit - its just not public (yet).
|
||||||
|
|
||||||
|
#include <CoreFoundation/CFString.h>
|
||||||
|
#include <CoreFoundation/CFStringEncodingExt.h>
|
||||||
|
|
||||||
|
CFStringEncoding wxCFStringEncFromFontEnc(wxFontEncoding encoding)
|
||||||
|
{
|
||||||
|
CFStringEncoding enc = 0 ;
|
||||||
|
if ( encoding == wxFONTENCODING_DEFAULT )
|
||||||
|
{
|
||||||
|
#if wxUSE_GUI
|
||||||
|
encoding = wxFont::GetDefaultEncoding() ;
|
||||||
|
#else
|
||||||
|
encoding = wxLocale::GetSystemEncoding() ;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else switch( encoding)
|
||||||
|
{
|
||||||
|
case wxFONTENCODING_ISO8859_1 :
|
||||||
|
enc = kCFStringEncodingISOLatin1 ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_2 :
|
||||||
|
enc = kCFStringEncodingISOLatin2;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_3 :
|
||||||
|
enc = kCFStringEncodingISOLatin3 ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_4 :
|
||||||
|
enc = kCFStringEncodingISOLatin4;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_5 :
|
||||||
|
enc = kCFStringEncodingISOLatinCyrillic;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_6 :
|
||||||
|
enc = kCFStringEncodingISOLatinArabic;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_7 :
|
||||||
|
enc = kCFStringEncodingISOLatinGreek;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_8 :
|
||||||
|
enc = kCFStringEncodingISOLatinHebrew;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_9 :
|
||||||
|
enc = kCFStringEncodingISOLatin5;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_10 :
|
||||||
|
enc = kCFStringEncodingISOLatin6;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_11 :
|
||||||
|
enc = kCFStringEncodingISOLatinThai;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_13 :
|
||||||
|
enc = kCFStringEncodingISOLatin7;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_14 :
|
||||||
|
enc = kCFStringEncodingISOLatin8;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ISO8859_15 :
|
||||||
|
enc = kCFStringEncodingISOLatin9;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
case wxFONTENCODING_KOI8 :
|
||||||
|
enc = kCFStringEncodingKOI8_R;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_ALTERNATIVE : // MS-DOS CP866
|
||||||
|
enc = kCFStringEncodingDOSRussian;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
// case wxFONTENCODING_BULGARIAN :
|
||||||
|
// enc = ;
|
||||||
|
// break ;
|
||||||
|
|
||||||
|
case wxFONTENCODING_CP437 :
|
||||||
|
enc =kCFStringEncodingDOSLatinUS ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP850 :
|
||||||
|
enc = kCFStringEncodingDOSLatin1;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP852 :
|
||||||
|
enc = kCFStringEncodingDOSLatin2;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP855 :
|
||||||
|
enc = kCFStringEncodingDOSCyrillic;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP866 :
|
||||||
|
enc =kCFStringEncodingDOSRussian ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP874 :
|
||||||
|
enc = kCFStringEncodingDOSThai;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP932 :
|
||||||
|
enc = kCFStringEncodingDOSJapanese;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP936 :
|
||||||
|
enc =kCFStringEncodingDOSChineseSimplif ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP949 :
|
||||||
|
enc = kCFStringEncodingDOSKorean;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP950 :
|
||||||
|
enc = kCFStringEncodingDOSChineseTrad;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
case wxFONTENCODING_CP1250 :
|
||||||
|
enc = kCFStringEncodingWindowsLatin2;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP1251 :
|
||||||
|
enc =kCFStringEncodingWindowsCyrillic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP1252 :
|
||||||
|
enc =kCFStringEncodingWindowsLatin1 ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP1253 :
|
||||||
|
enc = kCFStringEncodingWindowsGreek;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP1254 :
|
||||||
|
enc = kCFStringEncodingWindowsLatin5;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP1255 :
|
||||||
|
enc =kCFStringEncodingWindowsHebrew ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP1256 :
|
||||||
|
enc =kCFStringEncodingWindowsArabic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_CP1257 :
|
||||||
|
enc = kCFStringEncodingWindowsBalticRim;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_UTF7 :
|
||||||
|
enc = kCFStringEncodingNonLossyASCII ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_UTF8 :
|
||||||
|
enc = kCFStringEncodingUTF8 ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_EUC_JP :
|
||||||
|
enc = kCFStringEncodingEUC_JP;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_UTF16 :
|
||||||
|
enc = kCFStringEncodingUnicode ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACROMAN :
|
||||||
|
enc = kCFStringEncodingMacRoman ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACJAPANESE :
|
||||||
|
enc = kCFStringEncodingMacJapanese ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACCHINESETRAD :
|
||||||
|
enc = kCFStringEncodingMacChineseTrad ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACKOREAN :
|
||||||
|
enc = kCFStringEncodingMacKorean ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACARABIC :
|
||||||
|
enc = kCFStringEncodingMacArabic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACHEBREW :
|
||||||
|
enc = kCFStringEncodingMacHebrew ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACGREEK :
|
||||||
|
enc = kCFStringEncodingMacGreek ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACCYRILLIC :
|
||||||
|
enc = kCFStringEncodingMacCyrillic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACDEVANAGARI :
|
||||||
|
enc = kCFStringEncodingMacDevanagari ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACGURMUKHI :
|
||||||
|
enc = kCFStringEncodingMacGurmukhi ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACGUJARATI :
|
||||||
|
enc = kCFStringEncodingMacGujarati ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACORIYA :
|
||||||
|
enc = kCFStringEncodingMacOriya ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACBENGALI :
|
||||||
|
enc = kCFStringEncodingMacBengali ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACTAMIL :
|
||||||
|
enc = kCFStringEncodingMacTamil ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACTELUGU :
|
||||||
|
enc = kCFStringEncodingMacTelugu ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACKANNADA :
|
||||||
|
enc = kCFStringEncodingMacKannada ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACMALAJALAM :
|
||||||
|
enc = kCFStringEncodingMacMalayalam ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACSINHALESE :
|
||||||
|
enc = kCFStringEncodingMacSinhalese ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACBURMESE :
|
||||||
|
enc = kCFStringEncodingMacBurmese ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACKHMER :
|
||||||
|
enc = kCFStringEncodingMacKhmer ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACTHAI :
|
||||||
|
enc = kCFStringEncodingMacThai ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACLAOTIAN :
|
||||||
|
enc = kCFStringEncodingMacLaotian ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACGEORGIAN :
|
||||||
|
enc = kCFStringEncodingMacGeorgian ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACARMENIAN :
|
||||||
|
enc = kCFStringEncodingMacArmenian ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACCHINESESIMP :
|
||||||
|
enc = kCFStringEncodingMacChineseSimp ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACTIBETAN :
|
||||||
|
enc = kCFStringEncodingMacTibetan ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACMONGOLIAN :
|
||||||
|
enc = kCFStringEncodingMacMongolian ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACETHIOPIC :
|
||||||
|
enc = kCFStringEncodingMacEthiopic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACCENTRALEUR :
|
||||||
|
enc = kCFStringEncodingMacCentralEurRoman ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACVIATNAMESE :
|
||||||
|
enc = kCFStringEncodingMacVietnamese ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACARABICEXT :
|
||||||
|
enc = kCFStringEncodingMacExtArabic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACSYMBOL :
|
||||||
|
enc = kCFStringEncodingMacSymbol ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACDINGBATS :
|
||||||
|
enc = kCFStringEncodingMacDingbats ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACTURKISH :
|
||||||
|
enc = kCFStringEncodingMacTurkish ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACCROATIAN :
|
||||||
|
enc = kCFStringEncodingMacCroatian ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACICELANDIC :
|
||||||
|
enc = kCFStringEncodingMacIcelandic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACROMANIAN :
|
||||||
|
enc = kCFStringEncodingMacRomanian ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACCELTIC :
|
||||||
|
enc = kCFStringEncodingMacCeltic ;
|
||||||
|
break ;
|
||||||
|
case wxFONTENCODING_MACGAELIC :
|
||||||
|
enc = kCFStringEncodingMacGaelic ;
|
||||||
|
break ;
|
||||||
|
// case wxFONTENCODING_MACKEYBOARD :
|
||||||
|
// enc = kCFStringEncodingMacKeyboardGlyphs ;
|
||||||
|
// break ;
|
||||||
|
default :
|
||||||
|
// because gcc is picky
|
||||||
|
break ;
|
||||||
|
} ;
|
||||||
|
return enc ;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFontEncoding wxFontEncFromCFStringEnc(CFStringEncoding encoding)
|
||||||
|
{
|
||||||
|
wxFontEncoding enc = wxFONTENCODING_DEFAULT ;
|
||||||
|
|
||||||
|
switch( encoding)
|
||||||
|
{
|
||||||
|
case kCFStringEncodingISOLatin1 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_1 ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin2 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_2;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin3 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_3 ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin4 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_4;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatinCyrillic :
|
||||||
|
enc = wxFONTENCODING_ISO8859_5;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatinArabic :
|
||||||
|
enc = wxFONTENCODING_ISO8859_6;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatinGreek :
|
||||||
|
enc = wxFONTENCODING_ISO8859_7;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatinHebrew :
|
||||||
|
enc = wxFONTENCODING_ISO8859_8;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin5 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_9;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin6 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_10;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin7 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_13;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin8 :
|
||||||
|
enc = wxFONTENCODING_ISO8859_14;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingISOLatin9 :
|
||||||
|
enc =wxFONTENCODING_ISO8859_15 ;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
case kCFStringEncodingKOI8_R :
|
||||||
|
enc = wxFONTENCODING_KOI8;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
// case :
|
||||||
|
// enc = wxFONTENCODING_BULGARIAN;
|
||||||
|
// break ;
|
||||||
|
|
||||||
|
case kCFStringEncodingDOSLatinUS :
|
||||||
|
enc = wxFONTENCODING_CP437;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSLatin1 :
|
||||||
|
enc = wxFONTENCODING_CP850;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSLatin2 :
|
||||||
|
enc =wxFONTENCODING_CP852 ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSCyrillic :
|
||||||
|
enc = wxFONTENCODING_CP855;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSRussian :
|
||||||
|
enc = wxFONTENCODING_CP866;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSThai :
|
||||||
|
enc =wxFONTENCODING_CP874 ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSJapanese :
|
||||||
|
enc = wxFONTENCODING_CP932;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSChineseSimplif :
|
||||||
|
enc = wxFONTENCODING_CP936;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSKorean :
|
||||||
|
enc = wxFONTENCODING_CP949;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingDOSChineseTrad :
|
||||||
|
enc = wxFONTENCODING_CP950;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
case kCFStringEncodingWindowsLatin2 :
|
||||||
|
enc = wxFONTENCODING_CP1250;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingWindowsCyrillic :
|
||||||
|
enc = wxFONTENCODING_CP1251;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingWindowsLatin1 :
|
||||||
|
enc = wxFONTENCODING_CP1252;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingWindowsGreek :
|
||||||
|
enc = wxFONTENCODING_CP1253;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingWindowsLatin5 :
|
||||||
|
enc = wxFONTENCODING_CP1254;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingWindowsHebrew :
|
||||||
|
enc = wxFONTENCODING_CP1255;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingWindowsArabic :
|
||||||
|
enc = wxFONTENCODING_CP1256;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingWindowsBalticRim :
|
||||||
|
enc =wxFONTENCODING_CP1257 ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingEUC_JP :
|
||||||
|
enc = wxFONTENCODING_EUC_JP;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingUnicode :
|
||||||
|
enc = wxFONTENCODING_UTF16;
|
||||||
|
break;
|
||||||
|
case kCFStringEncodingMacRoman :
|
||||||
|
enc = wxFONTENCODING_MACROMAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacJapanese :
|
||||||
|
enc = wxFONTENCODING_MACJAPANESE ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacChineseTrad :
|
||||||
|
enc = wxFONTENCODING_MACCHINESETRAD ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacKorean :
|
||||||
|
enc = wxFONTENCODING_MACKOREAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacArabic :
|
||||||
|
enc =wxFONTENCODING_MACARABIC ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacHebrew :
|
||||||
|
enc = wxFONTENCODING_MACHEBREW ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacGreek :
|
||||||
|
enc = wxFONTENCODING_MACGREEK ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacCyrillic :
|
||||||
|
enc = wxFONTENCODING_MACCYRILLIC ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacDevanagari :
|
||||||
|
enc = wxFONTENCODING_MACDEVANAGARI ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacGurmukhi :
|
||||||
|
enc = wxFONTENCODING_MACGURMUKHI ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacGujarati :
|
||||||
|
enc = wxFONTENCODING_MACGUJARATI ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacOriya :
|
||||||
|
enc =wxFONTENCODING_MACORIYA ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacBengali :
|
||||||
|
enc =wxFONTENCODING_MACBENGALI ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacTamil :
|
||||||
|
enc = wxFONTENCODING_MACTAMIL ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacTelugu :
|
||||||
|
enc = wxFONTENCODING_MACTELUGU ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacKannada :
|
||||||
|
enc = wxFONTENCODING_MACKANNADA ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacMalayalam :
|
||||||
|
enc = wxFONTENCODING_MACMALAJALAM ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacSinhalese :
|
||||||
|
enc = wxFONTENCODING_MACSINHALESE ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacBurmese :
|
||||||
|
enc = wxFONTENCODING_MACBURMESE ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacKhmer :
|
||||||
|
enc = wxFONTENCODING_MACKHMER ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacThai :
|
||||||
|
enc = wxFONTENCODING_MACTHAI ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacLaotian :
|
||||||
|
enc = wxFONTENCODING_MACLAOTIAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacGeorgian :
|
||||||
|
enc = wxFONTENCODING_MACGEORGIAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacArmenian :
|
||||||
|
enc = wxFONTENCODING_MACARMENIAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacChineseSimp :
|
||||||
|
enc = wxFONTENCODING_MACCHINESESIMP ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacTibetan :
|
||||||
|
enc = wxFONTENCODING_MACTIBETAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacMongolian :
|
||||||
|
enc = wxFONTENCODING_MACMONGOLIAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacEthiopic :
|
||||||
|
enc = wxFONTENCODING_MACETHIOPIC ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacCentralEurRoman:
|
||||||
|
enc = wxFONTENCODING_MACCENTRALEUR ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacVietnamese:
|
||||||
|
enc = wxFONTENCODING_MACVIATNAMESE ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacExtArabic :
|
||||||
|
enc = wxFONTENCODING_MACARABICEXT ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacSymbol :
|
||||||
|
enc = wxFONTENCODING_MACSYMBOL ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacDingbats :
|
||||||
|
enc = wxFONTENCODING_MACDINGBATS ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacTurkish :
|
||||||
|
enc = wxFONTENCODING_MACTURKISH ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacCroatian :
|
||||||
|
enc = wxFONTENCODING_MACCROATIAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacIcelandic :
|
||||||
|
enc = wxFONTENCODING_MACICELANDIC ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacRomanian :
|
||||||
|
enc = wxFONTENCODING_MACROMANIAN ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacCeltic :
|
||||||
|
enc = wxFONTENCODING_MACCELTIC ;
|
||||||
|
break ;
|
||||||
|
case kCFStringEncodingMacGaelic :
|
||||||
|
enc = wxFONTENCODING_MACGAELIC ;
|
||||||
|
break ;
|
||||||
|
// case kCFStringEncodingMacKeyboardGlyphs :
|
||||||
|
// enc = wxFONTENCODING_MACKEYBOARD ;
|
||||||
|
// break ;
|
||||||
|
} ;
|
||||||
|
return enc ;
|
||||||
|
}
|
||||||
|
|
||||||
|
class wxMBConv_cocoa : public wxMBConv
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxMBConv_cocoa()
|
||||||
|
{
|
||||||
|
Init(CFStringGetSystemEncoding()) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxMBConv_cocoa(const wxChar* name)
|
||||||
|
{
|
||||||
|
Init( wxCFStringEncFromFontEnc(wxFontMapper::Get()->CharsetToEncoding(name, false) ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxMBConv_cocoa(wxFontEncoding encoding)
|
||||||
|
{
|
||||||
|
Init( wxCFStringEncFromFontEnc(encoding) );
|
||||||
|
}
|
||||||
|
|
||||||
|
~wxMBConv_cocoa()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Init( CFStringEncoding encoding)
|
||||||
|
{
|
||||||
|
m_char_encoding = encoding ;
|
||||||
|
m_unicode_encoding = kCFStringEncodingUnicode;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t MB2WC(wchar_t * szOut, const char * szUnConv, size_t nOutSize) const
|
||||||
|
{
|
||||||
|
wxASSERT(szUnConv);
|
||||||
|
|
||||||
|
size_t nBufSize = strlen(szUnConv) + 1;
|
||||||
|
size_t nRealOutSize;
|
||||||
|
|
||||||
|
UniChar* szUniCharBuffer = (UniChar*) szOut;
|
||||||
|
wchar_t* szConvBuffer = szOut;
|
||||||
|
|
||||||
|
if (szConvBuffer == NULL && nOutSize != 0)
|
||||||
|
{
|
||||||
|
szConvBuffer = new wchar_t[nOutSize] ;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if SIZEOF_WCHAR_T == 4
|
||||||
|
szUniCharBuffer = new UniChar[nOutSize];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
CFDataRef theData = CFDataCreateWithBytesNoCopy (
|
||||||
|
NULL, //allocator
|
||||||
|
(const UInt8*)szUnConv,
|
||||||
|
nBufSize - 1,
|
||||||
|
NULL //deallocator
|
||||||
|
);
|
||||||
|
|
||||||
|
wxASSERT(theData);
|
||||||
|
|
||||||
|
CFStringRef theString = CFStringCreateFromExternalRepresentation (
|
||||||
|
NULL,
|
||||||
|
theData,
|
||||||
|
m_char_encoding
|
||||||
|
);
|
||||||
|
|
||||||
|
wxASSERT(theString);
|
||||||
|
|
||||||
|
if (nOutSize == 0)
|
||||||
|
{
|
||||||
|
nRealOutSize = CFStringGetLength(theString) + 1;
|
||||||
|
CFRelease(theString);
|
||||||
|
return nRealOutSize - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
CFRange theRange = { 0, CFStringGetLength(theString) };
|
||||||
|
|
||||||
|
CFStringGetCharacters(theString, theRange, szUniCharBuffer);
|
||||||
|
|
||||||
|
|
||||||
|
nRealOutSize = (CFStringGetLength(theString) + 1);
|
||||||
|
|
||||||
|
CFRelease(theString);
|
||||||
|
|
||||||
|
szUniCharBuffer[nRealOutSize-1] = '\0' ;
|
||||||
|
|
||||||
|
#if SIZEOF_WCHAR_T == 4
|
||||||
|
wxMBConvUTF16 converter ;
|
||||||
|
converter.MB2WC(szConvBuffer , (const char*)szUniCharBuffer , nRealOutSize ) ;
|
||||||
|
delete[] szUniCharBuffer;
|
||||||
|
#endif
|
||||||
|
if ( szOut == NULL )
|
||||||
|
delete [] szConvBuffer;
|
||||||
|
|
||||||
|
return nRealOutSize ;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t WC2MB(char *szOut, const wchar_t *szUnConv, size_t nOutSize) const
|
||||||
|
{
|
||||||
|
size_t nBufSize = wxWcslen(szUnConv) + 1;
|
||||||
|
size_t nRealOutSize;
|
||||||
|
char* szBuffer = szOut;
|
||||||
|
UniChar* szUniBuffer = (UniChar*) szUnConv;
|
||||||
|
|
||||||
|
if (szOut == NULL)
|
||||||
|
{
|
||||||
|
// worst case
|
||||||
|
nRealOutSize = ((nBufSize - 1) << 1)+1 ;
|
||||||
|
szBuffer = new char[ nRealOutSize ] ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
nRealOutSize = nOutSize;
|
||||||
|
|
||||||
|
#if SIZEOF_WCHAR_T == 4
|
||||||
|
wxMBConvUTF16BE converter ;
|
||||||
|
nBufSize = converter.WC2MB( NULL , szUnConv , 0 );
|
||||||
|
szUniBuffer = new UniChar[ (nBufSize / sizeof(UniChar)) + 1] ;
|
||||||
|
converter.WC2MB( (char*) szUniBuffer , szUnConv, nBufSize + sizeof(UniChar)) ;
|
||||||
|
nBufSize /= sizeof(UniChar);
|
||||||
|
++nBufSize;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
CFStringRef theString = CFStringCreateWithCharactersNoCopy(
|
||||||
|
NULL, //allocator
|
||||||
|
szUniBuffer,
|
||||||
|
nBufSize,
|
||||||
|
NULL //deallocator
|
||||||
|
);
|
||||||
|
|
||||||
|
wxASSERT(theString);
|
||||||
|
|
||||||
|
//Note that CER puts a BOM when converting to unicode
|
||||||
|
//so we may want to check and use getchars instead in that case
|
||||||
|
CFDataRef theData = CFStringCreateExternalRepresentation(
|
||||||
|
NULL, //allocator
|
||||||
|
theString,
|
||||||
|
m_char_encoding,
|
||||||
|
0 //what to put in characters that can't be converted -
|
||||||
|
//0 tells CFString to return NULL if it meets such a character
|
||||||
|
);
|
||||||
|
|
||||||
|
if(!theData)
|
||||||
|
return (size_t)-1;
|
||||||
|
|
||||||
|
CFRelease(theString);
|
||||||
|
|
||||||
|
nRealOutSize = CFDataGetLength(theData);
|
||||||
|
|
||||||
|
if ( szOut == NULL )
|
||||||
|
delete[] szBuffer;
|
||||||
|
|
||||||
|
if(nOutSize == 0)
|
||||||
|
{
|
||||||
|
//TODO: This gets flagged as a non-malloced address by the debugger...
|
||||||
|
//#if SIZEOF_WCHAR_T == 4
|
||||||
|
// delete[] szUniBuffer;
|
||||||
|
//#endif
|
||||||
|
CFRelease(theData);
|
||||||
|
return nRealOutSize - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
CFRange theRange = {0, CFDataGetLength(theData) };
|
||||||
|
CFDataGetBytes(theData, theRange, (UInt8*) szBuffer);
|
||||||
|
|
||||||
|
CFRelease(theData);
|
||||||
|
|
||||||
|
//TODO: This gets flagged as a non-malloced address by the debugger...
|
||||||
|
//#if SIZEOF_WCHAR_T == 4
|
||||||
|
// delete[] szUniBuffer;
|
||||||
|
//#endif
|
||||||
|
return nRealOutSize - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsOk() const
|
||||||
|
{
|
||||||
|
//TODO: check for invalid en/de/coding
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
CFStringEncoding m_char_encoding ;
|
||||||
|
CFStringEncoding m_unicode_encoding ;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // defined(__WXCOCOA__)
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// Mac conversion classes
|
// Mac conversion classes
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@@ -1640,6 +2335,20 @@ wxMBConv *wxCSConv::DoCreate() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(__WXCOCOA__)
|
||||||
|
{
|
||||||
|
if ( m_name || ( m_encoding <= wxFONTENCODING_UTF16 ) )
|
||||||
|
{
|
||||||
|
|
||||||
|
wxMBConv_cocoa *conv = m_name ? new wxMBConv_cocoa(m_name)
|
||||||
|
: new wxMBConv_cocoa(m_encoding);
|
||||||
|
if ( conv->IsOk() )
|
||||||
|
return conv;
|
||||||
|
|
||||||
|
delete conv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// step (2)
|
// step (2)
|
||||||
wxFontEncoding enc = m_encoding;
|
wxFontEncoding enc = m_encoding;
|
||||||
#if wxUSE_FONTMAP
|
#if wxUSE_FONTMAP
|
||||||
|
@@ -181,11 +181,13 @@ void StringTestCase::ConstructorsWithConversion()
|
|||||||
void StringTestCase::Conversion()
|
void StringTestCase::Conversion()
|
||||||
{
|
{
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxString szTheString(wxT("TheString"));
|
wxString szTheString(L"The\0String", wxConvLibc, 10);
|
||||||
szTheString.insert(3, 1, '\0');
|
|
||||||
wxCharBuffer theBuffer = szTheString.mb_str();
|
wxCharBuffer theBuffer = szTheString.mb_str();
|
||||||
|
|
||||||
CPPUNIT_ASSERT( memcmp(theBuffer.data(), "The\0String", 11) == 0 );
|
CPPUNIT_ASSERT( memcmp(theBuffer.data(), "The\0String", 11) == 0 );
|
||||||
|
|
||||||
|
wxString szTheString2("The\0String", wxConvLocal, 10);
|
||||||
|
CPPUNIT_ASSERT( wxMemcmp(szTheString2.c_str(), L"The\0String", 11) == 0 );
|
||||||
#else
|
#else
|
||||||
# if wxUSE_WCHAR_T
|
# if wxUSE_WCHAR_T
|
||||||
wxString szTheString(wxT("TheString"));
|
wxString szTheString(wxT("TheString"));
|
||||||
|
Reference in New Issue
Block a user