]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/dataview/mymodels.h
No changes, just refactor wxMSW wxComboBox code calling GetComboBoxInfo().
[wxWidgets.git] / samples / dataview / mymodels.h
index 42d81638d4acbdd368678b90b16a356da06370c6..996bd3ec6e5936b2a75ade1259182c5bf4ce02a3 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     06/01/06
 // RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
@@ -21,7 +21,7 @@ class MyMusicTreeModelNode
 {
 public:
     MyMusicTreeModelNode( MyMusicTreeModelNode* parent,
-                          const wxString &title, const wxString &artist, 
+                          const wxString &title, const wxString &artist,
                           unsigned int year )
     {
         m_parent = parent;
@@ -30,6 +30,8 @@ public:
         m_artist = artist;
         m_year = year;
         m_quality = "good";
+
+        m_container = false;
     }
 
     MyMusicTreeModelNode( MyMusicTreeModelNode* parent,
@@ -39,6 +41,8 @@ public:
 
         m_title = branch;
         m_year = -1;
+
+        m_container = true;
     }
 
     ~MyMusicTreeModelNode()
@@ -53,7 +57,7 @@ public:
     }
 
     bool IsContainer() const
-        { return m_children.GetCount()>0; }
+        { return m_container; }
 
     MyMusicTreeModelNode* GetParent()
         { return m_parent; }
@@ -74,6 +78,17 @@ public:     // public to avoid getters/setters
     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;
@@ -109,11 +124,12 @@ public:
     // 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, 
+    void AddToClassical( const wxString &title, const wxString &artist,
                          unsigned int year );
     void Delete( const wxDataViewItem &item );
 
@@ -125,7 +141,7 @@ public:
     // override sorting to always sort branches ascendingly
 
     int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2,
-                 unsigned int column, bool ascending );
+                 unsigned int column, bool ascending ) const;
 
     // implementation of base class virtuals to define model
 
@@ -147,9 +163,12 @@ public:
     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, 
+    virtual unsigned int GetChildren( const wxDataViewItem &parent,
                                       wxDataViewItemArray &array ) const;
 
 private:
@@ -172,6 +191,15 @@ private:
 class MyListModel: public wxDataViewVirtualListModel
 {
 public:
+    enum
+    {
+        Col_EditableText,
+        Col_IconText,
+        Col_TextWithAttr,
+        Col_Custom,
+        Col_Max
+    };
+
     MyListModel();
 
     // helper methods to change the model
@@ -186,31 +214,36 @@ public:
 
     virtual unsigned int GetColumnCount() const
     {
-        return 3;
+        return Col_Max;
     }
 
     virtual wxString GetColumnType( unsigned int col ) const
     {
-        if (col == 1)
+        if (col == Col_IconText)
             return wxT("wxDataViewIconText");
 
         return wxT("string");
     }
 
-    virtual unsigned int GetRowCount()
-    {
-        return m_array.GetCount();
-    }
-
     virtual void GetValueByRow( wxVariant &variant,
                                 unsigned int row, unsigned int col ) const;
-    virtual bool GetAttrByRow( unsigned int row, unsigned int col, wxDataViewItemAttr &attr );
+    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_array;
+    wxArrayString    m_textColValues;
+    wxArrayString    m_iconColValues;
     wxIcon           m_icon[2];
-    int              m_virtualItems;
 };
 
+// ----------------------------------------------------------------------------
+// MyListStoreDerivedModel
+// ----------------------------------------------------------------------------
+
+class MyListStoreDerivedModel : public wxDataViewListStore
+{
+public:
+    virtual bool IsEnabledByRow(unsigned int row, unsigned int col) const;
+};