Implement auto-completion support for wxTextEntry in wxOSX/Cocoa.

Both completing a set of fixed strings and dynamic completion using a custom
completer are supported, although completing the file names remains MSW-only
for now.

Note that, unlike under MSW, auto-completion under Mac is not automatic and
has to be triggered manually by calling complete: method. This is done by
pressing F5 key by default. In the future we should call it automatically on a
timer event to make it more obviously discoverable.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-04-17 23:14:15 +00:00
parent ed7dda9251
commit c729f16fa5
5 changed files with 90 additions and 24 deletions

View File

@@ -45,9 +45,22 @@
#include "wx/filefn.h"
#include "wx/sysopt.h"
#include "wx/thread.h"
#include "wx/textcompleter.h"
#include "wx/osx/private.h"
wxTextEntry::wxTextEntry()
{
m_completer = NULL;
m_editable = true;
m_maxLength = 0;
}
wxTextEntry::~wxTextEntry()
{
delete m_completer;
}
wxString wxTextEntry::DoGetValue() const
{
return GetTextPeer()->GetStringValue() ;
@@ -224,4 +237,23 @@ wxTextWidgetImpl * wxTextEntry::GetTextPeer() const
return win ? dynamic_cast<wxTextWidgetImpl *>(win->GetPeer()) : NULL;
}
// ----------------------------------------------------------------------------
// Auto-completion
// ----------------------------------------------------------------------------
bool wxTextEntry::DoAutoCompleteStrings(const wxArrayString& choices)
{
wxTextCompleterFixed * const completer = new wxTextCompleterFixed;
completer->SetCompletions(choices);
return DoAutoCompleteCustom(completer);
}
bool wxTextEntry::DoAutoCompleteCustom(wxTextCompleter *completer)
{
m_completer = completer;
return true;
}
#endif // wxUSE_TEXTCTRL