| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        mymodels.h
 
- // Purpose:     wxDataViewCtrl wxWidgets sample
 
- // Author:      Robert Roebling
 
- // Modified by: Francesco Montorsi, Bo Yang
 
- // Created:     06/01/06
 
- // Copyright:   (c) Robert Roebling
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- // ----------------------------------------------------------------------------
 
- // MyMusicTreeModelNode: a node inside MyMusicTreeModel
 
- // ----------------------------------------------------------------------------
 
- class MyMusicTreeModelNode;
 
- WX_DEFINE_ARRAY_PTR( MyMusicTreeModelNode*, MyMusicTreeModelNodePtrArray );
 
- class MyMusicTreeModelNode
 
- {
 
- public:
 
-     MyMusicTreeModelNode( MyMusicTreeModelNode* parent,
 
-                           const wxString &title, const wxString &artist,
 
-                           unsigned int year )
 
-     {
 
-         m_parent = parent;
 
-         m_title = title;
 
-         m_artist = artist;
 
-         m_year = year;
 
-         m_quality = "good";
 
-         m_container = false;
 
-     }
 
-     MyMusicTreeModelNode( MyMusicTreeModelNode* parent,
 
-                           const wxString &branch )
 
-     {
 
-         m_parent = parent;
 
-         m_title = branch;
 
-         m_year = -1;
 
-         m_container = true;
 
-     }
 
-     ~MyMusicTreeModelNode()
 
-     {
 
-         // free all our children nodes
 
-         size_t count = m_children.GetCount();
 
-         for (size_t i = 0; i < count; i++)
 
-         {
 
-             MyMusicTreeModelNode *child = m_children[i];
 
-             delete child;
 
-         }
 
-     }
 
-     bool IsContainer() const
 
-         { return m_container; }
 
-     MyMusicTreeModelNode* GetParent()
 
-         { return m_parent; }
 
-     MyMusicTreeModelNodePtrArray& GetChildren()
 
-         { return m_children; }
 
-     MyMusicTreeModelNode* GetNthChild( unsigned int n )
 
-         { return m_children.Item( n ); }
 
-     void Insert( MyMusicTreeModelNode* child, unsigned int n)
 
-         { m_children.Insert( child, n); }
 
-     void Append( MyMusicTreeModelNode* child )
 
-         { m_children.Add( child ); }
 
-     unsigned int GetChildCount() const
 
-         { return m_children.GetCount(); }
 
- public:     // public to avoid getters/setters
 
-     wxString                m_title;
 
-     wxString                m_artist;
 
-     int                     m_year;
 
-     wxString                m_quality;
 
-     // TODO/FIXME:
 
-     // the GTK version of wxDVC (in particular wxDataViewCtrlInternal::ItemAdded)
 
-     // needs to know in advance if a node is or _will be_ a container.
 
-     // Thus implementing:
 
-     //   bool IsContainer() const
 
-     //    { return m_children.GetCount()>0; }
 
-     // doesn't work with wxGTK when MyMusicTreeModel::AddToClassical is called
 
-     // AND the classical node was removed (a new node temporary without children
 
-     // would be added to the control)
 
-     bool m_container;
 
- private:
 
-     MyMusicTreeModelNode          *m_parent;
 
-     MyMusicTreeModelNodePtrArray   m_children;
 
- };
 
- // ----------------------------------------------------------------------------
 
- // MyMusicTreeModel
 
- // ----------------------------------------------------------------------------
 
- /*
 
- Implement this data model
 
-             Title               Artist               Year        Judgement
 
- --------------------------------------------------------------------------
 
- 1: My Music:
 
-     2:  Pop music
 
-         3:  You are not alone   Michael Jackson      1995        good
 
-         4:  Take a bow          Madonna              1994        good
 
-     5:  Classical music
 
-         6:  Ninth Symphony      Ludwig v. Beethoven  1824        good
 
-         7:  German Requiem      Johannes Brahms      1868        good
 
- */
 
- class MyMusicTreeModel: public wxDataViewModel
 
