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
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;
+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
// ----------------------------------------------------------------------------
if (column == expander)
width -= indent;
if (column == expander)
width -= indent;
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);
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
wxDataViewTreeNode *node = NULL;
wxDataViewItem dataitem;
wxDataViewTreeNode *node = NULL;
wxDataViewItem dataitem;
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 );
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 );
}
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 );
}
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 );
}
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 ) );
{
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);
}