remember unknown charsets in the config too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -398,6 +398,12 @@ wxString wxFontMapper::GetEncodingName(wxFontEncoding encoding)
|
|||||||
wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
||||||
bool interactive)
|
bool interactive)
|
||||||
{
|
{
|
||||||
|
// a special pseudo encoding which means "don't ask me about this charset
|
||||||
|
// any more" - we need it to avoid driving the user crazy with asking him
|
||||||
|
// time after time about the same charset which he [presumably] doesn't
|
||||||
|
// have the fonts fot
|
||||||
|
static const int wxFONTENCODING_UNKNOWN = -2;
|
||||||
|
|
||||||
wxFontEncoding encoding = wxFONTENCODING_SYSTEM;
|
wxFontEncoding encoding = wxFONTENCODING_SYSTEM;
|
||||||
|
|
||||||
// we're going to modify it, make a copy
|
// we're going to modify it, make a copy
|
||||||
@@ -414,6 +420,12 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
long value = config->Read(charset, -1l);
|
long value = config->Read(charset, -1l);
|
||||||
if ( value != -1 )
|
if ( value != -1 )
|
||||||
{
|
{
|
||||||
|
if ( value == wxFONTENCODING_UNKNOWN )
|
||||||
|
{
|
||||||
|
// don't try to find it, in particular don't ask the user
|
||||||
|
return wxFONTENCODING_SYSTEM;
|
||||||
|
}
|
||||||
|
|
||||||
if ( value >= 0 && value <= wxFONTENCODING_MAX )
|
if ( value >= 0 && value <= wxFONTENCODING_MAX )
|
||||||
{
|
{
|
||||||
encoding = (wxFontEncoding)value;
|
encoding = (wxFontEncoding)value;
|
||||||
@@ -440,7 +452,7 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
|
|
||||||
RestorePath(pathOld);
|
RestorePath(pathOld);
|
||||||
}
|
}
|
||||||
#endif
|
#endif // wxUSE_CONFIG
|
||||||
|
|
||||||
// if didn't find it there, try to recognize it ourselves
|
// if didn't find it there, try to recognize it ourselves
|
||||||
if ( encoding == wxFONTENCODING_SYSTEM )
|
if ( encoding == wxFONTENCODING_SYSTEM )
|
||||||
@@ -590,6 +602,7 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
if ( n != -1 )
|
if ( n != -1 )
|
||||||
{
|
{
|
||||||
encoding = gs_encodings[n];
|
encoding = gs_encodings[n];
|
||||||
|
}
|
||||||
|
|
||||||
#if wxUSE_CONFIG
|
#if wxUSE_CONFIG
|
||||||
// save the result in the config now
|
// save the result in the config now
|
||||||
@@ -597,8 +610,10 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
{
|
{
|
||||||
wxConfigBase *config = GetConfig();
|
wxConfigBase *config = GetConfig();
|
||||||
|
|
||||||
// remember the alt encoding for this charset
|
// remember the alt encoding for this charset - or remember that
|
||||||
if ( !config->Write(charset, (long)encoding) )
|
// we don't know it
|
||||||
|
long value = n == -1 ? wxFONTENCODING_UNKNOWN : (long)encoding;
|
||||||
|
if ( !config->Write(charset, value) )
|
||||||
{
|
{
|
||||||
wxLogError(_("Failed to remember the encoding for the charset '%s'."), charset.c_str());
|
wxLogError(_("Failed to remember the encoding for the charset '%s'."), charset.c_str());
|
||||||
}
|
}
|
||||||
@@ -607,8 +622,6 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
|||||||
}
|
}
|
||||||
#endif // wxUSE_CONFIG
|
#endif // wxUSE_CONFIG
|
||||||
}
|
}
|
||||||
//else: cancelled
|
|
||||||
}
|
|
||||||
#endif // wxUSE_GUI
|
#endif // wxUSE_GUI
|
||||||
|
|
||||||
return encoding;
|
return encoding;
|
||||||
|
Reference in New Issue
Block a user