From 3d9d7cc4f7f382b81e3b9fa2b7b3a3f3c379b75e Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Wed, 22 Mar 2006 10:01:57 +0000 Subject: [PATCH] In the generic version of wxDataViewCtrl, all cells are custom cells (nothing native). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/dataview.h | 88 +++++++++++++++++++---------------- src/generic/datavgen.cpp | 88 ++++++++++++++++++++--------------- 2 files changed, 98 insertions(+), 78 deletions(-) diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index 9673737c95..470ae0bd76 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -32,82 +32,87 @@ class wxDataViewCell: public wxDataViewCellBase { public: wxDataViewCell( const wxString &varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + ~wxDataViewCell(); + virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; + virtual wxSize GetSize() = 0; + + virtual bool Activate( wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + + virtual bool LeftClick( wxPoint cursor, wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + virtual bool RightClick( wxPoint cursor, wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + virtual bool StartDrag( wxPoint cursor, wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + + // Create DC on request + virtual wxDC *GetDC(); + +private: + wxDC *m_dc; + protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCell) }; // --------------------------------------------------------- -// wxDataViewTextCell +// wxDataViewCustomCell // --------------------------------------------------------- -class wxDataViewTextCell: public wxDataViewCell +class wxDataViewCustomCell: public wxDataViewCell { public: - wxDataViewTextCell( const wxString &varianttype = wxT("string"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); - - bool SetValue( const wxVariant &value ); - bool GetValue( wxVariant &value ); + wxDataViewCustomCell( const wxString &varianttype = wxT("string"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomCell) }; // --------------------------------------------------------- -// wxDataViewToggleCell +// wxDataViewTextCell // --------------------------------------------------------- -class wxDataViewToggleCell: public wxDataViewCell +class wxDataViewTextCell: public wxDataViewCustomCell { public: - wxDataViewToggleCell( const wxString &varianttype = wxT("bool"), + wxDataViewTextCell( const wxString &varianttype = wxT("string"), wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); bool SetValue( const wxVariant &value ); bool GetValue( wxVariant &value ); + bool Render( wxRect cell, wxDC *dc, int state ); + wxSize GetSize(); + protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell) }; // --------------------------------------------------------- -// wxDataViewCustomCell +// wxDataViewToggleCell // --------------------------------------------------------- -class wxDataViewCustomCell: public wxDataViewCell +class wxDataViewToggleCell: public wxDataViewCustomCell { public: - wxDataViewCustomCell( const wxString &varianttype = wxT("string"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); - ~wxDataViewCustomCell(); - bool Init(); - - virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; - virtual wxSize GetSize() = 0; - - virtual bool Activate( wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) - { return false; } - - virtual bool LeftClick( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) - { return false; } - virtual bool RightClick( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) - { return false; } - virtual bool StartDrag( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) - { return false; } - - // Create DC on request - virtual wxDC *GetDC(); + wxDataViewToggleCell( const wxString &varianttype = wxT("bool"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + + bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ); -private: - wxDC *m_dc; + bool Render( wxRect cell, wxDC *dc, int state ); + wxSize GetSize(); protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleCell) }; // --------------------------------------------------------- @@ -217,6 +222,7 @@ public: private: friend class wxDataViewMainWindow; + friend class wxDataViewHeaderWindow; wxDataViewListModelNotifier *m_notifier; wxDataViewMainWindow *m_clientArea; wxDataViewHeaderWindow *m_headerArea; diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 63e64dbdd4..7551c71d29 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -139,16 +139,50 @@ IMPLEMENT_ABSTRACT_CLASS(wxDataViewCell, wxDataViewCellBase) wxDataViewCell::wxDataViewCell( const wxString &varianttype, wxDataViewCellMode mode ) : wxDataViewCellBase( varianttype, mode ) { + m_dc = NULL; +} + +wxDataViewCell::~wxDataViewCell() +{ + if (m_dc) + delete m_dc; +} + +wxDC *wxDataViewCell::GetDC() +{ + if (m_dc == NULL) + { + if (GetOwner() == NULL) + return NULL; + if (GetOwner()->GetOwner() == NULL) + return NULL; + m_dc = new wxClientDC( GetOwner()->GetOwner() ); + } + + return m_dc; } +// --------------------------------------------------------- +// wxDataViewCustomCell +// --------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxDataViewCustomCell, wxDataViewCell) + +wxDataViewCustomCell::wxDataViewCustomCell( const wxString &varianttype, + wxDataViewCellMode mode ) : + wxDataViewCell( varianttype, mode ) +{ +} + + // --------------------------------------------------------- // wxDataViewTextCell // --------------------------------------------------------- -IMPLEMENT_ABSTRACT_CLASS(wxDataViewTextCell, wxDataViewCell) +IMPLEMENT_ABSTRACT_CLASS(wxDataViewTextCell, wxDataViewCustomCell) wxDataViewTextCell::wxDataViewTextCell( const wxString &varianttype, wxDataViewCellMode mode ) : - wxDataViewCell( varianttype, mode ) + wxDataViewCustomCell( varianttype, mode ) { } @@ -162,15 +196,25 @@ bool wxDataViewTextCell::GetValue( wxVariant &value ) return false; } +bool wxDataViewTextCell::Render( wxRect cell, wxDC *dc, int state ) +{ + return false; +} + +wxSize wxDataViewTextCell::GetSize() +{ + return wxSize(80,20); +} + // --------------------------------------------------------- // wxDataViewToggleCell // --------------------------------------------------------- -IMPLEMENT_ABSTRACT_CLASS(wxDataViewToggleCell, wxDataViewCell) +IMPLEMENT_ABSTRACT_CLASS(wxDataViewToggleCell, wxDataViewCustomCell) wxDataViewToggleCell::wxDataViewToggleCell( const wxString &varianttype, wxDataViewCellMode mode ) : - wxDataViewCell( varianttype, mode ) + wxDataViewCustomCell( varianttype, mode ) { } @@ -184,46 +228,16 @@ bool wxDataViewToggleCell::GetValue( wxVariant &value ) return false; } -// --------------------------------------------------------- -// wxDataViewCustomCell -// --------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS(wxDataViewCustomCell, wxDataViewCell) - -wxDataViewCustomCell::wxDataViewCustomCell( const wxString &varianttype, - wxDataViewCellMode mode ) : - wxDataViewCell( varianttype, mode ) -{ - m_dc = NULL; - - Init(); -} - -bool wxDataViewCustomCell::Init() +bool wxDataViewToggleCell::Render( wxRect cell, wxDC *dc, int state ) { return false; } -wxDataViewCustomCell::~wxDataViewCustomCell() +wxSize wxDataViewToggleCell::GetSize() { - if (m_dc) - delete m_dc; + return wxSize(20,20); } -wxDC *wxDataViewCustomCell::GetDC() -{ - if (m_dc == NULL) - { - if (GetOwner() == NULL) - return NULL; - if (GetOwner()->GetOwner() == NULL) - return NULL; - m_dc = new wxClientDC( GetOwner()->GetOwner() ); - } - - return m_dc; -} - // --------------------------------------------------------- // wxDataViewProgressCell // --------------------------------------------------------- -- 2.45.2