]> git.saurik.com Git - wxWidgets.git/commitdiff
Use symbolic constants for list model columns in dataview sample.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 10 Nov 2009 17:40:25 +0000 (17:40 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 10 Nov 2009 17:40:25 +0000 (17:40 +0000)
Using Col_EditableText, Col_IconText and Col_TextWithAttr instead of 0, 1 and
2 makes the sample code a bit easier to read.

Also use switch on the column value instead of nested ifs everywhere to give
compiler a chance to warn us if we forget to update some function when a new
column is added.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/dataview/dataview.cpp
samples/dataview/mymodels.cpp
samples/dataview/mymodels.h

index 7e65b9b9a665aa495b204ca7ddd9dff533598f02..dccee4f9e8b3bdca8623a1f6d272e6fa7d77897d 100644 (file)
@@ -545,10 +545,17 @@ void MyFrame::BuildDataViewCtrl(wxPanel* parent, unsigned int nPanel, unsigned l
             m_ctrl[1]->AssociateModel( m_list_model.get() );
 
             // the various columns
             m_ctrl[1]->AssociateModel( m_list_model.get() );
 
             // the various columns
-            m_ctrl[1]->AppendTextColumn("editable string", 0, wxDATAVIEW_CELL_EDITABLE);
-            m_ctrl[1]->AppendIconTextColumn("icon", 1, wxDATAVIEW_CELL_EDITABLE);
+            m_ctrl[1]->AppendTextColumn("editable string",
+                                        MyListModel::Col_EditableText,
+                                        wxDATAVIEW_CELL_EDITABLE);
+            m_ctrl[1]->AppendIconTextColumn("icon",
+                                            MyListModel::Col_IconText,
+                                            wxDATAVIEW_CELL_EDITABLE);
             m_ctrl[1]->AppendColumn(
             m_ctrl[1]->AppendColumn(
-                new wxDataViewColumn("attributes", new wxDataViewTextRenderer, 2 ));
+                new wxDataViewColumn("attributes",
+                                     new wxDataViewTextRenderer,
+                                     MyListModel::Col_TextWithAttr)
+            );
         }
         break;
 
         }
         break;
 
index 3c2f7f4f6451a4279282e765ee6dfdb47616d060..c3bf1ff87a49770b81a3a5a843e35e0f83e3badc 100644 (file)
@@ -404,31 +404,40 @@ void MyListModel::AddMany()
 void MyListModel::GetValueByRow( wxVariant &variant,
                                  unsigned int row, unsigned int col ) const
 {
 void MyListModel::GetValueByRow( wxVariant &variant,
                                  unsigned int row, unsigned int col ) const
 {
-    if (col==0)
-    {
-        if (row >= m_textColValues.GetCount())
-            variant = wxString::Format( "virtual row %d", row );
-        else
-            variant = m_textColValues[ row ];
-    }
-    else if (col==1)
+    switch ( col )
     {
     {
-        wxString text;
-        if ( row >= m_iconColValues.GetCount() )
-            text = "virtual icon";
-        else
-            text = m_iconColValues[row];
+        case Col_EditableText:
+            if (row >= m_textColValues.GetCount())
+                variant = wxString::Format( "virtual row %d", row );
+            else
+                variant = m_textColValues[ row ];
+            break;
 
 
-        variant << wxDataViewIconText(text, m_icon[row % 2]);
-    }
-    else if (col==2)
-    {
-        static const char *labels[5] =
-        {
-            "blue", "green", "red", "bold cyan", "default",
-        };
+        case Col_IconText:
+            {
+                wxString text;
+                if ( row >= m_iconColValues.GetCount() )
+                    text = "virtual icon";
+                else
+                    text = m_iconColValues[row];
+
+                variant << wxDataViewIconText(text, m_icon[row % 2]);
+            }
+            break;
+
+        case Col_TextWithAttr:
+            {
+                static const char *labels[5] =
+                {
+                    "blue", "green", "red", "bold cyan", "default",
+                };
+
+                variant = labels[row % 5];
+            }
+            break;
 
 
-        variant = labels[row % 5];
+        case Col_Max:
+            wxFAIL_MSG( "invalid column" );
     }
 }
 
     }
 }
 
