Clase wxFontMapper
wxFontMapper gestiona la correspondencia definible por el usuario entre los nombres lógicos de las fuentes y las fuentes presentes en la máquina.
Las implementaciones por defecto de todas las funciones preguntarán al usuario si no es capaz de encontrar la respuesta por sí mismo y almacenarán la respuesta en un fichero de configuración (configurable mediante las funciones SetConfigXXX). Este comportamiento puede desactivarse dando el valor de false al parámetro "interactive".
Sin embargo, las funciones siempre consultarán el archivo de configuración para permitir que los valores definidos por el usuario anulen la lógica predeterminada y no hay forma de desactivar esto, que no debería ser necesario nunca porque si "interactivo" nunca fue verdadero, el archivo de configuración nunca se crea de todos modos.
En caso de que todo lo demás falle (es decir, no hay ningún registro en el fichero de configuración y "interactive" es falso o el usuario se niega a elegir cualquier reemplazo), la clase consulta wxEncodingConverter para codificaciones "equivalentes" (por ejemplo, iso8859-2 y cp1250) y las prueba.
Uso de wxFontMapper junto con las clases wxMBConv
Si se necesita mostrar texto en una codificación que no está disponible en el sistema anfitrión (ver wxFontMapper::IsEncodingAvailable), se pueden usar estas dos clases para encontrar una fuente en una codificación similar (ver wxFontMapper::GetAltForEncoding) y convertir el texto a esta codificación (clases wxMBConv). El siguiente fragmento de código lo demuestra:
if (!wxFontMapper::Get()->IsEncodingAvailable(enc, facename)) { wxFontEncoding alternative; if (wxFontMapper::Get()->GetAltForEncoding(enc, &alternative, facename, false)) { wxCSConv convFrom(wxFontMapper::Get()->GetEncodingName(enc)); wxCSConv convTo(wxFontMapper::Get()->GetEncodingName(alternative)); text = wxString(text.mb_str(convFrom), convTo); } else ...failure (or we may try iso8859-1/7bit ASCII)... } ...display text...
Funciones miembro
wxFontMapper()
wxFontMapper::wxFontMapper()
Construtor por defecto.
Nota: La forma preferida de crear una instancia de wxFontMapper es llamar a wxFontMapper::Get().
~wxFontMapper()
virtual wxFontMapper::~wxFontMapper()
Destructor virtual.
CharsetToEncoding()
virtual wxFontEncoding wxFontMapper::CharsetToEncoding( const wxString & charset, bool interactive = true )
Devuelve la codificación para el conjunto de caracteres dado (en forma de RFC 2046) o wxFONTENCODING_SYSTEM si no se ha podido decodificar.
Hay que tener cuidado cuando utilice esta función con interactive establecido en true (valor por defecto), ya que la función puede mostrar un cuadro de diálogo al usuario que puede dar lugar a reentradas inesperadas y también puede tardar mucho más tiempo que una simple llamada a la función. Por estas razones, es casi siempre una mala idea llamar a esta función desde los manejadores de eventos generados repetidamente como EVT_PAINT.
Get()
static wxFontMapper* wxFontMapper::Get()
Obtiene el objeto mapeador de fuentes actual.
Si no hay un objeto actual, crea uno.
GetAllEncodingNames()
static const wxChar** wxFontMapper::GetAllEncodingNames(wxFontEncoding encoding)
Devuelve la matriz de todos los nombres posibles para la codificación dada.
La matriz está terminada en NULL. Si no está vacía, el primer nombre es el nombre canónico de la codificación, es decir, la misma cadena que devuelve GetEncodingName().
GetAltForEncoding()
bool wxFontMapper::GetAltForEncoding( wxFontEncoding encoding, wxFontEncoding * alt_encoding, const wxString & facename = wxEmptyString, bool interactive = true )
Encuentra una alternativa para la codificación dada (que se supone que no está disponible en este sistema).
Si tiene éxito, devuelve true y rellena la estructura info con los parámetros necesarios para crear la fuente, en caso contrario devuelve false.
La primera forma es para uso interno de wxWidgets mientras que la segunda es más adecuada para uso general - devuelve wxFontEncoding que puede pasarse consecuentemente al constructor wxFont.
GetAltForEncoding()
bool wxFontMapper::GetAltForEncoding( wxFontEncoding encoding, wxNativeEncodingInfo * info, const wxString & facename = wxEmptyString, bool interactive = true )
Encuentra una alternativa para la codificación dada (que se supone que no está disponible en este sistema).
Si tiene éxito, devuelve true y rellena la estructura info con los parámetros necesarios para crear la fuente, en caso contrario devuelve false.
La primera forma es para uso interno de wxWidgets mientras que la segunda es más adecuada para uso general - devuelve wxFontEncoding que puede pasarse consecuentemente al constructor wxFont.
GetEncoding()
static wxFontEncoding wxFontMapper::GetEncoding(size_t n)
Devuelve la n-ésima codificación soportada.
Junto con GetSupportedEncodingsCount(), este método puede utilizarse para obtener todas las codificaciones admitidas.
GetEncodingDescription()
static wxString wxFontMapper::GetEncodingDescription(wxFontEncoding encoding)
Devuelve una cadena legible por el usuario que describe la codificación dada.
GetEncodingFromName()
static wxFontEncoding wxFontMapper::GetEncodingFromName(const wxString & encoding)
Devuelve la codificación correspondiente al nombre interno dado.
Esta función es la inversa de GetEncodingName() y es intencionadamente menos general que CharsetToEncoding(), es decir, no intenta hacer conjeturas ni pregunta nunca al usuario. Está pensado solo como una forma de restaurar objetos previamente serializados usando GetEncodingName().
GetEncodingName()
static wxString wxFontMapper::GetEncodingName(wxFontEncoding encoding)
Devuelve un identificador de cadena interno para la codificación (véase también wxFontMapper::GetEncodingDescription).
GetSupportedEncodingsCount()
static size_t wxFontMapper::GetSupportedEncodingsCount()
Devuelve el número de codificaciones de fuentes soportadas por esta clase.
Junto con GetEncoding(), este método puede utilizarse para obtener todas las codificaciones admitidas.
IsEncodingAvailable()
virtual bool wxFontMapper::IsEncodingAvailable( wxFontEncoding encoding, const wxString & facename = wxEmptyString )
Comprueba si la codificación dada está disponible en la cara dada o no.
Si no se indica ninguna facename, busca cualquier fuente en esta codificación.
Set()
static wxFontMapper* wxFontMapper::Set(wxFontMapper * mapper)
Establece el objeto mapeador de fuentes actual y devuelve el anterior (puede ser NULL).
Este método solo es útil si se desea conectar un mapeador de fuentes alternativo en wxWidgets.
SetConfigPath()
void wxFontMapper::SetConfigPath(const wxString & prefix)
Establece la ruta raíz de configuración a utilizar (debe ser una ruta absoluta).
SetDialogParent()
void wxFontMapper::SetDialogParent(wxWindow * parent)
La ventana padre de los diálogos modales.
SetDialogTitle()
void wxFontMapper::SetDialogTitle(const wxString & title)
El título para los diálogos (hay que tener en cuenta que el predeterminado es bastante razonable).