#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"
// wxDataViewCtrl globals
// ----------------------------------------------------------------------------
-class WXDLLIMPEXP_FWD_ADV wxDataViewItem;
class WXDLLIMPEXP_FWD_ADV wxDataViewModel;
class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
class WXDLLIMPEXP_FWD_ADV wxDataViewColumn;
// 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);
// ---------------------------------------------------------
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(); }
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;
wxColour m_colour;
bool m_bold;
bool m_italic;
+ wxColour m_bgColour;
};
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;