]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement attributes support in generic wxDataViewIconTextRenderer.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 12 Oct 2009 22:44:15 +0000 (22:44 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 12 Oct 2009 22:44:15 +0000 (22:44 +0000)
Simply override RenderWithAttr() instead of Render().

Update the sample to show that this works now.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/dataview.h
samples/dataview/mymodels.cpp
src/generic/datavgen.cpp

index 66090fa892c8b13c085dd5d8a4729c06f1a069db..27148332da577e260fa8e8befb7f275a3a4048bb 100644 (file)
@@ -275,12 +275,19 @@ public:
     wxDataViewIconTextRenderer( const wxString &varianttype = wxT("wxDataViewIconText"),
                                 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
                                 int align = wxDVR_DEFAULT_ALIGNMENT );
-    virtual ~wxDataViewIconTextRenderer();
 
     bool SetValue( const wxVariant &value );
     bool GetValue( wxVariant &value ) const;
 
-    virtual bool Render( wxRect cell, wxDC *dc, int state );
+    virtual bool RenderWithAttr(wxDC& dc,
+                                const wxRect& rect,
+                                int align,
+                                const wxDataViewItemAttr *attr,
+                                int state);
+    virtual bool Render(wxRect cell, wxDC *dc, int state)
+    {
+        return DummyRender(cell, dc, state);
+    }
     virtual wxSize GetSize() const;
 
     virtual bool HasEditorCtrl() const { return true; }
index 13cdd6704f5f361c9f5e11a482644a1121b49145..d8854606d34ebb3a0933223e2a20ac939c37d8fd 100644 (file)
@@ -430,31 +430,42 @@ void MyListModel::GetValueByRow( wxVariant &variant,
 bool MyListModel::GetAttrByRow( unsigned int row, unsigned int col,
                                 wxDataViewItemAttr &attr )
 {
-    if (col != 2)
-        return false;
-
-    // do what the labels defined above hint at
-    switch ( row % 5 )
+    switch ( col )
     {
         case 0:
-            attr.SetColour(*wxBLUE);
-            break;
+            return false;
 
         case 1:
-            attr.SetColour(*wxGREEN);
+            if ( !(row % 2) )
+                return false;
+            attr.SetColour(*wxLIGHT_GREY);
             break;
 
         case 2:
-            attr.SetColour(*wxRED);
-            break;
-
-        case 3:
-            attr.SetColour(*wxCYAN);
-            attr.SetBold(true);
+            // do what the labels defined above hint at
+            switch ( row % 5 )
+            {
+                case 0:
+                    attr.SetColour(*wxBLUE);
+                    break;
+
+                case 1:
+                    attr.SetColour(*wxGREEN);
+                    break;
+
+                case 2:
+                    attr.SetColour(*wxRED);
+                    break;
+
+                case 3:
+                    attr.SetColour(*wxCYAN);
+                    attr.SetBold(true);
+                    break;
+
+                case 4:
+                    return false;
+            }
             break;
-
-        case 4:
-            return false;
     }
 
     return true;
index 1653ebfcca868805fd5942f444058d1abac8598b..06a43cfd93bf24aa5cb0a2d0d710888dc4363438 100644 (file)
@@ -1108,10 +1108,6 @@ const wxString &varianttype, wxDataViewCellMode mode, int align ) :
     SetAlignment(align);
 }
 
-wxDataViewIconTextRenderer::~wxDataViewIconTextRenderer()
-{
-}
-
 bool wxDataViewIconTextRenderer::SetValue( const wxVariant &value )
 {
     m_value << value;
@@ -1123,17 +1119,23 @@ bool wxDataViewIconTextRenderer::GetValue( wxVariant& WXUNUSED(value) ) const
     return false;
 }
 
-bool wxDataViewIconTextRenderer::Render( wxRect cell, wxDC *dc, int state )
+bool
+wxDataViewIconTextRenderer::RenderWithAttr(wxDC& dc,
+                                           const wxRect& rect,
+                                           int align,
+                                           const wxDataViewItemAttr *attr,
+                                           int state)
 {
     int xoffset = 0;
-    const wxIcon &icon = m_value.GetIcon();
-    if (icon.IsOk())
+
+    const wxIcon& icon = m_value.GetIcon();
+    if ( icon.IsOk() )
     {
-        dc->DrawIcon( icon, cell.x, cell.y + ((cell.height - icon.GetHeight()) / 2));
-        xoffset =  icon.GetWidth()+4;
+        dc.DrawIcon(icon, rect.x, rect.y + (rect.height - icon.GetHeight())/2);
+        xoffset = icon.GetWidth()+4;
     }
 
-    RenderText( m_value.GetText(), xoffset, cell, dc, state );
+    RenderText(dc, rect, align, m_value.GetText(), attr, state, xoffset);
 
     return true;
 }