diff --git a/include/wx/dataview.h b/include/wx/dataview.h index b2b9275d4f..5572dfd5a2 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -1327,17 +1327,27 @@ public: class WXDLLIMPEXP_ADV wxDataViewTreeCtrl: public wxDataViewCtrl { public: - wxDataViewTreeCtrl(); - wxDataViewTreeCtrl( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxDV_NO_HEADER | wxDV_ROW_LINES, - const wxValidator& validator = wxDefaultValidator ); - ~wxDataViewTreeCtrl(); + wxDataViewTreeCtrl() { Init(); } + wxDataViewTreeCtrl(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDV_NO_HEADER | wxDV_ROW_LINES, + const wxValidator& validator = wxDefaultValidator) + { + Init(); - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxDV_NO_HEADER | wxDV_ROW_LINES, - const wxValidator& validator = wxDefaultValidator ); + Create(parent, id, pos, size, style, validator); + } + + virtual ~wxDataViewTreeCtrl(); + + bool Create(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDV_NO_HEADER | wxDV_ROW_LINES, + const wxValidator& validator = wxDefaultValidator); wxDataViewTreeStore *GetStore() { return (wxDataViewTreeStore*) GetModel(); } @@ -1392,7 +1402,12 @@ public: void OnSize( wxSizeEvent &event ); private: - wxImageList *m_imageList; + void Init() + { + m_imageList = NULL; + } + + wxImageList *m_imageList; private: DECLARE_EVENT_TABLE() diff --git a/interface/wx/dataview.h b/interface/wx/dataview.h index 21f04a8472..669de4c1d6 100644 --- a/interface/wx/dataview.h +++ b/interface/wx/dataview.h @@ -71,7 +71,7 @@ wxDataViewModel *musicModel = new MyMusicModel; m_musicCtrl->AssociateModel( musicModel ); musicModel->DecRef(); // avoid memory leak !! - + // add columns now @endcode @@ -1611,11 +1611,11 @@ public: data.push_back( wxVariant("row 3") ); listctrl->AppendItem( data ); @endcode - + @beginStyleTable See wxDataViewCtrl for the list of supported styles. @endStyleTable - + @beginEventEmissionTable See wxDataViewCtrl for the list of events emitted by this class. @endEventTable @@ -1664,7 +1664,7 @@ public: @name Column management functions */ //@{ - + /** Appends a column to the control and additionally appends a column to the store with the type string. @@ -1679,24 +1679,24 @@ public: /** Appends a text column to the control and the store. - + See wxDataViewColumn::wxDataViewColumn for more info about the parameters. */ wxDataViewColumn *AppendTextColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - int width = -1, wxAlignment align = wxALIGN_LEFT, + int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); /** Appends a toggle column to the control and the store. - + See wxDataViewColumn::wxDataViewColumn for more info about the parameters. */ wxDataViewColumn *AppendToggleColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, - int width = -1, wxAlignment align = wxALIGN_LEFT, + int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); /** @@ -1707,7 +1707,7 @@ public: */ wxDataViewColumn *AppendProgressColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - int width = -1, wxAlignment align = wxALIGN_LEFT, + int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); /** @@ -1718,7 +1718,7 @@ public: */ wxDataViewColumn *AppendIconTextColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - int width = -1, wxAlignment align = wxALIGN_LEFT, + int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); /** @@ -1731,7 +1731,7 @@ public: Inserts a column to the control and additionally inserts a column to the list store with the type @a varianttype. */ - void InsertColumn( unsigned int pos, wxDataViewColumn *column, + void InsertColumn( unsigned int pos, wxDataViewColumn *column, const wxString &varianttype ); /** @@ -1747,13 +1747,13 @@ public: void PrependColumn( wxDataViewColumn *column, const wxString &varianttype ); //@} - - + + /** @name Item management functions */ //@{ - + /** Appends an item (=row) to the control and store. */ @@ -1820,7 +1820,7 @@ public: respective column. */ bool GetToggleValue( unsigned int row, unsigned int col ) const; - + //@} }; @@ -1832,13 +1832,13 @@ public: and forwards most of its API to that class. Additionally, it uses a wxImageList to store a list of icons. - The main purpose of this class is to represent a possible replacement for - wxTreeCtrl. + The main purpose of this class is to provide a simple upgrade path for code + using wxTreeCtrl. @beginStyleTable See wxDataViewCtrl for the list of supported styles. @endStyleTable - + @beginEventEmissionTable See wxDataViewCtrl for the list of events emitted by this class. @endEventTable @@ -1856,12 +1856,14 @@ public: wxDataViewTreeCtrl(); /** - Constructor. Calls Create(). + Constructor. + + Calls Create(). */ wxDataViewTreeCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDV_NO_HEADER, + long style = wxDV_NO_HEADER | wxDV_ROW_LINES, const wxValidator& validator = wxDefaultValidator); /** @@ -1888,11 +1890,14 @@ public: /** Creates the control and a wxDataViewTreeStore as its internal model. + + The default tree column created by this method is an editable column + using wxDataViewIconTextRenderer as its renderer. */ bool Create(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDV_NO_HEADER, + long style = wxDV_NO_HEADER | wxDV_ROW_LINES, const wxValidator& validator = wxDefaultValidator); /** @@ -2375,7 +2380,7 @@ public: @event{EVT_DATAVIEW_CACHE_HINT(id, func)} Process a @c wxEVT_COMMAND_DATAVIEW_CACHE_HINT event. @endEventTable - + @library{wxadv} @category{events,dvc} */ diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index e37e6d38c7..ba4792ecfa 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -2011,40 +2011,30 @@ BEGIN_EVENT_TABLE(wxDataViewTreeCtrl,wxDataViewCtrl) EVT_SIZE( wxDataViewTreeCtrl::OnSize ) END_EVENT_TABLE() -wxDataViewTreeCtrl::wxDataViewTreeCtrl() -{ - m_imageList = NULL; -} - -wxDataViewTreeCtrl::wxDataViewTreeCtrl( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator ) -{ - m_imageList = NULL; - Create( parent, id, pos, size, style, validator ); - - wxDataViewTreeStore *store = new wxDataViewTreeStore; - AssociateModel( store ); - store->DecRef(); - - AppendIconTextColumn(wxString(),0,wxDATAVIEW_CELL_INERT,-1); -} - wxDataViewTreeCtrl::~wxDataViewTreeCtrl() { - if (m_imageList) - delete m_imageList; + delete m_imageList; } bool wxDataViewTreeCtrl::Create( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator ) { - return wxDataViewCtrl::Create( parent, id, pos, size, style, validator ); + if ( !wxDataViewCtrl::Create( parent, id, pos, size, style, validator ) ) + return false; + + // create the standard model and a column in the tree + wxDataViewTreeStore *store = new wxDataViewTreeStore; + AssociateModel( store ); + store->DecRef(); + + AppendIconTextColumn(wxString(),0,wxDATAVIEW_CELL_EDITABLE,-1); + + return true; } void wxDataViewTreeCtrl::SetImageList( wxImageList *imagelist ) { - if (m_imageList) - delete m_imageList; + delete m_imageList; m_imageList = imagelist; }