1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxDataViewCtrl wxWidgets sample
4 // Author: Robert Roebling
5 // Modified by: Francesco Montorsi, Bo Yang
8 // Copyright: (c) Robert Roebling
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
13 // ----------------------------------------------------------------------------
15 // ----------------------------------------------------------------------------
18 Implement this data model
19 Title Artist Year Judgement
20 --------------------------------------------------------------------------
23 3: You are not alone Michael Jackson 1995 good
24 4: Take a bow Madonna 1994 good
26 6: Ninth Symphony Ludwig v. Beethoven 1824 good
27 7: German Requiem Johannes Brahms 1868 good
30 class MyMusicTreeModelNode
;
31 WX_DEFINE_ARRAY_PTR( MyMusicTreeModelNode
*, MyMusicTreeModelNodes
);
33 class MyMusicTreeModelNode
36 MyMusicTreeModelNode( MyMusicTreeModelNode
* parent
,
37 const wxString
&title
, const wxString
&artist
, int year
)
44 m_isContainer
= false;
47 MyMusicTreeModelNode( MyMusicTreeModelNode
* parent
,
48 const wxString
&branch
)
56 ~MyMusicTreeModelNode()
58 size_t count
= m_children
.GetCount();
60 for (i
= 0; i
< count
; i
++)
62 MyMusicTreeModelNode
*child
= m_children
[i
];
67 bool IsContainer() { return m_isContainer
; }
69 MyMusicTreeModelNode
* GetParent() { return m_parent
; }
70 MyMusicTreeModelNodes
&GetChildren() { return m_children
; }
71 MyMusicTreeModelNode
* GetNthChild( unsigned int n
) { return m_children
.Item( n
); }
72 void Insert( MyMusicTreeModelNode
* child
, unsigned int n
) { m_children
.Insert( child
, n
); }
73 void Append( MyMusicTreeModelNode
* child
) { m_children
.Add( child
); }
74 unsigned int GetChildCount() { return m_children
.GetCount(); }
83 MyMusicTreeModelNode
*m_parent
;
84 MyMusicTreeModelNodes m_children
;
88 class MyMusicTreeModel
: public wxDataViewModel
97 // helper method for wxLog
99 wxString
GetTitle( const wxDataViewItem
&item
) const;
100 int GetYear( const wxDataViewItem
&item
) const;
102 // helper methods to change the model
104 void AddToClassical( const wxString
&title
, const wxString
&artist
, int year
);
105 void Delete( const wxDataViewItem
&item
);
107 // override sorting to always sort branches ascendingly
109 int Compare( const wxDataViewItem
&item1
, const wxDataViewItem
&item2
,
110 unsigned int column
, bool ascending
);
112 // implementation of base class virtuals to define model
114 virtual unsigned int GetColumnCount() const
119 virtual wxString
GetColumnType( unsigned int col
) const
124 return wxT("string");
127 virtual void GetValue( wxVariant
&variant
,
128 const wxDataViewItem
&item
, unsigned int col
) const;
129 virtual bool SetValue( const wxVariant
&variant
,
130 const wxDataViewItem
&item
, unsigned int col
);
132 virtual wxDataViewItem
GetParent( const wxDataViewItem
&item
) const;
133 virtual bool IsContainer( const wxDataViewItem
&item
) const;
134 virtual unsigned int GetChildren( const wxDataViewItem
&parent
,
135 wxDataViewItemArray
&array
) const;
137 wxDataViewItem
GetNinthItem() const
139 return wxDataViewItem( m_ninth
);
143 MyMusicTreeModelNode
* m_root
;
144 MyMusicTreeModelNode
* m_pop
;
145 MyMusicTreeModelNode
* m_classical
;
146 MyMusicTreeModelNode
* m_ninth
;
147 bool m_classicalMusicIsKnownToControl
;
151 // ----------------------------------------------------------------------------
153 // ----------------------------------------------------------------------------
155 class MyListModel
: public wxDataViewVirtualListModel
160 // helper methods to change the model
162 void Prepend( const wxString
&text
);
163 void DeleteItem( const wxDataViewItem
&item
);
164 void DeleteItems( const wxDataViewItemArray
&items
);
168 // implementation of base class virtuals to define model
170 virtual unsigned int GetColumnCount() const
175 virtual wxString
GetColumnType( unsigned int col
) const
178 return wxT("wxDataViewIconText");
180 return wxT("string");
183 virtual unsigned int GetRowCount()
185 return m_array
.GetCount();
188 virtual void GetValueByRow( wxVariant
&variant
,
189 unsigned int row
, unsigned int col
) const;
190 virtual bool GetAttrByRow( unsigned int row
, unsigned int col
, wxDataViewItemAttr
&attr
);
191 virtual bool SetValueByRow( const wxVariant
&variant
,
192 unsigned int row
, unsigned int col
);
195 wxArrayString m_array
;