+static const wxChar* FONTMAPPER_ROOT_PATH = wxT("FontMapper");
+static const wxChar* FONTMAPPER_CHARSET_PATH = wxT("Charsets");
+static const wxChar* FONTMAPPER_CHARSET_ALIAS_PATH = wxT("Aliases");
+static const wxChar* FONTMAPPER_FONT_FROM_ENCODING_PATH = wxT("Encodings");
+
+// encodings supported by GetEncodingDescription
+static wxFontEncoding gs_encodings[] =
+{
+ wxFONTENCODING_ISO8859_1,
+ wxFONTENCODING_ISO8859_2,
+ wxFONTENCODING_ISO8859_3,
+ wxFONTENCODING_ISO8859_4,
+ wxFONTENCODING_ISO8859_5,
+ wxFONTENCODING_ISO8859_6,
+ wxFONTENCODING_ISO8859_7,
+ wxFONTENCODING_ISO8859_8,
+ wxFONTENCODING_ISO8859_9,
+ wxFONTENCODING_ISO8859_10,
+ wxFONTENCODING_ISO8859_11,
+ wxFONTENCODING_ISO8859_12,
+ wxFONTENCODING_ISO8859_13,
+ wxFONTENCODING_ISO8859_14,
+ wxFONTENCODING_ISO8859_15,
+ wxFONTENCODING_KOI8,
+ wxFONTENCODING_CP1250,
+ wxFONTENCODING_CP1251,
+ wxFONTENCODING_CP1252,
+ wxFONTENCODING_CP1253,
+ wxFONTENCODING_CP1254,
+ wxFONTENCODING_CP1255,
+ wxFONTENCODING_CP1256,
+ wxFONTENCODING_CP1257,
+};
+
+// the descriptions for them
+static const wxChar* gs_encodingDescs[] =
+{
+ wxTRANSLATE( "West European (ISO-8859-1/Latin 1)" ),
+ wxTRANSLATE( "Central European (ISO-8859-2/Latin 2)" ),
+ wxTRANSLATE( "Esperanto (ISO-8859-3)" ),
+ wxTRANSLATE( "Baltic (ISO-8859-4)" ),
+ wxTRANSLATE( "Cyrillic (Latin 5)" ),
+ wxTRANSLATE( "Arabic (ISO-8859-6)" ),
+ wxTRANSLATE( "Greek (ISO-8859-7)" ),
+ wxTRANSLATE( "Hebrew (ISO-8859-8)" ),
+ wxTRANSLATE( "Turkish (ISO-8859-9)" ),
+ wxTRANSLATE( "Baltic II (ISO-8859-10)" ),
+ wxTRANSLATE( "Thai (ISO-8859-11)" ),
+ wxTRANSLATE( "ISO-8859-12" ),
+ wxTRANSLATE( "ISO-8859-13" ),
+ wxTRANSLATE( "ISO-8859-14" ),
+ wxTRANSLATE( "West European new (ISO-8859-15/Latin 0)" ),
+ wxTRANSLATE( "KOI8-R" ),
+ wxTRANSLATE( "Windows Latin 2 (CP 1250)" ),
+ wxTRANSLATE( "Windows Cyrillic (CP 1251)" ),
+ wxTRANSLATE( "Windows Latin 1 (CP 1252)" ),
+ wxTRANSLATE( "Windows Greek (CP 1253)" ),
+ wxTRANSLATE( "Windows Turkish (CP 1254)" ),
+ wxTRANSLATE( "Windows Hebrew (CP 1255)" ),
+ wxTRANSLATE( "Windows Arabic (CP 1256)" ),
+ wxTRANSLATE( "Windows Baltic (CP 1257)" ),
+};
+
+// and the internal names
+static const wxChar* gs_encodingNames[] =
+{
+ wxT( "iso8859-1" ),
+ wxT( "iso8859-2" ),
+ wxT( "iso8859-3" ),
+ wxT( "iso8859-4" ),
+ wxT( "iso8859-5" ),
+ wxT( "iso8859-6" ),
+ wxT( "iso8859-7" ),
+ wxT( "iso8859-8" ),
+ wxT( "iso8859-9" ),
+ wxT( "iso8859-10" ),
+ wxT( "iso8859-11" ),
+ wxT( "iso8859-12" ),
+ wxT( "iso8859-13" ),
+ wxT( "iso8859-14" ),
+ wxT( "iso8859-15" ),
+ wxT( "koi8-r" ),
+ wxT( "windows1250" ),
+ wxT( "windows1251" ),
+ wxT( "windows1252" ),
+ wxT( "windows1253" ),
+ wxT( "windows1254" ),
+ wxT( "windows1255" ),
+ wxT( "windows1256" ),
+ wxT( "windows1257" ),
+};
+
+// ----------------------------------------------------------------------------
+// global data
+// ----------------------------------------------------------------------------
+
+// private object
+static wxFontMapper gs_fontMapper;
+
+// and public pointer
+wxFontMapper * wxTheFontMapper = &gs_fontMapper;
+
+// ----------------------------------------------------------------------------
+// private classes
+// ----------------------------------------------------------------------------
+
+// change the config path during the lifetime of this object
+class wxFontMapperPathChanger
+{
+public:
+ wxFontMapperPathChanger(wxFontMapper *fontMapper, const wxString& path)
+ {
+ m_fontMapper = fontMapper;
+ m_ok = m_fontMapper->ChangePath(path, &m_pathOld);
+ }
+
+ bool IsOk() const { return m_ok; }
+
+ ~wxFontMapperPathChanger()
+ {
+ if ( IsOk() )
+ m_fontMapper->RestorePath(m_pathOld);
+ }
+
+private:
+ wxFontMapper *m_fontMapper;
+ bool m_ok;
+ wxString m_pathOld;
+};