diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index b879d3e7d8..e7a00ab617 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -833,24 +833,21 @@ void MyFrame::BuildDataViewCtrl(wxPanel* parent, unsigned int nPanel, unsigned l m_list_model = new MyListModel; m_ctrl[Page_List]->AssociateModel( m_list_model.get() ); - m_ctrl[Page_List]->AppendToggleColumn(L"\u2714", - MyListModel::Col_Toggle, - wxDATAVIEW_CELL_ACTIVATABLE, - wxCOL_WIDTH_AUTOSIZE); + wxDataViewColumn* const colCheckIconText = new wxDataViewColumn + ( + L"\u2714 + icon + text", + new wxDataViewCheckIconTextRenderer(), + MyListModel::Col_ToggleIconText, + wxCOL_WIDTH_AUTOSIZE + ); + m_ctrl[Page_List]->AppendColumn(colCheckIconText); - // the various columns m_ctrl[Page_List]->AppendTextColumn("editable string", MyListModel::Col_EditableText, wxDATAVIEW_CELL_EDITABLE, wxCOL_WIDTH_AUTOSIZE, wxALIGN_NOT, wxDATAVIEW_COL_SORTABLE); - m_ctrl[Page_List]->AppendIconTextColumn("icon", - MyListModel::Col_IconText, - wxDATAVIEW_CELL_EDITABLE, - wxCOL_WIDTH_AUTOSIZE, - wxALIGN_NOT, - wxDATAVIEW_COL_REORDERABLE | wxDATAVIEW_COL_SORTABLE); m_ctrl[Page_List]->AppendDateColumn("date", MyListModel::Col_Date); diff --git a/samples/dataview/mymodels.cpp b/samples/dataview/mymodels.cpp index e6ee751299..75f375d817 100644 --- a/samples/dataview/mymodels.cpp +++ b/samples/dataview/mymodels.cpp @@ -437,13 +437,6 @@ void MyListModel::GetValueByRow( wxVariant &variant, { switch ( col ) { - case Col_Toggle: - if (row >= m_toggleColValues.size()) - variant = false; - else - variant = m_toggleColValues[row]; - break; - case Col_EditableText: if (row >= m_textColValues.GetCount()) variant = wxString::Format( "virtual row %d", row ); @@ -451,15 +444,22 @@ void MyListModel::GetValueByRow( wxVariant &variant, variant = m_textColValues[ row ]; break; - case Col_IconText: + case Col_ToggleIconText: { wxString text; + wxCheckBoxState state; if ( row >= m_iconColValues.GetCount() ) + { text = "virtual icon"; + state = wxCHK_UNDETERMINED; + } else + { text = m_iconColValues[row]; + state = m_toggleColValues[row] ? wxCHK_CHECKED : wxCHK_UNCHECKED; + } - variant << wxDataViewIconText(text, m_icon[row % 2]); + variant << wxDataViewCheckIconText(text, m_icon[row % 2], state); } break; @@ -505,9 +505,6 @@ bool MyListModel::GetAttrByRow( unsigned int row, unsigned int col, { switch ( col ) { - case Col_Toggle: - return false; - case Col_EditableText: case Col_Date: if (row < m_toggleColValues.size()) @@ -521,7 +518,7 @@ bool MyListModel::GetAttrByRow( unsigned int row, unsigned int col, } return false; - case Col_IconText: + case Col_ToggleIconText: if ( !(row % 2) ) return false; attr.SetColour(*wxYELLOW); @@ -578,15 +575,8 @@ bool MyListModel::SetValueByRow( const wxVariant &variant, { switch ( col ) { - case Col_Toggle: - if (row >= m_toggleColValues.size()) - return false; - - m_toggleColValues[row] = variant.GetBool(); - return true; - case Col_EditableText: - case Col_IconText: + case Col_ToggleIconText: if (row >= m_textColValues.GetCount()) { // the item is not in the range of the items @@ -600,11 +590,13 @@ bool MyListModel::SetValueByRow( const wxVariant &variant, { m_textColValues[row] = variant.GetString(); } - else // col == Col_IconText + else // col == Col_ToggleIconText { - wxDataViewIconText iconText; - iconText << variant; - m_iconColValues[row] = iconText.GetText(); + wxDataViewCheckIconText checkIconText; + checkIconText << variant; + m_toggleColValues[row] = + checkIconText.GetCheckedState() == wxCHK_CHECKED; + m_iconColValues[row] = checkIconText.GetText(); } return true; diff --git a/samples/dataview/mymodels.h b/samples/dataview/mymodels.h index 3a7f5735da..8cab532f1f 100644 --- a/samples/dataview/mymodels.h +++ b/samples/dataview/mymodels.h @@ -208,9 +208,8 @@ class MyListModel: public wxDataViewVirtualListModel public: enum { - Col_Toggle, + Col_ToggleIconText, Col_EditableText, - Col_IconText, Col_Date, Col_TextWithAttr, Col_Custom, @@ -236,11 +235,8 @@ public: virtual wxString GetColumnType( unsigned int col ) const wxOVERRIDE { - if (col == Col_Toggle) - return "bool"; - - if (col == Col_IconText) - return "wxDataViewIconText"; + if (col == Col_ToggleIconText) + return wxDataViewCheckIconTextRenderer::GetDefaultType(); return "string"; }