added wxTextEntry::AutoComplete() and implemented it for wxGTK

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49633 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2007-11-04 22:39:54 +00:00
parent 5fe302ef74
commit ecaed0bcda
5 changed files with 52 additions and 4 deletions

View File

@ -185,6 +185,7 @@ All (Unix):
All (GUI):
- Added wxTextCtrl::AutoComplete()
- Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty).
- Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron).
- Added support for drop down toolbar buttons (Tim Kosse).

View File

@ -328,6 +328,19 @@ the programmer should use \helpref{GetInsertionPoint}{wxtextctrlgetinsertionpoin
\helpref{wxTextCtrl::WriteText}{wxtextctrlwritetext}
\membersection{wxTextCtrl::AutoComplete}\label{wxtextctrlautocomplete}
\func{bool}{AutoComplete}{\param{const wxArrayString\& }{choices}}
Call this function to enable auto-completion of the text typed in a single-line
text control using the given \arg{choices}.
Notice that currently this function is only implemented in wxGTK2 port and does
nothing under the other platforms.
\newsince{2.9.0}
\membersection{wxTextCtrl::CanCopy}\label{wxtextctrlcancopy}
\func{virtual bool}{CanCopy}{\void}

View File

@ -43,15 +43,13 @@ public:
virtual void SetSelection(long from, long to);
virtual void GetSelection(long *from, long *to) const;
// status
virtual void AutoComplete(const wxArrayString& choices);
virtual bool IsEditable() const;
virtual void SetEditable(bool editable);
// set the max number of characters which may be entered in a single line
// text control
virtual void SetMaxLength(unsigned long len);
// implementation only from now on
void SendMaxLenEvent();

View File

@ -94,9 +94,16 @@ public:
bool HasSelection() const;
virtual wxString GetStringSelection() const;
// auto-completion
// ---------------
virtual void AutoComplete(const wxArrayString& WXUNUSED(choices)) { }
// status
// ------
virtual bool IsEditable() const = 0;
virtual void SetEditable(bool editable) = 0;

View File

@ -217,6 +217,35 @@ void wxTextEntry::GetSelection(long *from, long *to) const
*to = end;
}
// ----------------------------------------------------------------------------
// auto completion
// ----------------------------------------------------------------------------
void wxTextEntry::AutoComplete(const wxArrayString& choices)
{
GtkEntry * const entry = GTK_ENTRY(GetEditable());
wxCHECK_RET( entry, "auto completion doesn't work with this control" );
GtkListStore * const store = gtk_list_store_new(1, G_TYPE_STRING);
GtkTreeIter iter;
for ( wxArrayString::const_iterator i = choices.begin();
i != choices.end();
++i )
{
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
0, (const gchar *)i->utf8_str(),
-1);
}
GtkEntryCompletion * const completion = gtk_entry_completion_new();
gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store));
gtk_entry_completion_set_text_column(completion, 0);
gtk_entry_set_completion(entry, completion);
g_object_unref(completion);
}
// ----------------------------------------------------------------------------
// editable status
// ----------------------------------------------------------------------------