@@ -437,16 +446,16 @@ bool MyListModel::GetAttrByRow( unsigned int row, unsigned int col,
 {
     switch ( col )
     {
 {
     switch ( col )
     {
-        case 0:
+        case Col_EditableText:
             return false;
 
             return false;
 
-        case 1:
+        case Col_IconText:
             if ( !(row % 2) )
                 return false;
             attr.SetColour(*wxLIGHT_GREY);
             break;
 
             if ( !(row % 2) )
                 return false;
             attr.SetColour(*wxLIGHT_GREY);
             break;
 
-        case 2:
+        case Col_TextWithAttr:
             // do what the labels defined above hint at
             switch ( row % 5 )
             {
             // do what the labels defined above hint at
             switch ( row % 5 )
             {
@@ -471,6 +480,9 @@ bool MyListModel::GetAttrByRow( unsigned int row, unsigned int col,
                     return false;
             }
             break;
                     return false;
             }
             break;
+
+        case Col_Max:
+            wxFAIL_MSG( "invalid column" );
     }
 
     return true;
     }
 
     return true;
@@ -481,8 +493,8 @@ bool MyListModel::SetValueByRow( const wxVariant &variant,
 {
     switch ( col )
     {
 {
     switch ( col )
     {
-        case 0:
-        case 1:
+        case Col_EditableText:
+        case Col_IconText:
             if (row >= m_textColValues.GetCount())
             {
                 // the item is not in the range of the items
             if (row >= m_textColValues.GetCount())
             {
                 // the item is not in the range of the items
@@ -492,22 +504,25 @@ bool MyListModel::SetValueByRow( const wxVariant &variant,
                 return false;
             }
 
                 return false;
             }
 
-            if ( col == 0 )
+            if ( col == Col_EditableText )
             {
                 m_textColValues[row] = variant.GetString();
             }
             {
                 m_textColValues[row] = variant.GetString();
             }
-            else // col == 1
+            else // col == Col_IconText
             {
                 wxDataViewIconText iconText;
                 iconText << variant;
                 m_iconColValues[row] = iconText.GetText();
             }
             {
                 wxDataViewIconText iconText;
                 iconText << variant;
                 m_iconColValues[row] = iconText.GetText();
             }
-            break;
+            return true;
 
 
-        default:
+        case Col_TextWithAttr:
             wxLogError("Cannot edit the column %d", col);
             wxLogError("Cannot edit the column %d", col);
-            return false;
+            break;
+
+        case Col_Max:
+            wxFAIL_MSG( "invalid column" );
     }
 
     }
 
-    return true;
+    return false;
 }
 }
index 01084a58c477da815457a584931ffa71da2e8e5d..6d110d645e9779ff20f4326430647611b1100828 100644 (file)
@@ -188,6 +188,14 @@ private:
 class MyListModel: public wxDataViewVirtualListModel
 {
 public:
 class MyListModel: public wxDataViewVirtualListModel
 {
 public:
+    enum
+    {
+        Col_EditableText,
+        Col_IconText,
+        Col_TextWithAttr,
+        Col_Max
+    };
+
     MyListModel();
 
     // helper methods to change the model
     MyListModel();
 
     // helper methods to change the model
@@ -202,12 +210,12 @@ public:
 
     virtual unsigned int GetColumnCount() const
     {
 
     virtual unsigned int GetColumnCount() const
     {
-        return 3;
+        return Col_Max;
     }
 
     virtual wxString GetColumnType( unsigned int col ) const
     {
     }
 
     virtual wxString GetColumnType( unsigned int col ) const
     {
-        if (col == 1)
+        if (col == Col_IconText)
             return wxT("wxDataViewIconText");
 
         return wxT("string");
             return wxT("wxDataViewIconText");
 
         return wxT("string");