X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce00f59b5b169752d2f05ce3bb1a88ddc1b38b4c..81f2b2ee81ce76fdc826e2740713e6fbefbfd5b3:/include/wx/generic/dataview.h?ds=inline diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index f06776ea0b..89b0461623 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -17,6 +17,7 @@ #include "wx/control.h" #include "wx/scrolwin.h" #include "wx/icon.h" +#include "wx/vector.h" class WXDLLIMPEXP_FWD_ADV wxDataViewMainWindow; class WXDLLIMPEXP_FWD_ADV wxDataViewHeaderWindow; @@ -56,7 +57,7 @@ public: virtual wxString GetTitle() const { return m_title; } virtual void SetWidth(int width) { m_width = width; UpdateDisplay(); } - virtual int GetWidth() const { return m_width; } + virtual int GetWidth() const; virtual void SetMinWidth(int minWidth) { m_minWidth = minWidth; UpdateDisplay(); } virtual int GetMinWidth() const { return m_minWidth; } @@ -67,10 +68,12 @@ public: virtual void SetFlags(int flags) { m_flags = flags; UpdateDisplay(); } virtual int GetFlags() const { return m_flags; } - virtual void SetAsSortKey(bool sort = true) { m_sort = sort; UpdateDisplay(); } virtual bool IsSortKey() const { return m_sort; } - virtual void SetSortOrder(bool ascending) { m_sortAscending = ascending; UpdateDisplay(); } + virtual void UnsetAsSortKey() { m_sort = false; UpdateDisplay(); } + + virtual void SetSortOrder(bool ascending); + virtual bool IsSortOrderAscending() const { return m_sortAscending; } virtual void SetBitmap( const wxBitmap& bitmap ) { wxDataViewColumnBase::SetBitmap(bitmap); UpdateDisplay(); } @@ -154,7 +157,7 @@ public: virtual wxDataViewColumn *GetSortingColumn() const; - virtual wxDataViewItem GetSelection() const; + virtual int GetSelectedItemsCount() const; virtual int GetSelections( wxDataViewItemArray & sel ) const; virtual void SetSelections( const wxDataViewItemArray & sel ); virtual void Select( const wxDataViewItem & item ); @@ -171,6 +174,8 @@ public: virtual wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) const; + virtual bool SetRowHeight( int rowHeight ); + virtual void Expand( const wxDataViewItem & item ); virtual void Collapse( const wxDataViewItem & item ); virtual bool IsExpanded( const wxDataViewItem & item ) const; @@ -184,19 +189,18 @@ public: virtual wxBorder GetDefaultBorder() const; - void StartEditor( const wxDataViewItem & item, unsigned int column ); + virtual void EditItem(const wxDataViewItem& item, const wxDataViewColumn *column); -protected: - virtual int GetSelections( wxArrayInt & sel ) const; - virtual void SetSelections( const wxArrayInt & sel ); - virtual void Select( int row ); - virtual void Unselect( int row ); - virtual bool IsSelected( int row ) const; - virtual void SelectRange( int from, int to ); - virtual void UnselectRange( int from, int to ); + // These methods are specific to generic wxDataViewCtrl implementation and + // should not be used in portable code. + wxColour GetAlternateRowColour() const { return m_alternateRowColour; } + void SetAlternateRowColour(const wxColour& colour); +protected: virtual void EnsureVisible( int row, int column ); + // Notice that row here may be invalid (i.e. >= GetRowCount()), this is not + // an error and this function simply returns an invalid item in this case. virtual wxDataViewItem GetItemByRow( unsigned int row ) const; virtual int GetRowByItem( const wxDataViewItem & item ) const; @@ -206,10 +210,7 @@ protected: public: // utility functions not part of the API // returns the "best" width for the idx-th column - unsigned int GetBestColumnWidth(int WXUNUSED(idx)) const - { - return GetClientSize().GetWidth() / GetColumnCount(); - } + unsigned int GetBestColumnWidth(int idx) const; // called by header window after reorder void ColumnMoved( wxDataViewColumn* col, unsigned int new_pos ); @@ -228,15 +229,32 @@ public: // utility functions not part of the API // return the column displayed at the given position in the control wxDataViewColumn *GetColumnAt(unsigned int pos) const; + virtual wxDataViewColumn *GetCurrentColumn() const; + + virtual void OnInternalIdle(); + private: virtual wxDataViewItem DoGetCurrentItem() const; virtual void DoSetCurrentItem(const wxDataViewItem& item); + void InvalidateColBestWidths(); + void InvalidateColBestWidth(int idx); + void UpdateColWidths(); + wxDataViewColumnList m_cols; + // cached column best widths or 0 if not computed, values are for + // respective columns from m_cols and the arrays have same size + wxVector m_colsBestWidths; + // m_colsBestWidths partially invalid, needs recomputing + bool m_colsDirty; + wxDataViewModelNotifier *m_notifier; wxDataViewMainWindow *m_clientArea; wxDataViewHeaderWindow *m_headerArea; + // user defined color to draw row lines, may be invalid + wxColour m_alternateRowColour; + // the index of the column currently used for sorting or -1 int m_sortingColumnIdx;