X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce5abbf9f5dc0208d9fbc91ad48101f7777299ea..58ce18f2fdadecffb21e27555115af708325cf18:/include/wx/dataview.h diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 86218f0d08..46b5e997ab 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -126,6 +126,10 @@ public: virtual bool ValueChanged( const wxDataViewItem &item, unsigned int col ) = 0; virtual bool Cleared() = 0; + // some platforms, such as GTK+, may need a two step procedure for ::Reset() + virtual bool BeforeReset() { return true; } + virtual bool AfterReset() { return Cleared(); } + virtual void Resort() = 0; void SetOwner( wxDataViewModel *owner ) { m_owner = owner; } @@ -168,6 +172,9 @@ public: bool IsDefault() const { return !(HasColour() || HasFont()); } + // Return the font based on the given one with this attribute applied to it. + wxFont GetEffectiveFont(const wxFont& font) const; + private: wxColour m_colour; bool m_bold; @@ -227,6 +234,13 @@ public: return false; } + // Override this if you want to disable specific items + virtual bool IsEnabled(const wxDataViewItem &WXUNUSED(item), + unsigned int WXUNUSED(col)) const + { + return true; + } + // define hierachy virtual wxDataViewItem GetParent( const wxDataViewItem &item ) const = 0; virtual bool IsContainer( const wxDataViewItem &item ) const = 0; @@ -245,7 +259,12 @@ public: bool ValueChanged( const wxDataViewItem &item, unsigned int col ); bool Cleared(); - // delegatd action + // some platforms, such as GTK+, may need a two step procedure for ::Reset() + bool BeforeReset(); + bool AfterReset(); + + + // delegated action virtual void Resort(); void AddNotifier( wxDataViewModelNotifier *notifier ); @@ -292,10 +311,18 @@ public: return false; } + virtual bool IsEnabledByRow(unsigned int WXUNUSED(row), + unsigned int WXUNUSED(col)) const + { + return true; + } + // helper methods provided by list models only virtual unsigned GetRow( const wxDataViewItem &item ) const = 0; + // returns the number of rows + virtual unsigned int GetCount() const = 0; // implement some base class pure virtual directly virtual wxDataViewItem @@ -330,6 +357,12 @@ public: return GetAttrByRow( GetRow(item), col, attr ); } + virtual bool IsEnabled(const wxDataViewItem &item, unsigned int col) const + { + return IsEnabledByRow( GetRow(item), col ); + } + + virtual bool IsListModel() const { return true; } }; @@ -642,6 +675,12 @@ public: int GetIndent() const { return m_indent; } + // Current item is the one used by the keyboard navigation, it is the same + // as the (unique) selected item in single selection mode so these + // functions are mostly useful for controls with wxDV_MULTIPLE style. + wxDataViewItem GetCurrentItem() const; + void SetCurrentItem(const wxDataViewItem& item); + virtual wxDataViewItem GetSelection() const = 0; virtual int GetSelections( wxDataViewItemArray & sel ) const = 0; virtual void SetSelections( const wxDataViewItemArray & sel ) = 0; @@ -688,6 +727,12 @@ protected: virtual void DoSetIndent() = 0; private: + // Implementation of the public Set/GetCurrentItem() methods which are only + // called in multi selection case (for single selection controls their + // implementation is trivial and is done in the base class itself). + virtual wxDataViewItem DoGetCurrentItem() const = 0; + virtual void DoSetCurrentItem(const wxDataViewItem& item) = 0; + wxDataViewModel *m_model; wxDataViewColumn *m_expander_column; int m_indent ; @@ -1127,7 +1172,7 @@ public: wxDataViewItem GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const; int GetChildCount( const wxDataViewItem& parent ) const; - + void SetItemText( const wxDataViewItem& item, const wxString &text ); wxString GetItemText( const wxDataViewItem& item ) const; void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon );