]> git.saurik.com Git - wxWidgets.git/commitdiff
Start on Get/SetStyle support for OS X Cocoa wxTextCtrl.
authorKevin Ollivier <kevino@theolliviers.com>
Sun, 1 Nov 2009 00:58:04 +0000 (00:58 +0000)
committerKevin Ollivier <kevino@theolliviers.com>
Sun, 1 Nov 2009 00:58:04 +0000 (00:58 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/cocoa/private/textimpl.h
include/wx/osx/core/private.h
include/wx/osx/textctrl.h
src/osx/cocoa/textctrl.mm
src/osx/textctrl_osx.cpp

index b405b19b1cc9aaf08cd9e89c7ac74cee4cd5441c..7505bc9882ef2c3cf84bd03fb24fdfed913a2a18 100644 (file)
@@ -57,6 +57,9 @@ public:
     virtual void SetSelection( long from , long to );
     virtual void WriteText(const wxString& str) ;
     virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true );
+    
+    virtual bool GetStyle(long position, wxTextAttr& style);
+    virtual void SetStyle(long start, long end, const wxTextAttr& style);
 
 protected:
     NSScrollView* m_scrollView;
index 917f6a684a346439f3001fe3febfa91010f72319..9d3fbdb52f759ed4a7a7faa809ccd663c8dcc698 100644 (file)
@@ -556,6 +556,7 @@ public :
     virtual void GetSelection( long* from, long* to ) const = 0 ;
     virtual void WriteText( const wxString& str ) = 0 ;
 
+    virtual bool GetStyle( long position, wxTextAttr& style);
     virtual void SetStyle( long start, long end, const wxTextAttr& style ) ;
     virtual void Copy() ;
     virtual void Cut() ;
index 76f52edf97c72fb0dd161ba8e4681345ea37f81b..c7c934144af23dafb2003a5666cc50e33eb83999 100644 (file)
@@ -93,6 +93,7 @@ public:
     // methods apply the given text style to the given selection or to
     // set/get the style which will be used for all appended text
     virtual bool SetFont( const wxFont &font );
+    virtual bool GetStyle(long position, wxTextAttr& style);
     virtual bool SetStyle(long start, long end, const wxTextAttr& style);
     virtual bool SetDefaultStyle(const wxTextAttr& style);
 
index 2c91b8bc273ad330a84d536e67fc3548220d4f3e..e0bdfdfd20cb7544c0997f7a9ae7fd65d46be696 100644 (file)
@@ -429,6 +429,45 @@ void wxNSTextViewControl::SetFont( const wxFont & font , const wxColour& WXUNUSE
         [m_textView setFont: font.OSXGetNSFont()];
 }
 
+bool wxNSTextViewControl::GetStyle(long position, wxTextAttr& style)
+{
+    if (m_textView) {
+        NSTextStorage* storage = [m_textView textStorage];
+        NSFont* font = [storage attribute:NSFontAttributeName atIndex:position effectiveRange:NULL];
+        if (font)
+            style.SetFont(wxFont(font));
+        NSColor* bgcolor = [storage attribute:NSBackgroundColorAttributeName atIndex:position effectiveRange:NULL];
+        if (bgcolor)
+            style.SetBackgroundColour(wxColour(bgcolor));
+        NSColor* fgcolor = [storage attribute:NSForegroundColorAttributeName atIndex:position effectiveRange:NULL];
+        style.SetTextColour(wxColour(fgcolor));
+        return true;
+    }
+
+    return false;
+}
+
+void wxNSTextViewControl::SetStyle(long start,
+                                long end,
+                                const wxTextAttr& style)
+{
+    if (m_textView) {
+        NSRange range = NSMakeRange(start, end-start);
+        NSTextStorage* storage = [m_textView textStorage];
+        
+        wxFont font = style.GetFont();
+        if (font.IsOk())
+            [storage addAttribute:NSFontAttributeName value:style.GetFont().OSXGetNSFont() range:range];
+        
+        wxColour bgcolor = style.GetBackgroundColour();
+        if (bgcolor.IsOk())
+            [storage addAttribute:NSBackgroundColorAttributeName value:bgcolor.OSXGetNSColor() range:range];
+        
+        wxColour fgcolor = style.GetTextColour();
+        if (fgcolor.IsOk())
+            [storage addAttribute:NSForegroundColorAttributeName value:fgcolor.OSXGetNSColor() range:range];
+    }
+}
 
 // wxNSTextFieldControl
 
index 1ff3094dbc4d7c49ecec37b518bc5d5c23097642..6edd282e97b83ec4339ba51db7a97f455252569d 100644 (file)
@@ -373,6 +373,11 @@ wxSize wxTextCtrl::DoGetBestSize() const
     return wxSize(wText, hText);
 }
 
+bool wxTextCtrl::GetStyle(long position, wxTextAttr& style)
+{
+    return GetTextPeer()->GetStyle(position, style);
+}
+
 // ----------------------------------------------------------------------------
 // Undo/redo
 // ----------------------------------------------------------------------------
@@ -724,6 +729,12 @@ bool wxTextCtrl::MacSetupCursor( const wxPoint& pt )
 // implementation base class
 // ----------------------------------------------------------------------------
 
+bool wxTextWidgetImpl::GetStyle(long WXUNUSED(position),
+                                wxTextAttr& WXUNUSED(style))
+{
+    return false;
+}
+
 void wxTextWidgetImpl::SetStyle(long WXUNUSED(start),
                                 long WXUNUSED(end),
                                 const wxTextAttr& WXUNUSED(style))