- // set to wxDVC_DEFAULT_WIDTH wide all columns except those
- // contained in 'idx' which are set to 'width'
-
- for (size_t i=0; i<dataview_left->GetColumnCount(); i++)
- {
- int toset = minwidth ? wxDVC_DEFAULT_MINWIDTH : wxDVC_DEFAULT_WIDTH;
- if (idx.Index(i) != wxNOT_FOUND)
- toset = width;
-
- if (minwidth)
- dataview_left->GetColumn(i)->SetMinWidth(toset);
- else
- dataview_left->GetColumn(i)->SetWidth(toset);
- }
-}
-
-
-// -------------------------------------
-// MySortingFrame
-// -------------------------------------
-
-BEGIN_EVENT_TABLE(MySortingFrame,wxFrame)
- EVT_BUTTON( ID_APPEND_ROW_LEFT, MySortingFrame::OnAppendRowLeft )
- EVT_BUTTON( ID_PREPEND_ROW_LEFT, MySortingFrame::OnPrependRowLeft )
- EVT_BUTTON( ID_INSERT_ROW_LEFT, MySortingFrame::OnInsertRowLeft )
- EVT_BUTTON( ID_DELETE_ROW_LEFT, MySortingFrame::OnDeleteRowLeft )
- EVT_BUTTON( ID_SELECT, MySortingFrame::OnSelect )
- EVT_BUTTON( ID_UNSELECT_ALL, MySortingFrame::OnUnselectAll )
- EVT_DATAVIEW_ROW_SELECTED( ID_SORTED, MySortingFrame::OnSelectedSorted )
- EVT_DATAVIEW_ROW_SELECTED( ID_UNSORTED, MySortingFrame::OnSelectedUnsorted )
- EVT_DATAVIEW_ROW_ACTIVATED( ID_UNSORTED, MySortingFrame::OnActivatedUnsorted )
- EVT_DATAVIEW_COLUMN_HEADER_CLICK( ID_SORTED, MySortingFrame::OnHeaderClickSorted )
- EVT_DATAVIEW_COLUMN_HEADER_CLICK( ID_UNSORTED, MySortingFrame::OnHeaderClickUnsorted )
-END_EVENT_TABLE()
-
-MySortingFrame::MySortingFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h):
- wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h))
-{
- m_logOld = NULL;
-
- SetIcon(wxICON(sample));
- CreateStatusBar();
-
- wxPanel *main = new wxPanel(this);
-
- // Left wxDataViewCtrl
- dataview_left = new wxDataViewCtrl( main, ID_UNSORTED, wxDefaultPosition,
- wxDefaultSize, wxDV_MULTIPLE );
-
- m_unsorted_model.reset(new MyUnsortedTextModel);
- dataview_left->AssociateModel( m_unsorted_model.get() );
-
- wxDataViewTextRenderer *text_renderer =
- new wxDataViewTextRenderer( wxT("string"), wxDATAVIEW_CELL_EDITABLE );
- wxDataViewColumn *column = new wxDataViewColumn( wxT("editable"), text_renderer, 0 );
- dataview_left->AppendColumn( column );
- dataview_left->AppendTextColumn( wxT("second"), 1 );
- dataview_left->AppendColumn( new wxDataViewColumn( wxBitmap(null_xpm),
- new wxDataViewBitmapRenderer, 2, 25 ) );
- dataview_left->AppendColumn( new wxDataViewColumn( wxT("icon"),
- new wxDataViewBitmapRenderer, 3, 25 ) );
-
- // Right wxDataViewCtrl using the sorting model
- dataview_right = new wxDataViewCtrl( main, ID_SORTED );
-
- m_sorted_model.reset(new wxDataViewSortedListModel( m_unsorted_model.get() ));
- dataview_right->AssociateModel( m_sorted_model.get() );
-
- text_renderer = new wxDataViewTextRenderer( wxT("string"), wxDATAVIEW_CELL_EDITABLE );
- column = new wxDataViewColumn( wxT("editable"), text_renderer, 0, -1,
- wxALIGN_CENTER,
- wxDATAVIEW_COL_SORTABLE|wxDATAVIEW_COL_RESIZABLE );
- dataview_right->AppendColumn( column );
-
- dataview_right->AppendTextColumn( wxT("second"), 1 );
-
- // layout dataview controls.
-
- wxBoxSizer *top_sizer = new wxBoxSizer( wxHORIZONTAL );
- top_sizer->Add( dataview_left, 1, wxGROW );
- top_sizer->Add(10,10);
- top_sizer->Add( dataview_right, 1, wxGROW );
-
- wxBoxSizer *button_sizer = new wxBoxSizer( wxHORIZONTAL );
- button_sizer->Add( 10, 10, 1 );
- wxFlexGridSizer *left_sizer = new wxFlexGridSizer( 2 );
- left_sizer->Add( new wxButton( main, ID_APPEND_ROW_LEFT, wxT("Append") ), 0, wxALL, 5 );
- left_sizer->Add( new wxButton( main, ID_PREPEND_ROW_LEFT, wxT("Prepend") ), 0, wxALL, 5 );
- left_sizer->Add( new wxButton( main, ID_INSERT_ROW_LEFT, wxT("Insert") ), 0, wxALL, 5 );
- left_sizer->Add( new wxButton( main, ID_DELETE_ROW_LEFT, wxT("Delete second") ), 0, wxALL, 5 );
- left_sizer->Add( new wxButton( main, ID_EDIT_ROW_LEFT, wxT("Edit") ), 0, wxALL, 5 );
- left_sizer->Add( 5,5 );
- left_sizer->Add( new wxButton( main, ID_SELECT, wxT("Select third") ), 0, wxALL, 5 );
- left_sizer->Add( new wxButton( main, ID_UNSELECT_ALL, wxT("Unselect all") ), 0, wxALL, 5 );
- button_sizer->Add( left_sizer );
- button_sizer->Add( 10, 10, 2 );
- wxFlexGridSizer *right_sizer = new wxFlexGridSizer( 2 );
- right_sizer->Add( new wxButton( main, ID_APPEND_ROW_RIGHT, wxT("Append") ), 0, wxALL, 5 );
- right_sizer->Add( new wxButton( main, ID_PREPEND_ROW_RIGHT, wxT("Prepend") ), 0, wxALL, 5 );
- right_sizer->Add( new wxButton( main, ID_INSERT_ROW_RIGHT, wxT("Insert") ), 0, wxALL, 5 );
- right_sizer->Add( new wxButton( main, ID_DELETE_ROW_RIGHT, wxT("Delete second") ), 0, wxALL, 5 );
- right_sizer->Add( new wxButton( main, ID_EDIT_ROW_RIGHT, wxT("Edit") ), 0, wxALL, 5 );
- button_sizer->Add( right_sizer );
- button_sizer->Add( 10, 10, 1 );
-
- wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );
- main_sizer->Add( top_sizer, 1, wxGROW );
- main_sizer->Add( button_sizer, 0, wxGROW );
-
- m_logWindow = new wxTextCtrl(main, wxID_ANY, wxEmptyString,
- wxDefaultPosition, wxDefaultSize,
- wxTE_MULTILINE | wxSUNKEN_BORDER);
- main_sizer->Add( 20,20 );
- main_sizer->Add( m_logWindow, 1, wxGROW );