// Author: Stefan Csomor
// Modified by: Kevin Ollivier
// Created: 1998-01-01
-// RCS-ID: $Id: textctrl.cpp 54820 2008-07-29 20:04:11Z SC $
+// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#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() ;
void wxTextEntry::Remove(long from, long to)
{
- GetTextPeer()->Remove( from , to ) ;
+ {
+ EventsSuppressor noevents(this);
+ GetTextPeer()->Remove( from , to );
+ }
+
+ SendTextUpdatedEventIfAllowed();
}
void wxTextEntry::SetSelection(long from, long to)
void wxTextEntry::WriteText(const wxString& str)
{
- GetTextPeer()->WriteText( str ) ;
+ {
+ EventsSuppressor noevents(this);
+ GetTextPeer()->WriteText( str );
+ }
+
+ SendTextUpdatedEventIfAllowed();
}
void wxTextEntry::Clear()
{
- GetTextPeer()->Clear() ;
+ {
+ EventsSuppressor noevents(this);
+ GetTextPeer()->Clear();
+ }
+
+ SendTextUpdatedEventIfAllowed();
}
bool wxTextEntry::IsEditable() const
wxTextWidgetImpl * wxTextEntry::GetTextPeer() const
{
- wxFAIL_MSG("You need to implement wxTextWidgetImpl* GetTextPeer() in your wxTextEntry subclass if you want to use the native impls of its methods.");
- return NULL;
+ wxWindow * const win = const_cast<wxTextEntry *>(this)->GetEditableWindow();
+
+ 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