X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c2a92c80130e462d6cf11d179506e6339d407af2..f62edb0ecd881e790dd72b7f49da29e943200edb:/samples/dataview/dataview.cpp diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index c55e399eb5..c9fc9840d4 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -197,6 +197,17 @@ public: m_classicalMusicIsKnownToControl = false; } + // helper method for wxLog + + wxString GetTitle( const wxDataViewItem &item ) + { + MyMusicModelNode *node = (MyMusicModelNode*) item.GetID(); + if (!node) + return wxEmptyString; + + return node->m_title; + } + // helper methods to change the model void AddToClassical( const wxString &title, const wxString &artist, int year ) @@ -333,48 +344,36 @@ public: return node->IsContainer(); } - virtual wxDataViewItem GetFirstChild( const wxDataViewItem &parent ) const + virtual unsigned int GetChildren( const wxDataViewItem &parent, wxDataViewItemArray &array ) const { MyMusicModelNode *node = (MyMusicModelNode*) parent.GetID(); if (!node) - return wxDataViewItem( (void*) m_root ); + { + array.Add( wxDataViewItem( (void*) m_root ) ); + return 1; + } - if (node->GetChildCount() == 0) - return wxDataViewItem( 0 ); - if (node == m_classical) { MyMusicModel *model = (MyMusicModel*)(const MyMusicModel*) this; model->m_classicalMusicIsKnownToControl = true; } - MyMusicModelNode *first_child = node->GetChildren().Item( 0 ); - return wxDataViewItem( (void*) first_child ); + if (node->GetChildCount() == 0) + { + return 0; + } + + unsigned int count = node->GetChildren().GetCount(); + unsigned int pos; + for (pos = 0; pos < count; pos++) + { + MyMusicModelNode *child = node->GetChildren().Item( pos ); + array.Add( wxDataViewItem( (void*) child ) ); + } + return count; } - virtual wxDataViewItem GetNextSibling( const wxDataViewItem &item ) const - { - MyMusicModelNode *node = (MyMusicModelNode*) item.GetID(); - - // "MyMusic" has no siblings in our model - if (node == m_root) - return wxDataViewItem(0); - - MyMusicModelNode *parent = node->GetParent(); - int pos = parent->GetChildren().Index( node ); - - // Something went wrong - if (pos == wxNOT_FOUND) - return wxDataViewItem(0); - - // No more children - if (pos == parent->GetChildCount()-1) - return wxDataViewItem(0); - - node = parent->GetChildren().Item( pos+1 ); - return wxDataViewItem( (void*) node ); - } - private: MyMusicModelNode* m_root; MyMusicModelNode* m_pop; @@ -509,7 +508,7 @@ public: void OnExpanded( wxDataViewEvent &event ); void OnCollapsing( wxDataViewEvent &event ); void OnCollapsed( wxDataViewEvent &event ); - void OnSelected( wxDataViewEvent &event ); + void OnSelectionChanged( wxDataViewEvent &event ); void OnEditingStarted( wxDataViewEvent &event ); void OnEditingDone( wxDataViewEvent &event ); @@ -602,12 +601,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_DATAVIEW_ITEM_EXPANDED(ID_MUSIC_CTRL, MyFrame::OnExpanded) EVT_DATAVIEW_ITEM_COLLAPSING(ID_MUSIC_CTRL, MyFrame::OnCollapsing) EVT_DATAVIEW_ITEM_COLLAPSED(ID_MUSIC_CTRL, MyFrame::OnCollapsed) - EVT_DATAVIEW_ITEM_SELECTED(ID_MUSIC_CTRL, MyFrame::OnSelected) + EVT_DATAVIEW_SELECTION_CHANGED(ID_MUSIC_CTRL, MyFrame::OnSelectionChanged) EVT_DATAVIEW_ITEM_EDITING_STARTED(ID_MUSIC_CTRL, MyFrame::OnEditingStarted) EVT_DATAVIEW_ITEM_EDITING_DONE(ID_MUSIC_CTRL, MyFrame::OnEditingDone) - EVT_DATAVIEW_COLUMN_HEADER_CLICK(ID_MUSIC_CTRL, MyFrame::OnHeaderClick) EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKED(ID_MUSIC_CTRL, MyFrame::OnHeaderRightClick) EVT_DATAVIEW_COLUMN_SORTED(ID_MUSIC_CTRL, MyFrame::OnSorted) @@ -676,11 +674,8 @@ MyFrame::MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h): m_listCtrl->AssociateModel( m_list_model.get() ); m_listCtrl->AppendTextColumn( "editable string", 0, wxDATAVIEW_CELL_EDITABLE, 120 ); - - m_col = new wxDataViewColumn( "icon", new wxDataViewIconTextRenderer, 1, 60 ); - m_listCtrl->AppendColumn( m_col ); - - m_col = m_listCtrl->AppendTextColumn( "index", 2, wxDATAVIEW_CELL_INERT, 120 ); + m_listCtrl->AppendIconTextColumn( "icon", 1, wxDATAVIEW_CELL_INERT, 60 ); + m_listCtrl->AppendTextColumn( "index", 2, wxDATAVIEW_CELL_INERT, 120 ); data_sizer->Add( m_listCtrl, 2, wxGROW ); @@ -770,15 +765,20 @@ void MyFrame::OnActivated( wxDataViewEvent &event ) if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, Item Id: %d; Column: %d", event.GetItem().GetID(), event.GetColumn()); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, Item: %s", title ); } -void MyFrame::OnSelected( wxDataViewEvent &event ) +void MyFrame::OnSelectionChanged( wxDataViewEvent &event ) { if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_SELECTED, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + if (title.empty()) + title = "None"; + + wxLogMessage("wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, First selected Item: %s", title ); } void MyFrame::OnExpanding( wxDataViewEvent &event ) @@ -786,7 +786,8 @@ void MyFrame::OnExpanding( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, Item: %s", title ); } @@ -795,7 +796,8 @@ void MyFrame::OnEditingStarted( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, Item: %s", title ); } void MyFrame::OnEditingDone( wxDataViewEvent &event ) @@ -803,7 +805,8 @@ void MyFrame::OnEditingDone( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, Item: %s", title ); } void MyFrame::OnExpanded( wxDataViewEvent &event ) @@ -811,7 +814,8 @@ void MyFrame::OnExpanded( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, Item: %s", title ); } void MyFrame::OnCollapsing( wxDataViewEvent &event ) @@ -819,23 +823,27 @@ void MyFrame::OnCollapsing( wxDataViewEvent &event ) if (!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, Item Id: %d", event.GetItem().GetID() ); + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, Item: %s", title ); } void MyFrame::OnCollapsed( wxDataViewEvent &event ) { if (!m_log) return; - - wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, Item Id: %d", event.GetItem().GetID() ); + + wxString title = m_music_model->GetTitle( event.GetItem() ); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, Item: %s", title ); } void MyFrame::OnHeaderClick( wxDataViewEvent &event ) { if(!m_log) return; + + int pos = m_musicCtrl->GetColumnPosition( event.GetDataViewColumn() ); - wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, Column: %d", event.GetColumn()); + wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, Column position: %d", pos ); } void MyFrame::OnHeaderRightClick( wxDataViewEvent &event ) @@ -843,7 +851,9 @@ void MyFrame::OnHeaderRightClick( wxDataViewEvent &event ) if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, Column: %d", event.GetColumn()); + int pos = m_musicCtrl->GetColumnPosition( event.GetDataViewColumn() ); + + wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, Column position: %d", pos ); } void MyFrame::OnSorted( wxDataViewEvent &event ) @@ -851,7 +861,9 @@ void MyFrame::OnSorted( wxDataViewEvent &event ) if(!m_log) return; - wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, Column: %d", event.GetColumn()); + int pos = m_musicCtrl->GetColumnPosition( event.GetDataViewColumn() ); + + wxLogMessage("wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, Column position: %d", pos ); } void MyFrame::OnRightClick( wxMouseEvent &event )