X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a87b466df3551b4ffb7bc33b68b42f3a99e87030..704ceca8d2cd8da51a5cc22f8c51fd61c762dbf5:/include/wx/generic/dataview.h diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index 136d7b944b..f3c6057cba 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -41,10 +41,8 @@ public: virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; virtual wxSize GetSize() const = 0; - virtual void SetAlignment( int align ) - { m_align=align; } - virtual int GetAlignment() const - { return m_align; } + virtual void SetAlignment( int align ); + virtual int GetAlignment() const; virtual void SetMode( wxDataViewCellMode mode ) { m_mode=mode; } @@ -78,11 +76,23 @@ public: // Create DC on request virtual wxDC *GetDC(); + + void SetHasAttr( bool set ) { m_hasAttr = set; } + void SetAttr( const wxDataViewItemAttr &attr ) { m_attr = attr; } + bool GetWantsAttr() { return m_wantsAttr; } + + // implementation + int CalculateAlignment() const; private: wxDC *m_dc; int m_align; wxDataViewCellMode m_mode; + +protected: + bool m_wantsAttr; + bool m_hasAttr; + wxDataViewItemAttr m_attr; protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer) @@ -99,6 +109,8 @@ public: wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int align = wxDVR_DEFAULT_ALIGNMENT ); + void RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state ); + protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer) }; @@ -126,13 +138,30 @@ public: virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value ); virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value ); -private: +protected: wxString m_text; protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer) }; +// --------------------------------------------------------- +// wxDataViewTextRendererAttr +// --------------------------------------------------------- + +class WXDLLIMPEXP_ADV wxDataViewTextRendererAttr: public wxDataViewTextRenderer +{ +public: + wxDataViewTextRendererAttr( const wxString &varianttype = wxT("string"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + + bool Render( wxRect cell, wxDC *dc, int state ); + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRendererAttr) +}; + // --------------------------------------------------------- // wxDataViewBitmapRenderer // --------------------------------------------------------- @@ -210,6 +239,35 @@ private: protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer) }; + +// --------------------------------------------------------- +// wxDataViewIconTextRenderer +// --------------------------------------------------------- + +class WXDLLIMPEXP_ADV wxDataViewIconTextRenderer: public wxDataViewCustomRenderer +{ +public: + wxDataViewIconTextRenderer( const wxString &varianttype = wxT("wxDataViewIconText"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + virtual ~wxDataViewIconTextRenderer(); + + bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ) const; + + virtual bool Render( wxRect cell, wxDC *dc, int state ); + virtual wxSize GetSize() const; + + virtual bool HasEditorCtrl() { return true; } + virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value ); + virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value ); + +private: + wxDataViewIconText m_value; + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer) +}; // --------------------------------------------------------- // wxDataViewDateRenderer @@ -271,7 +329,7 @@ public: virtual void SetResizeable( bool resizeable ); virtual void SetHidden( bool hidden ); virtual void SetSortOrder( bool ascending ); - + virtual void SetReorderable( bool reorderable ); // getters: @@ -290,7 +348,8 @@ public: virtual bool IsHidden() const { return (m_flags & wxDATAVIEW_COL_HIDDEN) != 0; } virtual bool IsSortOrderAscending() const; - + virtual bool IsReorderable() const + { return (m_flags & wxDATAVIEW_COL_REORDERABLE) != 0; } private: int m_width; @@ -299,6 +358,7 @@ private: wxAlignment m_align; wxString m_title; bool m_ascending; + bool m_autosize; void Init(int width); @@ -314,6 +374,9 @@ protected: // wxDataViewCtrl // --------------------------------------------------------- +WX_DECLARE_LIST_WITH_DECL(wxDataViewColumn, wxDataViewColumnList, + class WXDLLIMPEXP_ADV); + class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase, public wxScrollHelperNative { @@ -326,7 +389,8 @@ class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase, public: wxDataViewCtrl() : wxScrollHelperNative(this) { - m_sortingColumn = 0; + //No sorting column at start, I think + m_sortingColumn = NULL; Init(); } @@ -336,6 +400,7 @@ public: const wxValidator& validator = wxDefaultValidator ) : wxScrollHelperNative(this) { + m_sortingColumn = NULL; Create(parent, id, pos, size, style, validator ); } @@ -349,11 +414,22 @@ public: const wxValidator& validator = wxDefaultValidator ); virtual bool AssociateModel( wxDataViewModel *model ); + virtual bool AppendColumn( wxDataViewColumn *col ); + virtual bool PrependColumn( wxDataViewColumn *col ); + virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col ); virtual void DoSetExpanderColumn(); virtual void DoSetIndent(); + virtual unsigned int GetColumnCount() const; + virtual wxDataViewColumn* GetColumn( unsigned int pos ) const; + virtual bool DeleteColumn( wxDataViewColumn *column ); + virtual bool ClearColumns(); + virtual int GetColumnPosition( const wxDataViewColumn *column ) const; + + virtual wxDataViewColumn *GetSortingColumn() const; + virtual wxDataViewItem GetSelection() const; virtual int GetSelections( wxDataViewItemArray & sel ) const; virtual void SetSelections( const wxDataViewItemArray & sel ); @@ -369,6 +445,9 @@ public: virtual void HitTest( const wxPoint & point, wxDataViewItem & item, wxDataViewColumn* &column ) const; virtual wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) const; + virtual void Expand( const wxDataViewItem & item ); + virtual void Collapse( const wxDataViewItem & item ); + protected: virtual int GetSelections( wxArrayInt & sel ) const; virtual void SetSelections( const wxArrayInt & sel ); @@ -383,8 +462,8 @@ protected: virtual wxDataViewItem GetItemByRow( unsigned int row ) const; virtual int GetRowByItem( const wxDataViewItem & item ) const; - unsigned int GetSortingColumn() { return m_sortingColumn; } - void SetSortingColumn( unsigned int column ) { m_sortingColumn = column; } + wxDataViewColumn* GetSortingColumn() { return m_sortingColumn; } + void SetSortingColumn( wxDataViewColumn* column ) { m_sortingColumn = column; } public: // utility functions not part of the API @@ -394,16 +473,20 @@ public: // utility functions not part of the API return GetClientSize().GetWidth() / GetColumnCount(); } + // called by header window after reorder + void ColumnMoved( wxDataViewColumn* col, unsigned int new_pos ); + // updates the header window after a change in a column setting void OnColumnChange(); wxWindow *GetMainWindow() { return (wxWindow*) m_clientArea; } private: - wxDataViewModelNotifier *m_notifier; - wxDataViewMainWindow *m_clientArea; - wxDataViewHeaderWindow *m_headerArea; - unsigned int m_sortingColumn; + wxDataViewColumnList m_cols; + wxDataViewModelNotifier *m_notifier; + wxDataViewMainWindow *m_clientArea; + wxDataViewHeaderWindow *m_headerArea; + wxDataViewColumn *m_sortingColumn; private: void OnSize( wxSizeEvent &event );