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).
\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}
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();
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;
*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
// ----------------------------------------------------------------------------