X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/baa9ebc473dba4e4ca0c4f288e6ed7c8c277295e..ce4b7808ca940be201422a066de141ca12f13863:/include/wx/dataview.h diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 225e52ef6b..227408847f 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -24,7 +24,7 @@ #if defined(__WXGTK20__) // for testing - #define wxUSE_GENERICDATAVIEWCTRL 1 + // #define wxUSE_GENERICDATAVIEWCTRL 1 #elif defined(__WXMAC__) #define wxUSE_GENERICDATAVIEWCTRL 1 #else @@ -131,11 +131,11 @@ public: virtual bool Cleared(); // Used internally - virtual void AddViewingColumn( wxDataViewColumn *view_column, unsigned int model_column ); - virtual void RemoveViewingColumn( wxDataViewColumn *column ); + void AddViewingColumn( wxDataViewColumn *view_column, unsigned int model_column ); + void RemoveViewingColumn( wxDataViewColumn *column ); - virtual void AddNotifier( wxDataViewListModelNotifier *notifier ); - virtual void RemoveNotifier( wxDataViewListModelNotifier *notifier ); + void AddNotifier( wxDataViewListModelNotifier *notifier ); + void RemoveNotifier( wxDataViewListModelNotifier *notifier ); wxList m_notifiers; wxList m_viewingColumns; @@ -159,6 +159,9 @@ public: wxDataViewSortedListModel( wxDataViewListModel *child ); virtual ~wxDataViewSortedListModel(); + void SetAscending( bool ascending ) { m_ascending = ascending; } + bool GetAscending() { return m_ascending; } + virtual unsigned int GetNumberOfRows(); virtual unsigned int GetNumberOfCols(); // return type as reported by wxVariant @@ -191,9 +194,12 @@ public: virtual void Resort(); private: + bool m_ascending; wxDataViewListModel *m_child; wxDataViewSortedIndexArray m_array; wxDataViewListModelNotifier *m_notifierOnChild; + + void InitStatics(); // BAD protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewSortedListModel) @@ -258,11 +264,23 @@ class WXDLLIMPEXP_ADV wxDataViewColumnBase: public wxObject public: wxDataViewColumnBase( const wxString &title, wxDataViewRenderer *renderer, unsigned int model_column, int width = 80, int flags = wxDATAVIEW_COL_RESIZABLE ); + wxDataViewColumnBase( const wxBitmap &bitmap, wxDataViewRenderer *renderer, unsigned int model_column, + int width = 80, int flags = wxDATAVIEW_COL_RESIZABLE ); virtual ~wxDataViewColumnBase(); virtual void SetTitle( const wxString &title ); virtual wxString GetTitle(); + virtual void SetBitmap( const wxBitmap &bitmap ); + virtual const wxBitmap &GetBitmap(); + + virtual void SetAlignment( wxAlignment align ) = 0; + + virtual void SetSortable( bool sortable ) = 0; + virtual bool GetSortable() = 0; + virtual void SetSortOrder( bool ascending ) = 0; + virtual bool IsSortOrderAscending() = 0; + wxDataViewRenderer* GetRenderer() { return m_renderer; } unsigned int GetModelColumn() { return m_model_column; } @@ -278,6 +296,7 @@ private: int m_model_column; int m_flags; wxString m_title; + wxBitmap m_bitmap; wxDataViewCtrl *m_owner; protected: @@ -300,10 +319,28 @@ public: virtual bool AssociateModel( wxDataViewListModel *model ); wxDataViewListModel* GetModel(); - virtual bool AppendTextColumn( const wxString &label, unsigned int model_column ); - virtual bool AppendToggleColumn( const wxString &label, unsigned int model_column ); - virtual bool AppendProgressColumn( const wxString &label, unsigned int model_column ); - virtual bool AppendDateColumn( const wxString &label, unsigned int model_column ); + // short cuts + bool AppendTextColumn( const wxString &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 ); + bool AppendToggleColumn( const wxString &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 30 ); + bool AppendProgressColumn( const wxString &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 80 ); + bool AppendDateColumn( const wxString &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, int width = -1 ); + bool AppendBitmapColumn( const wxString &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 ); + bool AppendTextColumn( const wxBitmap &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 ); + bool AppendToggleColumn( const wxBitmap &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 30 ); + bool AppendProgressColumn( const wxBitmap &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 80 ); + bool AppendDateColumn( const wxBitmap &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, int width = -1 ); + bool AppendBitmapColumn( const wxBitmap &label, unsigned int model_column, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 ); + virtual bool AppendColumn( wxDataViewColumn *col ); virtual unsigned int GetNumberOfColumns(); virtual bool DeleteColumn( unsigned int pos ); @@ -312,6 +349,7 @@ public: virtual void SetSelection( int row ) = 0; // -1 for unselect inline void ClearSelection() { SetSelection( -1 ); } + virtual void Unselect( unsigned int row ) = 0; virtual void SetSelectionRange( unsigned int from, unsigned int to ) = 0; virtual void SetSelections( const wxArrayInt& aSelections) = 0; @@ -332,7 +370,7 @@ protected: // wxDataViewEvent - the event class for the wxDataViewCtrl notifications // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDataViewEvent : public wxNotifyEvent +class WXDLLIMPEXP_ADV wxDataViewEvent : public wxNotifyEvent { public: wxDataViewEvent(wxEventType commandType = wxEVT_NULL, int winid = 0) @@ -341,7 +379,8 @@ public: m_row(-1), m_model(NULL), m_value(wxNullVariant), - m_editCancelled(false) + m_editCancelled(false), + m_column(NULL) { } wxDataViewEvent(const wxDataViewEvent& event) @@ -350,7 +389,8 @@ public: m_row(event.m_col), m_model(event.m_model), m_value(event.m_value), - m_editCancelled(event.m_editCancelled) + m_editCancelled(event.m_editCancelled), + m_column(event.m_column) { } int GetColumn() const { return m_col; } @@ -362,6 +402,10 @@ public: const wxVariant &GetValue() const { return m_value; } void SetValue( const wxVariant &value ) { m_value = value; } + // for wxEVT_DATAVIEW_COLUMN_HEADER_CLICKED only + void SetDataViewColumn( wxDataViewColumn *col ) { m_column = col; } + wxDataViewColumn *GetDataViewColumn() { return m_column; } + // was label editing canceled? (for wxEVT_COMMAND_DATVIEW_END_LABEL_EDIT only) bool IsEditCancelled() const { return m_editCancelled; } void SetEditCanceled(bool editCancelled) { m_editCancelled = editCancelled; } @@ -374,13 +418,17 @@ protected: wxDataViewModel *m_model; wxVariant m_value; bool m_editCancelled; + wxDataViewColumn *m_column; private: DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDataViewEvent) }; BEGIN_DECLARE_EVENT_TYPES() - DECLARE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ROW_SELECTED, -1) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ROW_SELECTED, -1) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ROW_ACTIVATED, -1) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, -1) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, -1) END_DECLARE_EVENT_TYPES() typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&); @@ -392,6 +440,9 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&); wx__DECLARE_EVT1(wxEVT_COMMAND_DATAVIEW_ ## evt, id, wxDataViewEventHandler(fn)) #define EVT_DATAVIEW_ROW_SELECTED(id, fn) wx__DECLARE_DATAVIEWEVT(ROW_SELECTED, id, fn) +#define EVT_DATAVIEW_ROW_ACTIVATED(id, fn) wx__DECLARE_DATAVIEWEVT(ROW_ACTIVATED, id, fn) +#define EVT_DATAVIEW_COLUMN_HEADER_CLICK(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_HEADER_CLICK, id, fn) +#define EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKED(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_HEADER_RIGHT_CLICK, id, fn) #if defined(wxUSE_GENERICDATAVIEWCTRL)