X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c9588456e717f8e8c83b1124504b16d2c400b86..77241feb3f132b90af41681b236def04139e8ea7:/samples/dataview/dataview.cpp diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index cf7f30e41c..7e65b9b9a6 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); @@ -227,6 +230,8 @@ bool MyApp::OnInit() enum { ID_CLEARLOG = wxID_HIGHEST+1, + ID_BACKGROUND_COLOUR, + ID_FOREGROUND_COLOUR, ID_STYLE_MENU, // file menu @@ -265,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 ) @@ -330,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"); @@ -435,7 +445,7 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int mainSizer->Add( m_notebook, 1, wxGROW ); mainSizer->Add( m_log, 0, wxGROW ); - + SetSizerAndFit(mainSizer); } @@ -535,15 +545,10 @@ void MyFrame::BuildDataViewCtrl(wxPanel* parent, unsigned int nPanel, unsigned l m_ctrl[1]->AssociateModel( m_list_model.get() ); // the various columns -#if 1 - m_ctrl[1]->AppendTextColumn("editable string", 0, wxDATAVIEW_CELL_EDITABLE, 120); - m_ctrl[1]->AppendIconTextColumn(wxIcon(wx_small_xpm), 1, wxDATAVIEW_CELL_INERT )->SetTitle( "icon"); -#else m_ctrl[1]->AppendTextColumn("editable string", 0, wxDATAVIEW_CELL_EDITABLE); - m_ctrl[1]->AppendIconTextColumn("icon", 1, wxDATAVIEW_CELL_INERT); -#endif + m_ctrl[1]->AppendIconTextColumn("icon", 1, wxDATAVIEW_CELL_EDITABLE); m_ctrl[1]->AppendColumn( - new wxDataViewColumn("attributes", new wxDataViewTextRendererAttr, 2 )); + new wxDataViewColumn("attributes", new wxDataViewTextRenderer, 2 )); } break; @@ -611,6 +616,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(); @@ -692,7 +719,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"); @@ -819,7 +846,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 ) @@ -850,12 +879,15 @@ void MyFrame::OnStartEditing( wxDataViewEvent &event ) if (artist == "Ludwig van Beethoven") { event.Veto(); - + if (!m_log) return; - - wxLogMessage( "wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING vetoed, Item: %s", artist ); + + 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 )