X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ede0e4968c7eface2d58f13cc364ca3bb1c0b31d..2a230426807715c54b6fdcf410e3678ee0dfada6:/samples/dataview/dataview.cpp?ds=inline diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index f5e92f5360..d4ba3171e4 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -27,9 +27,7 @@ #include "wx/numdlg.h" #include "wx/dataview.h" #include "wx/spinctrl.h" - -#include "wx/ptr_shrd.h" -#include "wx/vector.h" +#include "wx/menu.h" #ifndef __WXMSW__ #include "../sample.xpm" @@ -402,14 +400,14 @@ static int my_sort( int *v1, int *v2 ) return *v1-*v2; } -class MyListModel: public wxDataViewIndexListModel +class MyListModel: public wxDataViewVirtualListModel { public: MyListModel() : #ifdef __WXMAC__ - wxDataViewIndexListModel( 1000 + 100 ) + wxDataViewVirtualListModel( 1000 + 100 ) #else - wxDataViewIndexListModel( 100000 + 100 ) + wxDataViewVirtualListModel( 100000 + 100 ) #endif { #ifdef __WXMAC__ @@ -569,9 +567,7 @@ public: class MyCustomRenderer: public wxDataViewCustomRenderer { public: - MyCustomRenderer( wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, -// MyCustomRenderer( wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - int alignment = wxDVR_DEFAULT_ALIGNMENT ) : + MyCustomRenderer( wxDataViewCellMode mode, int alignment ) : wxDataViewCustomRenderer( wxString("long"), mode, alignment ) { } virtual bool Render( wxRect rect, wxDC *dc, int WXUNUSED(state) ) @@ -789,30 +785,31 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int m_music_model = new MyMusicModel; m_musicCtrl->AssociateModel( m_music_model.get() ); + wxDataViewTextRenderer *tr = new wxDataViewTextRenderer( wxT("string"), wxDATAVIEW_CELL_INERT ); + wxDataViewColumn *column0 = new wxDataViewColumn( wxT("title"), tr, 0, 200, wxALIGN_LEFT, + wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE | wxDATAVIEW_COL_RESIZABLE ); + m_musicCtrl->AppendColumn( column0 ); #if 0 // Call this and sorting is enabled // immediatly upon start up. - wxDataViewColumn *col = m_musicCtrl->AppendTextColumn( wxT("Title"), 0, wxDATAVIEW_CELL_INERT, 200, DEFAULT_ALIGN, - wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE); - col->SetSortOrder( true ); -#else - m_musicCtrl->AppendTextColumn( wxT("Title"), 0, wxDATAVIEW_CELL_INERT, 200, wxALIGN_RIGHT, - wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE | wxDATAVIEW_COL_RESIZABLE); + column0->SetSortOrder( true ); #endif - m_musicCtrl->AppendTextColumn( wxT("Artist"), 1, wxDATAVIEW_CELL_EDITABLE, 150, wxALIGN_RIGHT, - wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE | wxDATAVIEW_COL_RESIZABLE); - - wxDataViewSpinRenderer *sr = new wxDataViewSpinRenderer( 0, 2010 ); - wxDataViewColumn *column1 = new wxDataViewColumn( wxT("year"), sr, 2, 80, wxALIGN_CENTRE, + tr = new wxDataViewTextRenderer( wxT("string"), wxDATAVIEW_CELL_EDITABLE ); + wxDataViewColumn *column1 = new wxDataViewColumn( wxT("artist"), tr, 1, 150, wxALIGN_RIGHT, wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE | wxDATAVIEW_COL_RESIZABLE ); m_musicCtrl->AppendColumn( column1 ); - MyCustomRenderer *cr = new MyCustomRenderer; - wxDataViewColumn *column2 = new wxDataViewColumn( wxT("custom"), cr, 2, -1, wxALIGN_RIGHT, - wxDATAVIEW_COL_RESIZABLE ); + wxDataViewSpinRenderer *sr = new wxDataViewSpinRenderer( 0, 2010, wxDATAVIEW_CELL_EDITABLE, wxALIGN_RIGHT ); + wxDataViewColumn *column2 = new wxDataViewColumn( wxT("year"), sr, 2, 80, wxALIGN_LEFT, + wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE | wxDATAVIEW_COL_RESIZABLE ); m_musicCtrl->AppendColumn( column2 ); + MyCustomRenderer *cr = new MyCustomRenderer( wxDATAVIEW_CELL_ACTIVATABLE, wxALIGN_RIGHT ); + wxDataViewColumn *column3 = new wxDataViewColumn( wxT("custom"), cr, 2, -1, wxALIGN_LEFT, + wxDATAVIEW_COL_RESIZABLE ); + m_musicCtrl->AppendColumn( column3 ); + data_sizer->Add( m_musicCtrl, 3, wxGROW ); #if 1 @@ -827,15 +824,15 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int #if 1 m_listCtrl->AppendTextColumn (wxT("editable string"), 0, wxDATAVIEW_CELL_EDITABLE, 120 ); - m_listCtrl->AppendIconTextColumn(wxT("icon"), 1, wxDATAVIEW_CELL_INERT, 60 ); + m_listCtrl->AppendIconTextColumn(wxIcon(small1_xpm), 1, wxDATAVIEW_CELL_INERT )->SetTitle( wxT("icon") ); #else m_listCtrl->AppendTextColumn (wxT("editable string"), 0, wxDATAVIEW_CELL_EDITABLE ); m_listCtrl->AppendIconTextColumn(wxT("icon"), 1, wxDATAVIEW_CELL_INERT ); #endif wxDataViewTextRendererAttr *ra = new wxDataViewTextRendererAttr; - wxDataViewColumn *column3 = new wxDataViewColumn(wxT("attributes"), ra, 2 ); - m_listCtrl->AppendColumn( column3 ); + wxDataViewColumn *column4 = new wxDataViewColumn(wxT("attributes"), ra, 2 ); + m_listCtrl->AppendColumn( column4 ); data_sizer->Add( m_listCtrl, 2, wxGROW ); @@ -1040,6 +1037,14 @@ void MyFrame::OnContextMenu( wxDataViewEvent &event ) wxString title = m_music_model->GetTitle( event.GetItem() ); wxLogMessage(wxT("wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, Item: %s"),title.GetData()); + + wxMenu *menu = new wxMenu; + menu->Append( 1, wxT("entry 1") ); + menu->Append( 2, wxT("entry 2") ); + menu->Append( 3, wxT("entry 3") ); + + m_musicCtrl->PopupMenu( menu ); + // wxLogMessage(wxT("wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, Item: %s Value: %s"),title.GetData(), event.GetValue().GetString()); }