textcompleter.h

Clase wxTextCompleterSimple

Una clase base más simple para objetos completadores personalizados.

Jerarquía:

Jerarquía de la clase wxTextCompleterSimple

Esta clase puede ser más sencilla de usar que la clase base wxTextCompleter ya que permite implementar un único método virtual en lugar de dos (al precio de almacenar todas las compleciones en un array temporal).

He aquí un ejemplo sencillo de un completador personalizado que completa los nombres de algunas piezas de ajedrez. Por supuesto, como la lista total solo tiene cuatro elementos, habría sido mucho más sencillo especificar simplemente la matriz que contiene todas las terminaciones en este ejemplo, pero el mismo enfoque podría utilizarse cuando el número total de terminaciones sea mucho mayor, siempre que el número de posibilidades para cada palabra siga siendo relativamente pequeño:

class MyTextCompleter : public wxTextCompleterSimple
{
public:
    virtual void GetCompletions(const wxString& prefix, wxArrayString& res)
    {
        const wxString firstWord = prefix.BeforeFirst(' ');
        if ( firstWord == "white" )
        {
            res.push_back("white pawn");
            res.push_back("white rook");
        }
        else if ( firstWord == "black" )
        {
            res.push_back("black king");
            res.push_back("black queen");
        }
        else
        {
            res.push_back("white");
            res.push_back("black");
        }
    }
};
...
wxTextCtrl *text = ...;
text->AutoComplete(new MyTextCompleter);

Funciones miembro

GetCompletions()

virtual void wxTextCompleterSimple::GetCompletions( const wxString & prefix, wxArrayString & res )

Método virtual puro que devuelve todas las terminaciones posibles para el prefijo dado.

El completador personalizado debe examinar el prefijo proporcionado y devolver todas las posibles terminaciones para él en el array de salida res.

Hay que tener en cuenta que los valores devueltos deben comenzar con el prefijo, de lo contrario serán simplemente ignorados, haciendo que añadirlos a la matriz en primer lugar sea inútil.

También hay que tener en cuenta que esta función puede ser llamada desde un hilo distinto del principal (actualmente siempre es así en MSW), por lo que debe utilizarse el mecanismo de sincronización adecuado para proteger los datos compartidos.

Parámetros
prefix
Prefijo posiblemente vacío que el usuario ya ha introducido.
res
Matriz inicialmente vacía que debe rellenarse con todas las terminaciones posibles (posiblemente ninguna si no hay posibilidades válidas que empiecen por el prefijo dado).