]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/textctrl.mm
implement wxTreeCtrl::ItemHasChildren() properly for virtual root item; added unit...
[wxWidgets.git] / src / osx / cocoa / textctrl.mm
index 163f8a1fbcc983a28063b08d8b459dabb509fb54..3e5b8d87e79d5b7fd771bde8bfee1d3e2fc88d82 100644 (file)
 #include "wx/thread.h"
 
 #include "wx/osx/private.h"
-#include "wx/osx/carbon/private/mactext.h"
-
+#include "wx/osx/cocoa/private/textimpl.h"
 
 @implementation wxNSTextField
 
-- (void)setImplementation: (wxWidgetImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetImpl*) implementation
-{
-    return impl;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
-- (BOOL) isFlipped
+- (id)initWithFrame:(NSRect)frame
 {
-    return YES;
+    [super initWithFrame:frame];
+    impl = NULL;
+    [self setDelegate: self];
+    [self setTarget: self];
+//    [self setAction: @selector(enterAction:)];
+    return self;
 }
 
 // use our common calls
 {
     [self setStringValue: title];
 }
-
-@end
-
-class wxNSTextFieldControl : public wxMacTextControl
+/*
+- (void)controlTextDidChange:(NSNotification *)aNotification
 {
-public :
-    wxNSTextFieldControl( wxTextCtrl *wxPeer, WXWidget w ) : wxMacTextControl(wxPeer, w)
-    {
-    }
-    virtual ~wxNSTextFieldControl()
+    if ( impl )
     {
+        wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer();
+        if ( wxpeer ) {
+            wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, wxpeer->GetId());
+            event.SetEventObject( wxpeer );
+            event.SetString( static_cast<wxTextCtrl*>(wxpeer)->GetValue() );
+            wxpeer->HandleWindowEvent( event );
+        }
     }
+}
 
-    virtual void VisibilityChanged(bool shown){}
-    virtual wxString GetStringValue() const 
-    {
-        wxCFStringRef cf( (CFStringRef) [[(wxNSTextField*) m_osxView stringValue] retain] );
-        return cf.AsString(m_wxPeer->GetFont().GetEncoding());
-    }
-    virtual void SetStringValue( const wxString &str) 
+- (void)controlTextDidEndEditing:(NSNotification *)aNotification
+{
+    if ( impl )
     {
-        [(wxNSTextField*) m_osxView setStringValue: wxCFStringRef( str , m_wxPeer->GetFont().GetEncoding() ).AsNSString()];
+        wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer();
+        if ( wxpeer ) {
+            wxFocusEvent event(wxEVT_KILL_FOCUS, wxpeer->GetId());
+            event.SetEventObject( wxpeer );
+            event.SetWindow( wxpeer );
+            wxpeer->HandleWindowEvent( event );
+        }
     }
-    virtual void Copy() {}
-    virtual void Cut() {}
-    virtual void Paste() {}
-    virtual bool CanPaste() const { return false;}
-    virtual void SetEditable(bool editable) {}
-    virtual void GetSelection( long* from, long* to) const {}
-    virtual void SetSelection( long from , long to ){}
-    virtual void WriteText(const wxString& str) 
+}
+
+- (void) enterAction: (id) sender
+{
+    if ( impl )
     {
-        // temp hack to get logging working early
-        wxString former = GetStringValue();
-        SetStringValue( former + str );
+        wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer();
+        if ( wxpeer && (wxpeer->GetWindowStyle() & wxTE_PROCESS_ENTER) ) {
+            wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, wxpeer->GetId());
+            event.SetEventObject( wxpeer );
+            event.SetString( static_cast<wxTextCtrl*>(wxpeer)->GetValue() );
+            wxpeer->HandleWindowEvent( event );
+        }
     }
-};
+}
+*/
+@end
+
+wxNSTextFieldControl::wxNSTextFieldControl( wxTextCtrl *wxPeer, WXWidget w ) : wxWidgetCocoaImpl(wxPeer, w)
+{
+}
+
+wxNSTextFieldControl::~wxNSTextFieldControl()
+{
+}
+
+wxString wxNSTextFieldControl::GetStringValue() const 
+{
+    wxCFStringRef cf( (CFStringRef) [[(wxNSTextField*) m_osxView stringValue] retain] );
+    return cf.AsString(m_wxPeer->GetFont().GetEncoding());
+}
+void wxNSTextFieldControl::SetStringValue( const wxString &str) 
+{
+    [(wxNSTextField*) m_osxView setStringValue: wxCFStringRef( str , m_wxPeer->GetFont().GetEncoding() ).AsNSString()];
+}
+void wxNSTextFieldControl::Copy() 
+{
+}
+
+void wxNSTextFieldControl::Cut() 
+{
+}
+
+void wxNSTextFieldControl::Paste() 
+{
+}
+
+bool wxNSTextFieldControl::CanPaste() const 
+{ 
+    return false;
+}
+
+void wxNSTextFieldControl::SetEditable(bool editable) 
+{
+    [(wxNSTextField*) m_osxView setEditable:editable];
+}
+
+void wxNSTextFieldControl::GetSelection( long* from, long* to) const 
+{
+}
+
+void wxNSTextFieldControl::SetSelection( long from , long to )
+{
+}
+
+void wxNSTextFieldControl::WriteText(const wxString& str) 
+{
+    // temp hack to get logging working early
+    wxString former = GetStringValue();
+    SetStringValue( former + str );
+}
 
 wxWidgetImplType* wxWidgetImpl::CreateTextControl( wxTextCtrl* wxpeer, 
                                     wxWindowMac* parent, 
@@ -119,11 +176,14 @@ wxWidgetImplType* wxWidgetImpl::CreateTextControl( wxTextCtrl* wxpeer,
                                     long style, 
                                     long extraStyle)
 {
-    NSView* sv = (wxpeer->GetParent()->GetHandle() );
-    
     NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
     wxNSTextField* v = [[wxNSTextField alloc] initWithFrame:r];
-    [sv addSubview:v];
+    
+    if ( style & wxNO_BORDER )
+    {
+        [v setBezeled:NO];
+        [v setBordered:NO];
+    }
 
     //[v setBezeled:NO];
     //[v setEditable:NO];