From ce468dc28b8a4b8ee651afc7bcebc4232e622049 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Fri, 6 Mar 2009 22:56:27 +0000 Subject: [PATCH] don't return hardcoded constants for empty renderers, introduce wxDVC_DEFAULT_RENDERER_SIZE. Some code styling review (indentation, long line wrapping, etc) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59392 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dataview.h | 27 +++++++++--- src/generic/datavgen.cpp | 93 +++++++++++++++++++++------------------- 2 files changed, 68 insertions(+), 52 deletions(-) diff --git a/include/wx/dataview.h b/include/wx/dataview.h index d2d6d537d8..39ea42429e 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -32,10 +32,6 @@ class WXDLLIMPEXP_FWD_CORE wxImageList; #define wxHAS_GENERIC_DATAVIEWCTRL #endif -// ---------------------------------------------------------------------------- -// wxDataViewCtrl flags -// ---------------------------------------------------------------------------- - // ---------------------------------------------------------------------------- // wxDataViewCtrl globals // ---------------------------------------------------------------------------- @@ -49,6 +45,13 @@ class WXDLLIMPEXP_FWD_ADV wxDataViewModelNotifier; extern WXDLLIMPEXP_DATA_ADV(const char) wxDataViewCtrlNameStr[]; +// ---------------------------------------------------------------------------- +// wxDataViewCtrl flags +// ---------------------------------------------------------------------------- + +// size of a wxDataViewRenderer without contents: +#define wxDVC_DEFAULT_RENDERER_SIZE 20 + // the default width of new (text) columns: #define wxDVC_DEFAULT_WIDTH 80 @@ -526,7 +529,8 @@ public: { m_owner = owner; } // getters: - unsigned int GetModelColumn() const { return static_cast(m_model_column); } + unsigned int GetModelColumn() const + { return static_cast(m_model_column); } wxDataViewCtrl *GetOwner() const { return m_owner; } wxDataViewRenderer* GetRenderer() const { return m_renderer; } @@ -566,11 +570,17 @@ public: wxDataViewCtrlBase(); virtual ~wxDataViewCtrlBase(); + // model + // ----- + virtual bool AssociateModel( wxDataViewModel *model ); wxDataViewModel* GetModel(); const wxDataViewModel* GetModel() const; - // short cuts + + // column management + // ----------------- + wxDataViewColumn *PrependTextColumn( const wxString &label, unsigned int model_column, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1, wxAlignment align = wxALIGN_NOT, @@ -669,7 +679,6 @@ public: wxAlignment align = wxALIGN_CENTER, int flags = wxDATAVIEW_COL_RESIZABLE ); - virtual bool PrependColumn( wxDataViewColumn *col ); virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col ); virtual bool AppendColumn( wxDataViewColumn *col ); @@ -688,6 +697,10 @@ public: virtual wxDataViewColumn *GetSortingColumn() const = 0; + + // items management + // ---------------- + void SetIndent( int indent ) { m_indent = indent ; DoSetIndent(); } int GetIndent() const diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 8be7c4781d..6e46661662 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -99,6 +99,7 @@ protected: return *(GetOwner()->GetColumn(idx)); } + // FIXME: currently unused virtual bool UpdateColumnWidthToFit(unsigned int idx, int widthTitle) { wxDataViewCtrl * const owner = GetOwner(); @@ -738,12 +739,8 @@ wxSize wxDataViewTextRenderer::GetSize() const { const wxDataViewCtrl *view = GetView(); if (!m_text.empty()) - { - int x,y; - view->GetTextExtent( m_text, &x, &y ); - return wxSize( x, y ); - } - return wxSize(80,20); + return view->wxWindowBase::GetTextExtent( m_text ); + return wxSize(wxDVC_DEFAULT_RENDERER_SIZE,wxDVC_DEFAULT_RENDERER_SIZE); } // --------------------------------------------------------- @@ -844,7 +841,7 @@ wxSize wxDataViewBitmapRenderer::GetSize() const else if (m_icon.Ok()) return wxSize( m_icon.GetWidth(), m_icon.GetHeight() ); - return wxSize(16,16); + return wxSize(wxDVC_DEFAULT_RENDERER_SIZE,wxDVC_DEFAULT_RENDERER_SIZE); } // --------------------------------------------------------- @@ -1242,30 +1239,30 @@ public: } virtual wxDragResult OnDragOver( wxCoord x, wxCoord y, wxDragResult def ) - { + { wxDataFormat format = GetMatchingPair(); if (format == wxDF_INVALID) return wxDragNone; return m_win->OnDragOver( format, x, y, def); - } + } virtual bool OnDrop( wxCoord x, wxCoord y ) - { + { wxDataFormat format = GetMatchingPair(); if (format == wxDF_INVALID) return false; return m_win->OnDrop( format, x, y ); - } + } virtual wxDragResult OnData( wxCoord x, wxCoord y, wxDragResult def ) - { + { wxDataFormat format = GetMatchingPair(); if (format == wxDF_INVALID) return wxDragNone; if (!GetData()) return wxDragNone; return m_win->OnData( format, x, y, def ); - } + } virtual void OnLeave() { m_win->OnLeave(); } @@ -1304,7 +1301,6 @@ int LINKAGEMODE wxDataViewSelectionCmp( unsigned int row1, unsigned int row2 ) return -1; } - IMPLEMENT_ABSTRACT_CLASS(wxDataViewMainWindow, wxWindow) BEGIN_EVENT_TABLE(wxDataViewMainWindow,wxWindow) @@ -1771,7 +1767,6 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) cell_rect.x = x_start; for (unsigned int i = col_start; i < col_last; i++) { - wxDataViewColumn *col = GetOwner()->GetColumnAt( i ); wxDataViewRenderer *cell = col->GetRenderer(); cell_rect.width = col->GetWidth(); @@ -2592,18 +2587,20 @@ int wxDataViewMainWindow::GetLineStart( unsigned int row ) const if (column->IsHidden()) continue; // skip it! - if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item)) + if ((col != 0) && + model->IsContainer(item) && + !model->HasContainerColumns(item)) continue; // skip it! - const wxDataViewRenderer *renderer = column->GetRenderer(); wxVariant value; model->GetValue( value, item, column->GetModelColumn() ); - wxDataViewRenderer *renderer2 = const_cast(renderer); - renderer2->SetValue( value ); + + wxDataViewRenderer *renderer = + const_cast(column->GetRenderer()); + renderer->SetValue( value ); height = wxMax( height, renderer->GetSize().y ); } - start += height; } @@ -2628,14 +2625,14 @@ int wxDataViewMainWindow::GetLineAt( unsigned int y ) const unsigned int yy = 0; for (;;) { - const wxDataViewTreeNode* node = GetTreeNodeByRow(row); - if (!node) - { - // not really correct... - return row + ((y-yy) / m_lineHeight); - } + const wxDataViewTreeNode* node = GetTreeNodeByRow(row); + if (!node) + { + // not really correct... + return row + ((y-yy) / m_lineHeight); + } - wxDataViewItem item = node->GetItem(); + wxDataViewItem item = node->GetItem(); if (node && !node->HasChildren()) { @@ -2644,31 +2641,34 @@ int wxDataViewMainWindow::GetLineAt( unsigned int y ) const wxDELETE(node); } - unsigned int cols = GetOwner()->GetColumnCount(); - unsigned int col; - int height = m_lineHeight; - for (col = 0; col < cols; col++) - { + unsigned int cols = GetOwner()->GetColumnCount(); + unsigned int col; + int height = m_lineHeight; + for (col = 0; col < cols; col++) + { const wxDataViewColumn *column = GetOwner()->GetColumn(col); if (column->IsHidden()) continue; // skip it! - if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item)) + if ((col != 0) && + model->IsContainer(item) && + !model->HasContainerColumns(item)) continue; // skip it! - const wxDataViewRenderer *renderer = column->GetRenderer(); wxVariant value; model->GetValue( value, item, column->GetModelColumn() ); - wxDataViewRenderer *renderer2 = const_cast(renderer); - renderer2->SetValue( value ); + + wxDataViewRenderer *renderer = + const_cast(column->GetRenderer()); + renderer->SetValue( value ); height = wxMax( height, renderer->GetSize().y ); - } + } - yy += height; - if (y < yy) - return row; + yy += height; + if (y < yy) + return row; - row++; + row++; } } @@ -2703,14 +2703,17 @@ int wxDataViewMainWindow::GetLineHeight( unsigned int row ) const if (column->IsHidden()) continue; // skip it! - if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item)) + if ((col != 0) && + model->IsContainer(item) && + !model->HasContainerColumns(item)) continue; // skip it! - const wxDataViewRenderer *renderer = column->GetRenderer(); wxVariant value; model->GetValue( value, item, column->GetModelColumn() ); - wxDataViewRenderer *renderer2 = const_cast(renderer); - renderer2->SetValue( value ); + + wxDataViewRenderer *renderer = + const_cast(column->GetRenderer()); + renderer->SetValue( value ); height = wxMax( height, renderer->GetSize().y ); } -- 2.45.2