]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxDataViewRendererBase::PrepareForItem() helper.
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 30 Oct 2010 15:57:55 +0000 (15:57 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 30 Oct 2010 15:57:55 +0000 (15:57 +0000)
For calling SetValue() and SetAttr() consistently, instead of having the
same code duplicated all over the place.

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

include/wx/dvrenderers.h
src/common/datavcmn.cpp
src/generic/datavgen.cpp

index d22157a16ba4f382653bfeaa28ed4dd19f5bc08c..1be414ffb760ddfef238b44e936f4f2f01a445a1 100644 (file)
@@ -118,6 +118,10 @@ public:
 
     wxString GetVariantType() const             { return m_variantType; }
 
 
     wxString GetVariantType() const             { return m_variantType; }
 
+    // helper that calls SetValue and SetAttr:
+    void PrepareForItem(const wxDataViewModel *model,
+                        const wxDataViewItem& item, unsigned column);
+
     // renderer properties:
     virtual void SetMode( wxDataViewCellMode mode ) = 0;
     virtual wxDataViewCellMode GetMode() const = 0;
     // renderer properties:
     virtual void SetMode( wxDataViewCellMode mode ) = 0;
     virtual wxDataViewCellMode GetMode() const = 0;
index dd45d2b42e4f1327d99f26c36f51685f93676a77..94ddc67dc272a1fdcb2f1f006c360843525a4048 100644 (file)
@@ -779,6 +779,20 @@ bool wxDataViewRendererBase::FinishEditing()
     return true;
 }
 
     return true;
 }
 
+void wxDataViewRendererBase::PrepareForItem(const wxDataViewModel *model,
+                                            const wxDataViewItem& item,
+                                            unsigned column)
+{
+    wxVariant value;
+    model->GetValue(value, item, column);
+    SetValue(value);
+
+    wxDataViewItemAttr attr;
+    model->GetAttr(item, column, attr);
+    SetAttr(attr);
+}
+
+
 // ----------------------------------------------------------------------------
 // wxDataViewCustomRendererBase
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxDataViewCustomRendererBase
 // ----------------------------------------------------------------------------
index 2fe365515373df2bf212701a081beafb8f65be40..02555daa57a1c07c7c21871b9841af495bcb6ccd 100644 (file)
@@ -1553,14 +1553,8 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent )
         if (column == expander)
             width -= indent;
 
         if (column == expander)
             width -= indent;
 
-        wxVariant value;
         wxDataViewItem item = GetItemByRow( row );
         wxDataViewItem item = GetItemByRow( row );
-        model->GetValue( value, item, column->GetModelColumn());
-        cell->SetValue( value );
-
-        wxDataViewItemAttr attr;
-        model->GetAttr(item, column->GetModelColumn(), attr);
-        cell->SetAttr(attr);
+        cell->PrepareForItem(model, item, column->GetModelColumn());
 
         wxRect item_rect(x, 0, width, height);
         item_rect.Deflate(PADDING_RIGHTLEFT, 0);
 
         wxRect item_rect(x, 0, width, height);
         item_rect.Deflate(PADDING_RIGHTLEFT, 0);
@@ -1742,7 +1736,6 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
         for (unsigned int item = item_start; item < item_last; item++)
         {
             // get the cell value and set it into the renderer
         for (unsigned int item = item_start; item < item_last; item++)
         {
             // get the cell value and set it into the renderer
-            wxVariant value;
             wxDataViewTreeNode *node = NULL;
             wxDataViewItem dataitem;
 
             wxDataViewTreeNode *node = NULL;
             wxDataViewItem dataitem;
 
@@ -1763,12 +1756,7 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
                 dataitem = wxDataViewItem( wxUIntToPtr(item+1) );
             }
 
                 dataitem = wxDataViewItem( wxUIntToPtr(item+1) );
             }
 
-            model->GetValue( value, dataitem, col->GetModelColumn());
-            cell->SetValue( value );
-
-            wxDataViewItemAttr attr;
-            model->GetAttr(dataitem, col->GetModelColumn(), attr);
-            cell->SetAttr(attr);
+            cell->PrepareForItem(model, dataitem, col->GetModelColumn());
 
             // update cell_rect
             cell_rect.y = GetLineStart( item );
 
             // update cell_rect
             cell_rect.y = GetLineStart( item );
