reckognize cp125x charsets
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9743 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -36,6 +36,7 @@
|
|||||||
// what to test (in alphabetic order)?
|
// what to test (in alphabetic order)?
|
||||||
|
|
||||||
//#define TEST_ARRAYS
|
//#define TEST_ARRAYS
|
||||||
|
#define TEST_CHARSET
|
||||||
//#define TEST_CMDLINE
|
//#define TEST_CMDLINE
|
||||||
//#define TEST_DATETIME
|
//#define TEST_DATETIME
|
||||||
//#define TEST_DIR
|
//#define TEST_DIR
|
||||||
@@ -54,7 +55,7 @@
|
|||||||
//#define TEST_LONGLONG
|
//#define TEST_LONGLONG
|
||||||
//#define TEST_MIME
|
//#define TEST_MIME
|
||||||
//#define TEST_PATHLIST
|
//#define TEST_PATHLIST
|
||||||
#define TEST_REGCONF
|
//#define TEST_REGCONF
|
||||||
//#define TEST_REGISTRY
|
//#define TEST_REGISTRY
|
||||||
//#define TEST_SOCKETS
|
//#define TEST_SOCKETS
|
||||||
//#define TEST_STREAMS
|
//#define TEST_STREAMS
|
||||||
@@ -66,12 +67,6 @@
|
|||||||
//#define TEST_ZIP
|
//#define TEST_ZIP
|
||||||
//#define TEST_ZLIB
|
//#define TEST_ZLIB
|
||||||
|
|
||||||
|
|
||||||
#ifdef TEST_DATETIME
|
|
||||||
#include <math.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// test class for container objects
|
// test class for container objects
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -121,6 +116,46 @@ static wxString MakePrintable(const wxChar *s)
|
|||||||
|
|
||||||
#endif // MakePrintable() is used
|
#endif // MakePrintable() is used
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxFontMapper::CharsetToEncoding
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef TEST_CHARSET
|
||||||
|
|
||||||
|
#include <wx/fontmap.h>
|
||||||
|
|
||||||
|
static void TestCharset()
|
||||||
|
{
|
||||||
|
static const wxChar *charsets[] =
|
||||||
|
{
|
||||||
|
// some vali charsets
|
||||||
|
_T("us-ascii "),
|
||||||
|
_T("iso8859-1 "),
|
||||||
|
_T("iso-8859-12 "),
|
||||||
|
_T("koi8-r "),
|
||||||
|
_T("utf-7 "),
|
||||||
|
_T("cp1250 "),
|
||||||
|
_T("windows-1252"),
|
||||||
|
|
||||||
|
// and now some bogus ones
|
||||||
|
_T(" "),
|
||||||
|
_T("cp1249 "),
|
||||||
|
_T("iso--8859-1 "),
|
||||||
|
_T("iso-8859-19 "),
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( size_t n = 0; n < WXSIZEOF(charsets); n++ )
|
||||||
|
{
|
||||||
|
wxFontEncoding enc = wxTheFontMapper->CharsetToEncoding(charsets[n]);
|
||||||
|
wxPrintf(_T("Charset: %s\tEncoding: %s (%s)\n"),
|
||||||
|
charsets[n],
|
||||||
|
wxTheFontMapper->GetEncodingName(enc).c_str(),
|
||||||
|
wxTheFontMapper->GetEncodingDescription(enc).c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // TEST_CHARSET
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxCmdLineParser
|
// wxCmdLineParser
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -2725,6 +2760,8 @@ static void TestZlibStreamRead()
|
|||||||
|
|
||||||
#ifdef TEST_DATETIME
|
#ifdef TEST_DATETIME
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#include <wx/date.h>
|
#include <wx/date.h>
|
||||||
|
|
||||||
#include <wx/datetime.h>
|
#include <wx/datetime.h>
|
||||||
@@ -4453,10 +4490,9 @@ int main(int argc, char **argv)
|
|||||||
fprintf(stderr, "Failed to initialize the wxWindows library, aborting.");
|
fprintf(stderr, "Failed to initialize the wxWindows library, aborting.");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TEST_USLEEP
|
#ifdef TEST_CHARSET
|
||||||
puts("Sleeping for 3 seconds... z-z-z-z-z...");
|
TestCharset();
|
||||||
wxUsleep(3000);
|
#endif // TEST_CHARSET
|
||||||
#endif // TEST_USLEEP
|
|
||||||
|
|
||||||
#ifdef TEST_CMDLINE
|
#ifdef TEST_CMDLINE
|
||||||
static const wxCmdLineEntryDesc cmdLineDesc[] =
|
static const wxCmdLineEntryDesc cmdLineDesc[] =
|
||||||
@@ -4769,6 +4805,11 @@ int main(int argc, char **argv)
|
|||||||
TestDateTimeInteractive();
|
TestDateTimeInteractive();
|
||||||
#endif // TEST_DATETIME
|
#endif // TEST_DATETIME
|
||||||
|
|
||||||
|
#ifdef TEST_USLEEP
|
||||||
|
puts("Sleeping for 3 seconds... z-z-z-z-z...");
|
||||||
|
wxUsleep(3000);
|
||||||
|
#endif // TEST_USLEEP
|
||||||
|
|
||||||
#ifdef TEST_VCARD
|
#ifdef TEST_VCARD
|
||||||
if ( 0 )
|
if ( 0 )
|
||||||
TestVCardRead();
|
TestVCardRead();
|
||||||
|
@@ -42,7 +42,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if wxUSE_GUI
|
#if wxUSE_GUI
|
||||||
#include "wx/fontutil.h"
|
|
||||||
#include "wx/msgdlg.h"
|
#include "wx/msgdlg.h"
|
||||||
#include "wx/fontdlg.h"
|
#include "wx/fontdlg.h"
|
||||||
#include "wx/choicdlg.h"
|
#include "wx/choicdlg.h"
|
||||||
@@ -145,15 +144,15 @@ static const wxChar* gs_encodingNames[] =
|
|||||||
wxT( "iso8859-14" ),
|
wxT( "iso8859-14" ),
|
||||||
wxT( "iso8859-15" ),
|
wxT( "iso8859-15" ),
|
||||||
wxT( "koi8-r" ),
|
wxT( "koi8-r" ),
|
||||||
wxT( "windows1250" ),
|
wxT( "windows-1250" ),
|
||||||
wxT( "windows1251" ),
|
wxT( "windows-1251" ),
|
||||||
wxT( "windows1252" ),
|
wxT( "windows-1252" ),
|
||||||
wxT( "windows1253" ),
|
wxT( "windows-1253" ),
|
||||||
wxT( "windows1254" ),
|
wxT( "windows-1254" ),
|
||||||
wxT( "windows1255" ),
|
wxT( "windows-1255" ),
|
||||||
wxT( "windows1256" ),
|
wxT( "windows-1256" ),
|
||||||
wxT( "windows1257" ),
|
wxT( "windows-1257" ),
|
||||||
wxT( "windows437" ),
|
wxT( "windows-437" ),
|
||||||
wxT( "utf7" ),
|
wxT( "utf7" ),
|
||||||
wxT( "utf8" ),
|
wxT( "utf8" ),
|
||||||
};
|
};
|
||||||
@@ -319,6 +318,11 @@ void wxFontMapper::RestorePath(const wxString& pathOld)
|
|||||||
/* static */
|
/* static */
|
||||||
wxString wxFontMapper::GetEncodingDescription(wxFontEncoding encoding)
|
wxString wxFontMapper::GetEncodingDescription(wxFontEncoding encoding)
|
||||||
{
|
{
|
||||||
|
if ( encoding == wxFONTENCODING_DEFAULT )
|
||||||
|
{
|
||||||
|
return _("Default encoding");
|
||||||
|
}
|
||||||
|
|
||||||
size_t count = WXSIZEOF(gs_encodingDescs);
|
size_t count = WXSIZEOF(gs_encodingDescs);
|
||||||
|
|
||||||
wxASSERT_MSG( count == WXSIZEOF(gs_encodings),
|
wxASSERT_MSG( count == WXSIZEOF(gs_encodings),
|
||||||
@@ -341,6 +345,11 @@ wxString wxFontMapper::GetEncodingDescription(wxFontEncoding encoding)
|
|||||||
/* static */
|
/* static */
|
||||||
wxString wxFontMapper::GetEncodingName(wxFontEncoding encoding)
|
wxString wxFontMapper::GetEncodingName(wxFontEncoding encoding)
|
||||||
{
|
{
|
||||||
|
if ( encoding == wxFONTENCODING_DEFAULT )
|
||||||
|
{
|
||||||
|
return _("default");
|
||||||
|
}
|
||||||
|
|
||||||
size_t count = WXSIZEOF(gs_encodingNames);
|
size_t count = WXSIZEOF(gs_encodingNames);
|
||||||
|
|
||||||
wxASSERT_MSG( count == WXSIZEOF(gs_encodings),
|
wxASSERT_MSG( count == WXSIZEOF(gs_encodings),
|
||||||
@@ -405,11 +414,15 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
|
|
||||||
RestorePath(pathOld);
|
RestorePath(pathOld);
|
||||||
}
|
}
|
||||||
#endif // wxUSE_CONFIG
|
#endif
|
||||||
|
|
||||||
// if didn't find it there, try to reckognise it ourselves
|
// if didn't find it there, try to recognize it ourselves
|
||||||
if ( encoding == wxFONTENCODING_SYSTEM )
|
if ( encoding == wxFONTENCODING_SYSTEM )
|
||||||
{
|
{
|
||||||
|
// trim any spaces
|
||||||
|
cs.Trim(TRUE);
|
||||||
|
cs.Trim(FALSE);
|
||||||
|
|
||||||
// discard the optional quotes
|
// discard the optional quotes
|
||||||
if ( !!cs )
|
if ( !!cs )
|
||||||
{
|
{
|
||||||
@@ -422,13 +435,26 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
cs.MakeUpper();
|
cs.MakeUpper();
|
||||||
|
|
||||||
if ( !cs || cs == wxT("US-ASCII") )
|
if ( !cs || cs == wxT("US-ASCII") )
|
||||||
|
{
|
||||||
encoding = wxFONTENCODING_DEFAULT;
|
encoding = wxFONTENCODING_DEFAULT;
|
||||||
|
}
|
||||||
else if ( cs == wxT("UTF-7") )
|
else if ( cs == wxT("UTF-7") )
|
||||||
|
{
|
||||||
encoding = wxFONTENCODING_UTF7;
|
encoding = wxFONTENCODING_UTF7;
|
||||||
|
}
|
||||||
else if ( cs == wxT("UTF-8") )
|
else if ( cs == wxT("UTF-8") )
|
||||||
|
{
|
||||||
encoding = wxFONTENCODING_UTF8;
|
encoding = wxFONTENCODING_UTF8;
|
||||||
else if ( cs == wxT("KOI8-R") || cs == wxT("KOI8-U") )
|
}
|
||||||
|
else if ( cs == wxT("KOI8-R") ||
|
||||||
|
cs == wxT("KOI8-U") ||
|
||||||
|
cs == wxT("KOI8-RU") )
|
||||||
|
{
|
||||||
|
// although koi8-ru is not strictly speaking the same as koi8-r,
|
||||||
|
// they are similar enough to make mapping it to koi8 better than
|
||||||
|
// not reckognizing it at all
|
||||||
encoding = wxFONTENCODING_KOI8;
|
encoding = wxFONTENCODING_KOI8;
|
||||||
|
}
|
||||||
else if ( cs.Left(3) == wxT("ISO") )
|
else if ( cs.Left(3) == wxT("ISO") )
|
||||||
{
|
{
|
||||||
// the dash is optional (or, to be exact, it is not, but
|
// the dash is optional (or, to be exact, it is not, but
|
||||||
@@ -449,20 +475,41 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( cs.Left(8) == wxT("WINDOWS-") )
|
else // check for Windows charsets
|
||||||
{
|
{
|
||||||
int value;
|
size_t len;
|
||||||
if ( wxSscanf(cs.c_str() + 8, wxT("%u"), &value) == 1 )
|
if ( cs.Left(7) == wxT("WINDOWS") )
|
||||||
{
|
{
|
||||||
if ( value >= 1250 )
|
len = 7;
|
||||||
|
}
|
||||||
|
else if ( cs.Left(2) == wxT("CP") )
|
||||||
|
{
|
||||||
|
len = 2;
|
||||||
|
}
|
||||||
|
else // not a Windows encoding
|
||||||
|
{
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( len )
|
||||||
|
{
|
||||||
|
const wxChar *p = cs.c_str() + len;
|
||||||
|
if ( *p == wxT('-') )
|
||||||
|
p++;
|
||||||
|
|
||||||
|
int value;
|
||||||
|
if ( wxSscanf(p, wxT("%u"), &value) == 1 )
|
||||||
{
|
{
|
||||||
value -= 1250;
|
if ( value >= 1250 )
|
||||||
if ( value < wxFONTENCODING_CP12_MAX -
|
|
||||||
wxFONTENCODING_CP1250 )
|
|
||||||
{
|
{
|
||||||
// a valid Windows code page
|
value -= 1250;
|
||||||
value += wxFONTENCODING_CP1250;
|
if ( value < wxFONTENCODING_CP12_MAX -
|
||||||
encoding = (wxFontEncoding)value;
|
wxFONTENCODING_CP1250 )
|
||||||
|
{
|
||||||
|
// a valid Windows code page
|
||||||
|
value += wxFONTENCODING_CP1250;
|
||||||
|
encoding = (wxFontEncoding)value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -696,10 +743,10 @@ bool wxFontMapper::GetAltForEncoding(wxFontEncoding encoding,
|
|||||||
wxFont font = retData.GetChosenFont();
|
wxFont font = retData.GetChosenFont();
|
||||||
|
|
||||||
*info = retData.EncodingInfo();
|
*info = retData.EncodingInfo();
|
||||||
info->encoding = retData.GetEncoding();
|
info -> encoding = retData.GetEncoding();
|
||||||
|
|
||||||
#if wxUSE_CONFIG
|
#if wxUSE_CONFIG
|
||||||
// remember this in the config
|
// remember this in the config
|
||||||
if ( ChangePath(FONTMAPPER_FONT_FROM_ENCODING_PATH, &pathOld) )
|
if ( ChangePath(FONTMAPPER_FONT_FROM_ENCODING_PATH, &pathOld) )
|
||||||
{
|
{
|
||||||
GetConfig()->Write(configEntry, info->ToString());
|
GetConfig()->Write(configEntry, info->ToString());
|
||||||
@@ -747,7 +794,7 @@ bool wxFontMapper::IsEncodingAvailable(wxFontEncoding encoding,
|
|||||||
{
|
{
|
||||||
wxNativeEncodingInfo info;
|
wxNativeEncodingInfo info;
|
||||||
|
|
||||||
if ( wxGetNativeFontEncoding(encoding, &info) )
|
if (wxGetNativeFontEncoding(encoding, &info))
|
||||||
{
|
{
|
||||||
info.facename = facename;
|
info.facename = facename;
|
||||||
return wxTestFontEncoding(info);
|
return wxTestFontEncoding(info);
|
||||||
|
Reference in New Issue
Block a user