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:
Vadim Zeitlin
2001-08-02 19:20:47 +00:00
parent bf9b6266fa
commit 3e7fb236ea

View File

@@ -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;