+ MyMusicModel() {}
+
+ virtual unsigned int GetColumnCount() const
+ {
+ return 3;
+ }
+
+ virtual wxString GetColumnType( unsigned int col ) const
+ {
+ return "string";
+ }
+
+ virtual void GetValue( wxVariant &variant,
+ const wxDataViewItem &item, unsigned int col ) const
+ {
+ variant = wxString("");
+ int ID = item.GetID();
+ switch (ID)
+ {
+ case 1: if (col == 0) variant = wxString("My Music"); break;
+ case 2: if (col == 0) variant = wxString("Pop music"); break;
+ case 5: if (col == 0) variant = wxString("Classical music"); break;
+ case 3:
+ {
+ switch (col)
+ {
+ case 0: variant = wxString("You are not alone"); break;
+ case 1: variant = wxString("Michael Jackson"); break;
+ case 2: variant = wxString("1995");
+ }
+ }
+ break;
+ case 4:
+ {
+ switch (col)
+ {
+ case 0: variant = wxString("Take a bow"); break;
+ case 1: variant = wxString("Madonna"); break;
+ case 2: variant = wxString("1994");
+ }
+ }
+ break;
+ case 6:
+ {
+ switch (col)
+ {
+ case 0: variant = wxString("Ninth symphony"); break;
+ case 1: variant = wxString("Ludwig v. Beethoven"); break;
+ case 2: variant = wxString("1824");
+ }
+ }
+ break;
+ case 7:
+ {
+ switch (col)
+ {
+ case 0: variant = wxString("German requiem"); break;
+ case 1: variant = wxString("Johannes Brahms"); break;
+ case 2: variant = wxString("1868");
+ }
+ }
+ break;
+ }
+
+ }
+
+ virtual bool SetValue( const wxVariant &variant,
+ const wxDataViewItem &item, unsigned int col )
+ {
+ // readonly
+ return true;
+ }
+
+ virtual bool HasChildren( const wxDataViewItem &item ) const
+ {
+ int ID = item.GetID();
+ return ((ID == 1) || (ID == 2) || (ID == 5));
+ }
+
+ virtual int GetChildCount( const wxDataViewItem &item ) const
+ {
+ int ID = item.GetID();
+ switch (ID)
+ {
+ case 1: return 2;
+ case 2: return 2;
+ case 5: return 2;
+ }
+ return 0;
+ }
+ virtual wxDataViewItem GetParent( const wxDataViewItem &child ) const
+ {
+ int ID = child.GetID();
+ switch (ID)
+ {
+ case 2:
+ case 5: return wxDataViewItem( 1 );
+ case 3:
+ case 4: return wxDataViewItem( 2 );
+ case 6:
+ case 7: return wxDataViewItem( 5 );
+ }
+
+ return wxDataViewItem(0);
+ }
+ virtual wxDataViewItem GetFirstChild( const wxDataViewItem &parent ) const
+ {
+ int ID = parent.GetID();
+ switch (ID)
+ {
+ case 1: return wxDataViewItem( 2 );
+ case 2: return wxDataViewItem( 3 );
+ case 5: return wxDataViewItem( 6 );
+ }
+
+ return wxDataViewItem(0);
+ }
+ virtual wxDataViewItem GetNextSibling( const wxDataViewItem &item ) const
+ {
+ int ID = item.GetID();
+ switch (ID)
+ {
+ case 2: return wxDataViewItem( 5 );
+ case 3: return wxDataViewItem( 4 );
+ case 6: return wxDataViewItem( 7 );
+ }
+
+ return wxDataViewItem(0);
+ }
+ virtual wxDataViewItem GetNthChild( const wxDataViewItem &parent, unsigned int n ) const
+ {
+ if (!parent.IsOk())
+ {
+ // root node
+ if (n == 0)
+ return wxDataViewItem( 1 );
+
+ return wxDataViewItem( 0 );
+ }