@@ -2520,14 +2508,7 @@ int wxDataViewMainWindow::GetLineStart( unsigned int row ) const
 
                 wxDataViewRenderer *renderer =
                     const_cast<wxDataViewRenderer*>(column->GetRenderer());
 
                 wxDataViewRenderer *renderer =
                     const_cast<wxDataViewRenderer*>(column->GetRenderer());
-
-                wxVariant value;
-                model->GetValue( value, item, column->GetModelColumn() );
-                renderer->SetValue( value );
-
-                wxDataViewItemAttr attr;
-                model->GetAttr(item, column->GetModelColumn(), attr);
-                renderer->SetAttr(attr);
+                renderer->PrepareForItem(model, item, column->GetModelColumn());
 
                 height = wxMax( height, renderer->GetSize().y );
             }
 
                 height = wxMax( height, renderer->GetSize().y );
             }
@@ -2588,14 +2569,7 @@ int wxDataViewMainWindow::GetLineAt( unsigned int y ) const
 
             wxDataViewRenderer *renderer =
                 const_cast<wxDataViewRenderer*>(column->GetRenderer());
 
             wxDataViewRenderer *renderer =
                 const_cast<wxDataViewRenderer*>(column->GetRenderer());
-
-            wxVariant value;
-            model->GetValue( value, item, column->GetModelColumn() );
-            renderer->SetValue( value );
-
-            wxDataViewItemAttr attr;
-            model->GetAttr(item, column->GetModelColumn(), attr);
-            renderer->SetAttr(attr);
+            renderer->PrepareForItem(model, item, column->GetModelColumn());
 
             height = wxMax( height, renderer->GetSize().y );
         }
 
             height = wxMax( height, renderer->GetSize().y );
         }
@@ -2646,14 +2620,7 @@ int wxDataViewMainWindow::GetLineHeight( unsigned int row ) const
 
             wxDataViewRenderer *renderer =
                 const_cast<wxDataViewRenderer*>(column->GetRenderer());
 
             wxDataViewRenderer *renderer =
                 const_cast<wxDataViewRenderer*>(column->GetRenderer());
-
-            wxVariant value;
-            model->GetValue( value, item, column->GetModelColumn() );
-            renderer->SetValue( value );
-
-            wxDataViewItemAttr attr;
-            model->GetAttr(item, column->GetModelColumn(), attr);
-            renderer->SetAttr(attr);
+            renderer->PrepareForItem(model, item, column->GetModelColumn());
 
             height = wxMax( height, renderer->GetSize().y );
         }
 
             height = wxMax( height, renderer->GetSize().y );
         }
@@ -3820,13 +3787,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
             if ( wxDataViewCustomRenderer *custom = cell->WXGetAsCustom() )
             {
                 // notify cell about click
             if ( wxDataViewCustomRenderer *custom = cell->WXGetAsCustom() )
             {
                 // notify cell about click
-                wxVariant value;
-                model->GetValue( value, item, col->GetModelColumn() );
-                custom->SetValue( value );
-
-                wxDataViewItemAttr attr;
-                model->GetAttr(item, col->GetModelColumn(), attr);
-                custom->SetAttr(attr);
+                custom->PrepareForItem(model, item, col->GetModelColumn());
 
                 wxRect cell_rect( xpos, GetLineStart( current ),
                                   col->GetWidth(), GetLineHeight( current ) );
 
                 wxRect cell_rect( xpos, GetLineStart( current ),
                                   col->GetWidth(), GetLineHeight( current ) );
@@ -4179,13 +4140,7 @@ unsigned int wxDataViewCtrl::GetBestColumnWidth(int idx) const
     {
         wxDataViewItem item = m_clientArea->GetItemByRow(row);
 
     {
         wxDataViewItem item = m_clientArea->GetItemByRow(row);
 
-        wxVariant value;
-        GetModel()->GetValue(value, item, column->GetModelColumn());
-        renderer->SetValue(value);
-
-        wxDataViewItemAttr attr;
-        GetModel()->GetAttr(item, column->GetModelColumn(), attr);
-        renderer->SetAttr(attr);
+        renderer->PrepareForItem(GetModel(), item, column->GetModelColumn());
 
         max_width = (unsigned)wxMax((int)max_width, renderer->GetSize().x);
     }
 
         max_width = (unsigned)wxMax((int)max_width, renderer->GetSize().x);
     }