- // check the menus for the default wxDataViewCtrl style
- data_menu->Check(ID_MULTIPLE_SEL_MODE, (DATAVIEW_DEFAULT_STYLE & wxDV_MULTIPLE) != 0);
- data_menu->Check(ID_NO_HEADER_MODE, (DATAVIEW_DEFAULT_STYLE & wxDV_NO_HEADER) != 0);
- data_menu->Check(ID_HORIZ_RULES_MODE, (DATAVIEW_DEFAULT_STYLE & wxDV_HORIZ_RULES) != 0);
- data_menu->Check(ID_VERT_RULES_MODE, (DATAVIEW_DEFAULT_STYLE & wxDV_VERT_RULES) != 0);
-
-
- // build the other controls:
-
- m_splitter = new wxSplitterWindow( this, wxID_ANY );
- m_splitter->SetSashGravity(0.5);
-
- m_panelLeft = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize,
- wxNO_BORDER );
- m_panelRight = new wxPanel( m_splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize,
- wxNO_BORDER );
- wxSizer *szLeft = new wxBoxSizer(wxVERTICAL);
- wxSizer *szRight = new wxBoxSizer(wxVERTICAL);
-
- dataview_left = NULL;
- dataview_right = NULL;
- CreateDataViewControls();
-
- // left panel
- szLeft->Add( dataview_left, 1, wxGROW|wxALL, 5 );
- m_panelLeft->SetSizerAndFit(szLeft);
-
- // right panel
- wxStaticText *stattext =
- new wxStaticText(m_panelRight, wxID_ANY,
- wxT("This is another wxDataViewCtrl using the same wxDataViewModel ")
- wxT("of the wxDataViewCtrl on the left but, unlike it, this window ")
- wxT("won't react to the style/column changes done through the ")
- wxT("'DataViewCtrl' menu"));
- stattext->Wrap(GetClientSize().GetWidth() / 2);
-
- szRight->Add( stattext, 0, wxALL, 5 );
- szRight->Add( dataview_right, 1, wxGROW|wxALL, 5 );
- m_panelRight->SetSizerAndFit(szRight);
-
- // split the two panels
- m_splitter->SplitVertically(m_panelLeft, m_panelRight);
- this->SetMinSize(m_splitter->GetBestSize());
-}
-
-void MyFrame::CreateDataViewControls()
-{
- wxDataViewCtrl *old1 = NULL, *old2 = NULL;
-
- if (dataview_left)
- old1 = dataview_left;
- if (dataview_right)
- old2 = dataview_right;
-
- // styles:
- long style = 0;
- if (GetMenuBar()->FindItem(ID_MULTIPLE_SEL_MODE)->IsChecked())
- style |= wxDV_MULTIPLE;
- if (GetMenuBar()->FindItem(ID_NO_HEADER_MODE)->IsChecked())
- style |= wxDV_NO_HEADER;
- if (GetMenuBar()->FindItem(ID_HORIZ_RULES_MODE)->IsChecked())
- style |= wxDV_HORIZ_RULES;
- if (GetMenuBar()->FindItem(ID_VERT_RULES_MODE)->IsChecked())
- style |= wxDV_VERT_RULES;
-
-
- // Left wxDataViewCtrl
- dataview_left = new wxDataViewCtrl( m_panelLeft, wxID_ANY, wxDefaultPosition,
- wxDefaultSize, style );
-
-
- wxObjectDataPtr<MyTextModel> model(new MyTextModel);
- dataview_left->AssociateModel( model.get() );
-
- dataview_left->AppendTextColumn( wxT("First"), 0, wxDATAVIEW_CELL_INERT, -1,
- DEFAULT_ALIGN );
- dataview_left->AppendTextColumn( wxT("Second"), 1, wxDATAVIEW_CELL_INERT, -1,
- DEFAULT_ALIGN );
-
- wxDataViewTextRenderer *text_renderer =
- new wxDataViewTextRenderer( wxT("string"), wxDATAVIEW_CELL_EDITABLE );
- wxDataViewColumn *column = new wxDataViewColumn( wxT("editable"), text_renderer, 2,
- -1, DEFAULT_ALIGN );
- dataview_left->AppendColumn( column );
-
- dataview_left->AppendToggleColumn( wxT("fourth"), 3, wxDATAVIEW_CELL_INERT, -1,
- DEFAULT_ALIGN );
-
- MyCustomRenderer *custom_renderer = new MyCustomRenderer;
- column = new wxDataViewColumn( wxT("custom"), custom_renderer, 4, -1, DEFAULT_ALIGN );
- dataview_left->AppendColumn( column );
-
- dataview_left->AppendProgressColumn( wxT("progress"), 5, wxDATAVIEW_CELL_INERT, -1,
- DEFAULT_ALIGN );
-
- dataview_left->AppendDateColumn( wxT("date"), 6, wxDATAVIEW_CELL_INERT, -1, DEFAULT_ALIGN );
-