wxDataViewCtrl now with editable text and multiple
views for the same data model (in the sample). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37682 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -33,7 +33,12 @@
|
||||
class MyTextModel: public wxDataViewListModel
|
||||
{
|
||||
public:
|
||||
MyTextModel() {}
|
||||
MyTextModel()
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < 1000; i++)
|
||||
m_list.Add( wxT("Test") );
|
||||
}
|
||||
|
||||
virtual size_t GetNumberOfRows()
|
||||
{ return 1000; }
|
||||
@@ -42,11 +47,30 @@ public:
|
||||
// as reported by wxVariant
|
||||
virtual wxString GetColType( size_t col )
|
||||
{ return wxT("string"); }
|
||||
|
||||
virtual wxVariant GetValue( size_t col, size_t row )
|
||||
{ wxString tmp;
|
||||
tmp.Printf( wxT("item(%d;%d)"), (int)row, (int)col );
|
||||
return tmp;
|
||||
{
|
||||
if (col == 2)
|
||||
{
|
||||
return m_list[row];
|
||||
}
|
||||
else
|
||||
{
|
||||
wxString tmp;
|
||||
tmp.Printf( wxT("item(%d;%d)"), (int)row, (int)col );
|
||||
return tmp;
|
||||
}
|
||||
}
|
||||
virtual bool SetValue( wxVariant &value, size_t col, size_t row )
|
||||
{
|
||||
if (col == 2)
|
||||
{
|
||||
m_list[row] = value.GetString();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
wxArrayString m_list;
|
||||
};
|
||||
|
||||
// -------------------------------------
|
||||
@@ -73,7 +97,8 @@ public:
|
||||
void OnAbout(wxCommandEvent& event);
|
||||
|
||||
private:
|
||||
wxDataViewCtrl* dataview;
|
||||
wxDataViewCtrl* dataview_left;
|
||||
wxDataViewCtrl* dataview_right;
|
||||
};
|
||||
|
||||
// -------------------------------------
|
||||
@@ -126,15 +151,33 @@ MyFrame::MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h):
|
||||
CreateStatusBar();
|
||||
|
||||
|
||||
dataview = new wxDataViewCtrl( this, -1 );
|
||||
// Left wxDataViewCtrl
|
||||
dataview_left = new wxDataViewCtrl( this, -1 );
|
||||
|
||||
MyTextModel *model = new MyTextModel;
|
||||
dataview->AssociateModel( model );
|
||||
dataview_left->AssociateModel( model );
|
||||
|
||||
dataview->AppendStringColumn( wxT("first"), 0 );
|
||||
dataview->AppendStringColumn( wxT("second"), 1 );
|
||||
dataview->AppendStringColumn( wxT("third"), 2 );
|
||||
dataview_left->AppendStringColumn( wxT("first"), 0 );
|
||||
dataview_left->AppendStringColumn( wxT("second"), 1 );
|
||||
wxDataViewTextCell *cell = new wxDataViewTextCell( wxT("string"), wxDATAVIEW_CELL_EDITABLE );
|
||||
wxDataViewColumn *column = new wxDataViewColumn( wxT("editable"), cell, 2 );
|
||||
dataview_left->AppendColumn( column );
|
||||
|
||||
// Right wxDataViewCtrl using the same model
|
||||
dataview_right = new wxDataViewCtrl( this, -1 );
|
||||
dataview_right->AssociateModel( model );
|
||||
|
||||
cell = new wxDataViewTextCell( wxT("string"), wxDATAVIEW_CELL_EDITABLE );
|
||||
column = new wxDataViewColumn( wxT("editable"), cell, 2 );
|
||||
dataview_right->AppendColumn( column );
|
||||
dataview_right->AppendStringColumn( wxT("first"), 0 );
|
||||
dataview_right->AppendStringColumn( wxT("second"), 1 );
|
||||
|
||||
wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
sizer->Add( dataview_left, 1, wxGROW );
|
||||
sizer->Add(10,10);
|
||||
sizer->Add( dataview_right, 1, wxGROW );
|
||||
SetSizer( sizer );
|
||||
}
|
||||
|
||||
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
|
||||
|
Reference in New Issue
Block a user