X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c7789014106c9269b0f4ecc1a3071b14f351d3f..94929e7b60de96bd3b064984ae8995d665329411:/src/common/datavcmn.cpp?ds=sidebyside diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index 79f5b89c45..b38d9489f6 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -456,18 +456,18 @@ int wxDataViewIndexListModel::Compare(const wxDataViewItem& item1, void wxDataViewIndexListModel::GetValue( wxVariant &variant, const wxDataViewItem &item, unsigned int col ) const { - GetValue( variant, GetRow(item), col ); + GetValueByRow( variant, GetRow(item), col ); } bool wxDataViewIndexListModel::SetValue( const wxVariant &variant, const wxDataViewItem &item, unsigned int col ) { - return SetValue( variant, GetRow(item), col ); + return SetValueByRow( variant, GetRow(item), col ); } bool wxDataViewIndexListModel::GetAttr( const wxDataViewItem &item, unsigned int col, wxDataViewItemAttr &attr ) { - return GetAttr( GetRow(item), col, attr ); + return GetAttrByRow( GetRow(item), col, attr ); } wxDataViewItem wxDataViewIndexListModel::GetParent( const wxDataViewItem & WXUNUSED(item) ) const @@ -603,18 +603,18 @@ int wxDataViewVirtualListModel::Compare(const wxDataViewItem& item1, void wxDataViewVirtualListModel::GetValue( wxVariant &variant, const wxDataViewItem &item, unsigned int col ) const { - GetValue( variant, GetRow(item), col ); + GetValueByRow( variant, GetRow(item), col ); } bool wxDataViewVirtualListModel::SetValue( const wxVariant &variant, const wxDataViewItem &item, unsigned int col ) { - return SetValue( variant, GetRow(item), col ); + return SetValueByRow( variant, GetRow(item), col ); } bool wxDataViewVirtualListModel::GetAttr( const wxDataViewItem &item, unsigned int col, wxDataViewItemAttr &attr ) { - return GetAttr( GetRow(item), col, attr ); + return GetAttrByRow( GetRow(item), col, attr ); } wxDataViewItem wxDataViewVirtualListModel::GetParent( const wxDataViewItem & WXUNUSED(item) ) const @@ -1354,6 +1354,198 @@ bool wxDataViewChoiceRenderer::GetValue( wxVariant &value ) const #endif +//----------------------------------------------------------------------------- +// wxDataViewListStore +//----------------------------------------------------------------------------- + +wxDataViewListStore::wxDataViewListStore() +{ +} + +wxDataViewListStore::~wxDataViewListStore() +{ + wxVector::iterator it; + for (it = m_data.begin(); it != m_data.end(); ++it) + { + wxDataViewListStoreLine* line = *it; + delete line; + } +} + +void wxDataViewListStore::PrependColumn( const wxString &varianttype ) +{ + m_cols.Insert( varianttype, 0 ); +} + +void wxDataViewListStore::InsertColumn( unsigned int pos, const wxString &varianttype ) +{ + m_cols.Insert( varianttype, pos ); +} + +void wxDataViewListStore::AppendColumn( const wxString &varianttype ) +{ + m_cols.Add( varianttype ); +} + +unsigned int wxDataViewListStore::GetColumnCount() const +{ + return m_cols.GetCount(); +} + +wxString wxDataViewListStore::GetColumnType( unsigned int pos ) const +{ + return m_cols[pos]; +} + +void wxDataViewListStore::AppendItem( const wxVector &values, wxClientData *data ) +{ + wxDataViewListStoreLine *line = new wxDataViewListStoreLine( data ); + line->m_values = values; + m_data.push_back( line ); + + RowAppended(); +} + +void wxDataViewListStore::PrependItem( const wxVector &values, wxClientData *data ) +{ + wxDataViewListStoreLine *line = new wxDataViewListStoreLine( data ); + line->m_values = values; + m_data.insert( m_data.begin(), line ); + + RowPrepended(); +} + +void wxDataViewListStore::InsertItem( unsigned int row, const wxVector &values, wxClientData *data ) +{ + wxDataViewListStoreLine *line = new wxDataViewListStoreLine( data ); + line->m_values = values; + m_data.insert( m_data.begin()+row, line ); + + RowInserted( row ); +} + +void wxDataViewListStore::DeleteItem( unsigned row ) +{ + wxVector::iterator it = m_data.begin() + row; + m_data.erase( it ); + + RowDeleted( row ); +} + +void wxDataViewListStore::DeleteAllItems() +{ + wxVector::iterator it; + for (it = m_data.begin(); it != m_data.end(); ++it) + { + wxDataViewListStoreLine* line = *it; + delete line; + } + + Reset( 0 ); +} + +void wxDataViewListStore::GetValueByRow( wxVariant &value, unsigned int row, unsigned int col ) const +{ + wxDataViewListStoreLine *line = m_data[row]; + value = line->m_values[col]; +} + +bool wxDataViewListStore::SetValueByRow( const wxVariant &value, unsigned int row, unsigned int col ) +{ + wxDataViewListStoreLine *line = m_data[row]; + line->m_values[col] = value; + + return true; +} + +//----------------------------------------------------------------------------- +// wxDataViewListCtrl +//----------------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxDataViewListCtrl,wxDataViewCtrl) + +BEGIN_EVENT_TABLE(wxDataViewListCtrl,wxDataViewCtrl) + EVT_SIZE( wxDataViewListCtrl::OnSize ) +END_EVENT_TABLE() + +wxDataViewListCtrl::wxDataViewListCtrl() +{ +} + +wxDataViewListCtrl::wxDataViewListCtrl( wxWindow *parent, wxWindowID id, + const wxPoint& pos, const wxSize& size, long style, + const wxValidator& validator ) +{ + Create( parent, id, pos, size, style, validator ); + + wxDataViewListStore *store = new wxDataViewListStore; + AssociateModel( store ); + store->DecRef(); +} + +wxDataViewListCtrl::~wxDataViewListCtrl() +{ +} + + +bool wxDataViewListCtrl::Create( wxWindow *parent, wxWindowID id, + const wxPoint& pos, const wxSize& size, long style, + const wxValidator& validator ) +{ + return wxDataViewCtrl::Create( parent, id, pos, size, style, validator ); +} + +void wxDataViewListCtrl::AppendCol( wxDataViewColumn *column, const wxString &varianttype ) +{ + GetStore()->AppendColumn( varianttype ); + AppendColumn( column ); +} + +void wxDataViewListCtrl::PrependCol( wxDataViewColumn *column, const wxString &varianttype ) +{ + GetStore()->PrependColumn( varianttype ); + PrependColumn( column ); +} + +void wxDataViewListCtrl::InsertCol( unsigned int pos, wxDataViewColumn *column, const wxString &varianttype ) +{ + GetStore()->InsertColumn( pos, varianttype ); + InsertColumn( pos, column ); +} + +wxDataViewColumn *wxDataViewListCtrl::AppendTextCol( const wxString &label, + wxDataViewCellMode mode, int width, wxAlignment align, int flags ) +{ + GetStore()->AppendColumn( wxT("string") ); + return AppendTextColumn( label, GetStore()->GetColumnCount()-1, mode, width, align, flags ); +} + +wxDataViewColumn *wxDataViewListCtrl::AppendToggleCol( const wxString &label, + wxDataViewCellMode mode, int width, wxAlignment align, int flags ) +{ + GetStore()->AppendColumn( wxT("bool") ); + return AppendToggleColumn( label, GetStore()->GetColumnCount()-1, mode, width, align, flags ); +} + +wxDataViewColumn *wxDataViewListCtrl::AppendProgressCol( const wxString &label, + wxDataViewCellMode mode, int width, wxAlignment align, int flags ) +{ + GetStore()->AppendColumn( wxT("long") ); + return AppendProgressColumn( label, GetStore()->GetColumnCount()-1, mode, width, align, flags ); +} + +wxDataViewColumn *wxDataViewListCtrl::AppendIconTextCol( const wxString &label, + wxDataViewCellMode mode, int width, wxAlignment align, int flags ) +{ + GetStore()->AppendColumn( wxT("wxDataViewIconText") ); + return AppendIconTextColumn( label, GetStore()->GetColumnCount()-1, mode, width, align, flags ); +} + +void wxDataViewListCtrl::OnSize( wxSizeEvent &event ) +{ + event.Skip( true ); +} + //----------------------------------------------------------------------------- // wxDataViewTreeStore //-----------------------------------------------------------------------------