X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ecad59d882da1482097248047152ea5dc0ec3763..9aa2e298aefd0c37719127a7078d313c488cf849:/samples/dataview/dataview.cpp diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index e81528961d..101be7269d 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -28,6 +28,7 @@ #include "wx/datetime.h" #include "wx/splitter.h" #include "wx/aboutdlg.h" +#include "wx/colordlg.h" #include "wx/choicdlg.h" #include "wx/numdlg.h" #include "wx/spinctrl.h" @@ -73,6 +74,8 @@ public: public: // event handlers void OnStyleChange(wxCommandEvent& event); + void OnSetBackgroundColour(wxCommandEvent& event); + void OnSetForegroundColour(wxCommandEvent& event); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); @@ -98,6 +101,7 @@ public: // event handlers void OnCollapsed( wxDataViewEvent &event ); void OnSelectionChanged( wxDataViewEvent &event ); + void OnStartEditing( wxDataViewEvent &event ); void OnEditingStarted( wxDataViewEvent &event ); void OnEditingDone( wxDataViewEvent &event ); @@ -226,6 +230,8 @@ bool MyApp::OnInit() enum { ID_CLEARLOG = wxID_HIGHEST+1, + ID_BACKGROUND_COLOUR, + ID_FOREGROUND_COLOUR, ID_STYLE_MENU, // file menu @@ -264,6 +270,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU( ID_ABOUT, MyFrame::OnAbout ) EVT_MENU( ID_CLEARLOG, MyFrame::OnClearLog ) + EVT_MENU( ID_FOREGROUND_COLOUR, MyFrame::OnSetForegroundColour ) + EVT_MENU( ID_BACKGROUND_COLOUR, MyFrame::OnSetBackgroundColour ) + EVT_NOTEBOOK_PAGE_CHANGED( wxID_ANY, MyFrame::OnPageChanged ) EVT_BUTTON( ID_ADD_MOZART, MyFrame::OnAddMozart ) @@ -287,6 +296,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_DATAVIEW_ITEM_COLLAPSED(ID_MUSIC_CTRL, MyFrame::OnCollapsed) EVT_DATAVIEW_SELECTION_CHANGED(ID_MUSIC_CTRL, MyFrame::OnSelectionChanged) + EVT_DATAVIEW_ITEM_START_EDITING(ID_MUSIC_CTRL, MyFrame::OnStartEditing) EVT_DATAVIEW_ITEM_EDITING_STARTED(ID_MUSIC_CTRL, MyFrame::OnEditingStarted) EVT_DATAVIEW_ITEM_EDITING_DONE(ID_MUSIC_CTRL, MyFrame::OnEditingDone) @@ -328,7 +338,9 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int style_menu->AppendCheckItem(ID_VERT_RULES, "Display vertical rules"); wxMenu *file_menu = new wxMenu; - file_menu->Append(ID_CLEARLOG, "Clear log"); + file_menu->Append(ID_CLEARLOG, "&Clear log\tCtrl-L"); + file_menu->Append(ID_FOREGROUND_COLOUR, "Set &foreground colour...\tCtrl-F"); + file_menu->Append(ID_BACKGROUND_COLOUR, "Set &background colour...\tCtrl-B"); file_menu->Append(ID_STYLE_MENU, "&Style", style_menu); file_menu->AppendSeparator(); file_menu->Append(ID_EXIT, "E&xit"); @@ -541,7 +553,7 @@ void MyFrame::BuildDataViewCtrl(wxPanel* parent, unsigned int nPanel, unsigned l m_ctrl[1]->AppendIconTextColumn("icon", 1, wxDATAVIEW_CELL_INERT); #endif m_ctrl[1]->AppendColumn( - new wxDataViewColumn("attributes", new wxDataViewTextRendererAttr, 2 )); + new wxDataViewColumn("attributes", new wxDataViewTextRenderer, 2 )); } break; @@ -609,6 +621,28 @@ void MyFrame::OnClearLog( wxCommandEvent& WXUNUSED(event) ) m_log->Clear(); } +void MyFrame::OnSetForegroundColour(wxCommandEvent& WXUNUSED(event)) +{ + wxDataViewCtrl * const dvc = m_ctrl[m_notebook->GetSelection()]; + wxColour col = wxGetColourFromUser(this, dvc->GetForegroundColour()); + if ( col.IsOk() ) + { + dvc->SetForegroundColour(col); + Refresh(); + } +} + +void MyFrame::OnSetBackgroundColour(wxCommandEvent& WXUNUSED(event)) +{ + wxDataViewCtrl * const dvc = m_ctrl[m_notebook->GetSelection()]; + wxColour col = wxGetColourFromUser(this, dvc->GetBackgroundColour()); + if ( col.IsOk() ) + { + dvc->SetBackgroundColour(col); + Refresh(); + } +} + void MyFrame::OnPageChanged( wxBookCtrlEvent& WXUNUSED(event) ) { unsigned int nPanel = m_notebook->GetSelection(); @@ -690,7 +724,7 @@ void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) wxAboutDialogInfo info; info.SetName(_("DataView sample")); info.SetDescription(_("This sample demonstrates wxDataViewCtrl")); - info.SetCopyright(_T("(C) 2007-2009 Robert Roebling")); + info.SetCopyright(wxT("(C) 2007-2009 Robert Roebling")); info.AddDeveloper("Robert Roebling"); info.AddDeveloper("Francesco Montorsi"); @@ -817,7 +851,9 @@ void MyFrame::OnActivated( wxDataViewEvent &event ) wxLogMessage( "wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, Item: %s", title ); if (m_ctrl[0]->IsExpanded( event.GetItem() )) + { wxLogMessage( "Item: %s is expanded", title ); + } } void MyFrame::OnSelectionChanged( wxDataViewEvent &event ) @@ -842,6 +878,23 @@ void MyFrame::OnExpanding( wxDataViewEvent &event ) } +void MyFrame::OnStartEditing( wxDataViewEvent &event ) +{ + wxString artist = m_music_model->GetArtist( event.GetItem() ); + if (artist == "Ludwig van Beethoven") + { + event.Veto(); + + if (!m_log) + return; + + wxLogMessage( "wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING vetoed. Artist: %s", artist ); + } + else + wxLogMessage( "wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING not vetoed. Artist: %s", artist ); + +} + void MyFrame::OnEditingStarted( wxDataViewEvent &event ) { if (!m_log) @@ -915,6 +968,7 @@ void MyFrame::OnHeaderClick( wxDataViewEvent &event ) int pos = m_ctrl[0]->GetColumnPosition( event.GetDataViewColumn() ); wxLogMessage( "wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, Column position: %d", pos ); + wxLogMessage( "Column width: %d", event.GetDataViewColumn()->GetWidth() ); } void MyFrame::OnHeaderRightClick( wxDataViewEvent &event )