]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataview.h
using common code
[wxWidgets.git] / include / wx / dataview.h
index 958849901f826732bf902f5a367673984ed3cf95..01dfc25dc433e6af9944d02d55ed4df8fcd4bd81 100644 (file)
@@ -20,7 +20,6 @@
 #include "wx/textctrl.h"
 #include "wx/bitmap.h"
 #include "wx/variant.h"
-#include "wx/listctrl.h"
 #include "wx/dynarray.h"
 #include "wx/icon.h"
 
@@ -118,6 +117,42 @@ private:
 };
 
 
+
+// ----------------------------------------------------------------------------
+// wxDataViewItemAttr: a structure containing the visual attributes of an item
+// ----------------------------------------------------------------------------
+
+// TODO: this should be renamed to wxItemAttr or something general like this
+
+class WXDLLIMPEXP_ADV wxDataViewItemAttr
+{
+public:
+    // ctors
+    wxDataViewItemAttr() 
+    { 
+        m_bold = false;
+        m_italic = false;
+    }
+
+    // setters
+    void SetColour(const wxColour& colour) { m_colour = colour; }
+    void SetBold( bool set ) { m_bold = set; }
+    void SetItalic( bool set ) { m_italic = set; }
+    
+    // accessors
+    bool HasColour() const { return m_colour.Ok(); }
+    const wxColour& GetColour() const { return m_colour; }
+    
+    bool GetBold() const { return m_bold; }
+    bool GetItalic() const { return m_italic; }
+
+private:
+    wxColour m_colour;
+    bool     m_bold;
+    bool     m_italic;
+};
+
+
 // ---------------------------------------------------------
 // wxDataViewModel
 // ---------------------------------------------------------
@@ -143,6 +178,10 @@ public:
     virtual bool SetValue( const wxVariant &variant,
                            const wxDataViewItem &item, unsigned int col ) = 0;
 
+    // Get text attribute, return false of default attributes should be used
+    virtual bool GetAttr( const wxDataViewItem &WXUNUSED(item), unsigned int WXUNUSED(col), wxDataViewItemAttr &WXUNUSED(attr) )
+        { return false; }
+
     // define hierachy
     virtual wxDataViewItem GetParent( const wxDataViewItem &item ) const = 0;
     virtual bool IsContainer( const wxDataViewItem &item ) const = 0;
@@ -171,6 +210,9 @@ public:
     virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2,
                          unsigned int column, bool ascending );
     virtual bool HasDefaultCompare() const { return false; }
+    
+    // internal
+    virtual bool IsIndexListModel() const { return false; }
 
 protected:
     // the user should not delete this class directly: he should use DecRef() instead!
@@ -189,14 +231,15 @@ public:
     wxDataViewIndexListModel( unsigned int initial_size = 0 );
     ~wxDataViewIndexListModel();
 
-    virtual unsigned int GetRowCount() = 0;
-
     virtual void GetValue( wxVariant &variant,
                            unsigned int row, unsigned int col ) const = 0;
 
     virtual bool SetValue( const wxVariant &variant,
                            unsigned int row, unsigned int col ) = 0;
 
+    virtual bool GetAttr( unsigned int WXUNUSED(row), unsigned int WXUNUSED(col), wxDataViewItemAttr &WXUNUSED(attr) )
+        { return false; }
+        
     void RowPrepended();
     void RowInserted( unsigned int before );
     void RowAppended();
@@ -213,7 +256,7 @@ public:
 
     virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2,
                          unsigned int column, bool ascending );
-    virtual bool HasDefaultCompare() const { return true; }
+    virtual bool HasDefaultCompare() const;
 
     // implement base methods
 
@@ -221,13 +264,20 @@ public:
                            const wxDataViewItem &item, unsigned int col ) const;
     virtual bool SetValue( const wxVariant &variant,
                            const wxDataViewItem &item, unsigned int col );
+    virtual bool GetAttr( const wxDataViewItem &item, unsigned int col, wxDataViewItemAttr &attr );
     virtual wxDataViewItem GetParent( const wxDataViewItem &item ) const;
     virtual bool IsContainer( const wxDataViewItem &item ) const;
     virtual unsigned int GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const;
 
+    // internal
+    virtual bool IsIndexListModel() const { return true; }
+    unsigned int GetLastIndex() const { return m_lastIndex; }
+    
 private:
     wxDataViewItemArray m_hash;
     unsigned int m_lastIndex;
+    bool m_ordered;
+    bool m_useHash;
 };
 
 
@@ -424,8 +474,8 @@ public:
     const wxBitmap &GetBitmap() const       { return m_bitmap; }
     unsigned int GetModelColumn() const     { return static_cast<unsigned int>(m_model_column); }
 
-    wxDataViewCtrl *GetOwner()              { return m_owner; }
-    wxDataViewRenderer* GetRenderer()       { return m_renderer; }
+    wxDataViewCtrl *GetOwner() const        { return m_owner; }
+    wxDataViewRenderer* GetRenderer() const { return m_renderer; }
 
 protected:
     wxDataViewRenderer      *m_renderer;
@@ -718,7 +768,7 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&);
 // wxDataViewSpinRenderer
 // -------------------------------------
 
-class wxDataViewSpinRenderer: public wxDataViewCustomRenderer
+class WXDLLIMPEXP_ADV wxDataViewSpinRenderer: public wxDataViewCustomRenderer
 {
 public:
     wxDataViewSpinRenderer( int min, int max,
@@ -865,7 +915,7 @@ public:
     virtual unsigned int GetColumnCount() const
         { return 1; };
     virtual wxString GetColumnType( unsigned int WXUNUSED(col) ) const
-        { return "wxDataViewIconText"; }
+        { return wxT("wxDataViewIconText"); }
 
     wxDataViewTreeStoreNode *FindNode( const wxDataViewItem &item ) const;
     wxDataViewTreeStoreContainerNode *FindContainerNode( const wxDataViewItem &item ) const;