+/////////////////////////////////////////////////////////////////////////////
+// Name: src/osx/textentry_osx.cpp
+// Purpose: wxTextEntry
+// Author: Stefan Csomor
+// Modified by: Kevin Ollivier
+// Created: 1998-01-01
+// RCS-ID: $Id: textctrl.cpp 54820 2008-07-29 20:04:11Z SC $
+// Copyright: (c) Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#if wxUSE_TEXTCTRL
+
+#include "wx/textctrl.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/intl.h"
+ #include "wx/app.h"
+ #include "wx/utils.h"
+ #include "wx/dc.h"
+ #include "wx/button.h"
+ #include "wx/menu.h"
+ #include "wx/settings.h"
+ #include "wx/msgdlg.h"
+ #include "wx/toplevel.h"
+#endif
+
+#ifdef __DARWIN__
+ #include <sys/types.h>
+ #include <sys/stat.h>
+#else
+ #include <stat.h>
+#endif
+
+#if wxUSE_STD_IOSTREAM
+ #if wxUSE_IOSTREAMH
+ #include <fstream.h>
+ #else
+ #include <fstream>
+ #endif
+#endif
+
+#include "wx/filefn.h"
+#include "wx/sysopt.h"
+#include "wx/thread.h"
+
+#include "wx/osx/private.h"
+
+wxString wxTextEntry::DoGetValue() const
+{
+ return GetTextPeer()->GetStringValue() ;
+}
+
+void wxTextEntry::GetSelection(long* from, long* to) const
+{
+ GetTextPeer()->GetSelection( from , to ) ;
+}
+
+void wxTextEntry::SetMaxLength(unsigned long len)
+{
+ m_maxLength = len ;
+}
+
+// Clipboard operations
+
+void wxTextEntry::Copy()
+{
+ if (CanCopy())
+ GetTextPeer()->Copy() ;
+}
+
+void wxTextEntry::Cut()
+{
+ if (CanCut())
+ GetTextPeer()->Cut() ;
+}
+
+void wxTextEntry::Paste()
+{
+ if (CanPaste())
+ GetTextPeer()->Paste() ;
+}
+
+bool wxTextEntry::CanCopy() const
+{
+ // Can copy if there's a selection
+ long from, to;
+ GetSelection( &from, &to );
+
+ return (from != to);
+}
+
+bool wxTextEntry::CanCut() const
+{
+ if ( !IsEditable() )
+ return false;
+
+ // Can cut if there's a selection
+ long from, to;
+ GetSelection( &from, &to );
+
+ return (from != to);
+}
+
+bool wxTextEntry::CanPaste() const
+{
+ if (!IsEditable())
+ return false;
+
+ return GetTextPeer()->CanPaste() ;
+}
+
+void wxTextEntry::SetEditable(bool editable)
+{
+ if ( editable != m_editable )
+ {
+ m_editable = editable ;
+ GetTextPeer()->SetEditable( editable ) ;
+ }
+}
+
+void wxTextEntry::SetInsertionPoint(long pos)
+{
+ SetSelection( pos , pos ) ;
+}
+
+void wxTextEntry::SetInsertionPointEnd()
+{
+ long pos = GetLastPosition();
+ SetInsertionPoint( pos );
+}
+
+long wxTextEntry::GetInsertionPoint() const
+{
+ long begin, end ;
+ GetSelection( &begin , &end ) ;
+
+ return begin ;
+}
+
+wxTextPos wxTextEntry::GetLastPosition() const
+{
+ return GetTextPeer()->GetLastPosition() ;
+}
+
+void wxTextEntry::Remove(long from, long to)
+{
+ GetTextPeer()->Remove( from , to ) ;
+}
+
+void wxTextEntry::SetSelection(long from, long to)
+{
+ GetTextPeer()->SetSelection( from , to ) ;
+}
+
+void wxTextEntry::WriteText(const wxString& str)
+{
+ GetTextPeer()->WriteText( str ) ;
+}
+
+void wxTextEntry::Clear()
+{
+ GetTextPeer()->Clear() ;
+}
+
+bool wxTextEntry::IsEditable() const
+{
+ return m_editable ;
+}
+
+// ----------------------------------------------------------------------------
+// Undo/redo
+// ----------------------------------------------------------------------------
+
+void wxTextEntry::Undo()
+{
+ if (CanUndo())
+ GetTextPeer()->Undo() ;
+}
+
+void wxTextEntry::Redo()
+{
+ if (CanRedo())
+ GetTextPeer()->Redo() ;
+}
+
+bool wxTextEntry::CanUndo() const
+{
+ if ( !IsEditable() )
+ return false ;
+
+ return GetTextPeer()->CanUndo() ;
+}
+
+bool wxTextEntry::CanRedo() const
+{
+ if ( !IsEditable() )
+ return false ;
+
+ return GetTextPeer()->CanRedo() ;
+}
+
+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;
+}
+#endif // wxUSE_TEXTCTRL