]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataview.h
Added support for wxEXEC_MAKE_GROUP_LEADER to wxExecute().
[wxWidgets.git] / include / wx / dataview.h
index 96af042c9d558d9d9aa72185bae98ba1a8803e0c..1252be4a4349d7d4994d581a636fc0e7be09f419 100644 (file)
@@ -21,6 +21,7 @@
 #include "wx/variant.h"
 #include "wx/dynarray.h"
 #include "wx/icon.h"
+#include "wx/itemid.h"
 #include "wx/weakref.h"
 #include "wx/vector.h"
 #include "wx/dataobj.h"
@@ -45,7 +46,6 @@ class WXDLLIMPEXP_FWD_CORE wxImageList;
 // wxDataViewCtrl globals
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_FWD_ADV wxDataViewItem;
 class WXDLLIMPEXP_FWD_ADV wxDataViewModel;
 class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
 class WXDLLIMPEXP_FWD_ADV wxDataViewColumn;
@@ -79,34 +79,14 @@ extern WXDLLIMPEXP_DATA_ADV(const char) wxDataViewCtrlNameStr[];
 // wxDataViewItem
 // ---------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxDataViewItem
+// Make it a class and not a typedef to allow forward declaring it.
+class wxDataViewItem : public wxItemId<void*>
 {
 public:
-    wxDataViewItem() : m_id(NULL) {}
-    wxDataViewItem(const wxDataViewItem &item) : m_id(item.m_id) {}
-
-    wxEXPLICIT wxDataViewItem(void* id) : m_id(id) {}
-
-    bool IsOk() const                  { return m_id != NULL; }
-    void* GetID() const                { return m_id; }
-    operator const void* () const      { return m_id; }
-
-private:
-    void* m_id;
+    wxDataViewItem() : wxItemId<void*>() { }
+    wxEXPLICIT wxDataViewItem(void* pItem) : wxItemId<void*>(pItem) { }
 };
 
-inline
-bool operator==(const wxDataViewItem& left, const wxDataViewItem& right)
-{
-    return left.GetID() == right.GetID();
-}
-
-inline
-bool operator!=(const wxDataViewItem& left, const wxDataViewItem& right)
-{
-    return !(left == right);
-}
-
 WX_DEFINE_ARRAY(wxDataViewItem, wxDataViewItemArray);
 
 // ---------------------------------------------------------
@@ -163,6 +143,7 @@ public:
     void SetColour(const wxColour& colour) { m_colour = colour; }
     void SetBold( bool set ) { m_bold = set; }
     void SetItalic( bool set ) { m_italic = set; }
+    void SetBackgroundColour(const wxColour& colour)  { m_bgColour = colour; }
 
     // accessors
     bool HasColour() const { return m_colour.IsOk(); }
@@ -172,7 +153,10 @@ public:
     bool GetBold() const { return m_bold; }
     bool GetItalic() const { return m_italic; }
 
-    bool IsDefault() const { return !(HasColour() || HasFont()); }
+    bool HasBackgroundColour() const { return m_bgColour.IsOk(); }
+    const wxColour& GetBackgroundColour() const { return m_bgColour; }
+
+    bool IsDefault() const { return !(HasColour() || HasFont() || HasBackgroundColour()); }
 
     // Return the font based on the given one with this attribute applied to it.
     wxFont GetEffectiveFont(const wxFont& font) const;
@@ -181,6 +165,7 @@ private:
     wxColour m_colour;
     bool     m_bold;
     bool     m_italic;
+    wxColour m_bgColour;
 };
 
 
@@ -683,7 +668,15 @@ public:
     wxDataViewItem GetCurrentItem() const;
     void SetCurrentItem(const wxDataViewItem& item);
 
-    virtual wxDataViewItem GetSelection() const = 0;
+    // Selection: both GetSelection() and GetSelections() can be used for the
+    // controls both with and without wxDV_MULTIPLE style. For single selection
+    // controls GetSelections() is not very useful however. And for multi
+    // selection controls GetSelection() returns an invalid item if more than
+    // one item is selected. Use GetSelectedItemsCount() or HasSelection() to
+    // check if any items are selected at all.
+    virtual int GetSelectedItemsCount() const = 0;
+    bool HasSelection() const { return GetSelectedItemsCount() != 0; }
+    wxDataViewItem GetSelection() const;
     virtual int GetSelections( wxDataViewItemArray & sel ) const = 0;
     virtual void SetSelections( const wxDataViewItemArray & sel ) = 0;
     virtual void Select( const wxDataViewItem & item ) = 0;