]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datavcmn.cpp
added vendor display name (for consistency with app display name &c) (patch 1831303)
[wxWidgets.git] / src / common / datavcmn.cpp
index 9c8593fbb52f6a72b998aa87acf24f48518a572e..fca5b242575372fca1c166cbb1f6659849dc1ebb 100644 (file)
 #include "wx/dataview.h"
 
 #include "wx/spinctrl.h"
-#include "wx/dc.h"
-#include "wx/settings.h"
 
 #ifndef WX_PRECOMP
+    #include "wx/dc.h"
+    #include "wx/settings.h"
     #include "wx/log.h"
     #include "wx/icon.h"
+    #include "wx/crt.h"
 #endif
 
 const wxChar wxDataViewCtrlNameStr[] = wxT("dataviewCtrl");
@@ -36,13 +37,19 @@ bool operator == (const wxDataViewItem &left, const wxDataViewItem &right)
     return (left.GetID() == right.GetID() );
 }
 
+#ifdef __WXDEBUG__
+void wxDataViewItem::Print(const wxString& text) const
+{
+    wxPrintf("item %s: %l\n", text, (long)m_id);
+}
+#endif
 
 // ---------------------------------------------------------
 // wxDataViewModelNotifier
 // ---------------------------------------------------------
 
 #include "wx/listimpl.cpp"
-WX_DEFINE_LIST(wxDataViewModelNotifiers);
+WX_DEFINE_LIST(wxDataViewModelNotifiers)
 
 bool wxDataViewModelNotifier::ItemsAdded( const wxDataViewItem &parent, const wxDataViewItemArray &items )
 {
@@ -292,6 +299,8 @@ int wxDataViewModel::Compare( const wxDataViewItem &item1, const wxDataViewItem
 
 wxDataViewIndexListModel::wxDataViewIndexListModel( unsigned int initial_size )
 {
+    m_ordered = true;
+
     // build initial index
     unsigned int i;
     for (i = 1; i < initial_size+1; i++)
@@ -305,6 +314,8 @@ wxDataViewIndexListModel::~wxDataViewIndexListModel()
 
 void wxDataViewIndexListModel::RowPrepended()
 {
+    m_ordered = false;
+    
     unsigned int id = m_lastIndex++;
     m_hash.Insert( (void*) id, 0 );
     wxDataViewItem item( (void*) id );
@@ -313,6 +324,8 @@ void wxDataViewIndexListModel::RowPrepended()
 
 void wxDataViewIndexListModel::RowInserted( unsigned int before )
 {
+    m_ordered = false;
+    
     unsigned int id = m_lastIndex++;
     m_hash.Insert( (void*) id, before );
     wxDataViewItem item( (void*) id );
@@ -346,6 +359,12 @@ void wxDataViewIndexListModel::RowValueChanged( unsigned int row, unsigned int c
 
 unsigned int wxDataViewIndexListModel::GetRow( const wxDataViewItem &item ) const
 {
+    if (m_ordered)
+    {
+        unsigned int pos = wxPtrToUInt(item.GetID());
+        return pos-1;
+    }
+    
     // assert for not found
     return (unsigned int) m_hash.Index( item.GetID() );
 }
@@ -356,11 +375,27 @@ wxDataViewItem wxDataViewIndexListModel::GetItem( unsigned int row ) const
     return wxDataViewItem( m_hash[row] );
 }
 
+bool wxDataViewIndexListModel::HasDefaultCompare() const
+{ 
+    return !m_ordered;
+}
+
 int wxDataViewIndexListModel::Compare(const wxDataViewItem& item1,
                                       const wxDataViewItem& item2,
                                       unsigned int WXUNUSED(column),
                                       bool ascending)
 {
+    if (m_ordered)
+    {
+        unsigned int pos1 = wxPtrToUInt(item1.GetID());
+        unsigned int pos2 = wxPtrToUInt(item2.GetID());
+        
+        if (ascending)
+            return pos1 - pos2;
+        else 
+            return pos2 - pos1;
+    }
+    
     if (ascending)
         return GetRow(item1) - GetRow(item2);
 
@@ -379,6 +414,11 @@ bool wxDataViewIndexListModel::SetValue( const wxVariant &variant,
     return SetValue( variant, GetRow(item), col );
 }
 
+bool wxDataViewIndexListModel::GetAttr( const wxDataViewItem &item, unsigned int col, wxDataViewItemAttr &attr )
+{
+    return GetAttr( GetRow(item), col, attr );
+}
+
 wxDataViewItem wxDataViewIndexListModel::GetParent( const wxDataViewItem & WXUNUSED(item) ) const
 {
     return wxDataViewItem(0);
@@ -1048,7 +1088,7 @@ wxDataViewTreeStoreNode::~wxDataViewTreeStoreNode()
 }
 
 #include "wx/listimpl.cpp"
-WX_DEFINE_LIST(wxDataViewTreeStoreNodeList);
+WX_DEFINE_LIST(wxDataViewTreeStoreNodeList)
 
 wxDataViewTreeStoreContainerNode::wxDataViewTreeStoreContainerNode(
         wxDataViewTreeStoreNode *parent, const wxString &text,