- {
 
- public:
 
-     MyMusicTreeModel();
 
-     ~MyMusicTreeModel()
 
-     {
 
-         delete m_root;
 
-     }
 
-     // helper method for wxLog
 
-     wxString GetTitle( const wxDataViewItem &item ) const;
 
-     wxString GetArtist( const wxDataViewItem &item ) const;
 
-     int GetYear( const wxDataViewItem &item ) const;
 
-     // helper methods to change the model
 
-     void AddToClassical( const wxString &title, const wxString &artist,
 
-                          unsigned int year );
 
-     void Delete( const wxDataViewItem &item );
 
-     wxDataViewItem GetNinthItem() const
 
-     {
 
-        return wxDataViewItem( m_ninth );
 
-     }
 
-     // override sorting to always sort branches ascendingly
 
-     int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2,
 
-                  unsigned int column, bool ascending ) const;
 
-     // implementation of base class virtuals to define model
 
-     virtual unsigned int GetColumnCount() const
 
-     {
 
-         return 6;
 
-     }
 
-     virtual wxString GetColumnType( unsigned int col ) const
 
-     {
 
-         if (col == 2)
 
-             return wxT("long");
 
-         return wxT("string");
 
-     }
 
-     virtual void GetValue( wxVariant &variant,
 
-                            const wxDataViewItem &item, unsigned int col ) const;
 
-     virtual bool SetValue( const wxVariant &variant,
 
-                            const wxDataViewItem &item, unsigned int col );
 
-     virtual bool IsEnabled( const wxDataViewItem &item,
 
-                             unsigned int col ) const;
 
-     virtual wxDataViewItem GetParent( const wxDataViewItem &item ) const;
 
-     virtual bool IsContainer( const wxDataViewItem &item ) const;
 
-     virtual unsigned int GetChildren( const wxDataViewItem &parent,
 
-                                       wxDataViewItemArray &array ) const;
 
- private:
 
-     MyMusicTreeModelNode*   m_root;
 
-     // pointers to some "special" nodes of the tree:
 
-     MyMusicTreeModelNode*   m_pop;
 
-     MyMusicTreeModelNode*   m_classical;
 
-     MyMusicTreeModelNode*   m_ninth;
 
-     // ??
 
-     bool                    m_classicalMusicIsKnownToControl;
 
- };
 
- // ----------------------------------------------------------------------------
 
- // MyListModel
 
- // ----------------------------------------------------------------------------
 
- class MyListModel: public wxDataViewVirtualListModel
 
- {
 
- public:
 
-     enum
 
-     {
 
-         Col_EditableText,
 
-         Col_IconText,
 
-         Col_TextWithAttr,
 
-         Col_Custom,
 
-         Col_Max
 
-     };
 
-     MyListModel();
 
-     // helper methods to change the model
 
-     void Prepend( const wxString &text );
 
-     void DeleteItem( const wxDataViewItem &item );
 
-     void DeleteItems( const wxDataViewItemArray &items );
 
-     void AddMany();
 
-     // implementation of base class virtuals to define model
 
-     virtual unsigned int GetColumnCount() const
 
-     {
 
-         return Col_Max;
 
-     }
 
-     virtual wxString GetColumnType( unsigned int col ) const
 
-     {
 
-         if (col == Col_IconText)
 
-             return wxT("wxDataViewIconText");
 
-         return wxT("string");
 
-     }
 
-     virtual void GetValueByRow( wxVariant &variant,
 
-                                 unsigned int row, unsigned int col ) const;
 
-     virtual bool GetAttrByRow( unsigned int row, unsigned int col,
 
-                                wxDataViewItemAttr &attr ) const;
 
-     virtual bool SetValueByRow( const wxVariant &variant,
 
-                                 unsigned int row, unsigned int col );
 
- private:
 
-     wxArrayString    m_textColValues;
 
-     wxArrayString    m_iconColValues;
 
-     wxIcon           m_icon[2];
 
- };
 
- // ----------------------------------------------------------------------------
 
- // MyListStoreDerivedModel
 
- // ----------------------------------------------------------------------------
 
- class MyListStoreDerivedModel : public wxDataViewListStore
 
- {
 
- public:
 
-     virtual bool IsEnabledByRow(unsigned int row, unsigned int col) const;
 
- };
 
 
  |