X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/62b45e0694192d7dfc9b40a9b4a34c98dd15096e..61c213fe224da24ce33c9187263e75a17ca83a04:/samples/htlbox/htlbox.cpp?ds=sidebyside diff --git a/samples/htlbox/htlbox.cpp b/samples/htlbox/htlbox.cpp index 322483f688..95d99d5c0e 100644 --- a/samples/htlbox/htlbox.cpp +++ b/samples/htlbox/htlbox.cpp @@ -72,16 +72,27 @@ public: MyHtmlListBox(wxWindow *parent, bool multi = false); void SetChangeSelFg(bool change) { m_change = change; } + void UpdateFirstItem(); protected: + // override this method to return data to be shown in the listbox (this is + // mandatory) virtual wxString OnGetItem(size_t n) const; - // change the appearance by overriding these functions + // change the appearance by overriding these functions (this is optional) virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const; virtual wxColour GetSelectedTextColour(const wxColour& colFg) const; + + // flag telling us whether we should use fg colour even for the selected + // item bool m_change; + // flag which we toggle to update the first items text in OnGetItem() + bool m_firstItemUpdated; + + + #ifdef USE_HTML_FILE wxTextFile m_file; #endif @@ -103,6 +114,7 @@ public: void OnDrawSeparator(wxCommandEvent&) { m_hlbox->RefreshAll(); } void OnToggleMulti(wxCommandEvent& event); void OnSelectAll(wxCommandEvent& event); + void OnUpdateItem(wxCommandEvent& event); void OnSetBgCol(wxCommandEvent& event); void OnSetSelBgCol(wxCommandEvent& event); @@ -144,6 +156,7 @@ enum HtmlLbox_DrawSeparator, HtmlLbox_ToggleMulti, HtmlLbox_SelectAll, + HtmlLbox_UpdateItem, HtmlLbox_SetBgCol, HtmlLbox_SetSelBgCol, @@ -166,6 +179,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(HtmlLbox_DrawSeparator, MyFrame::OnDrawSeparator) EVT_MENU(HtmlLbox_ToggleMulti, MyFrame::OnToggleMulti) EVT_MENU(HtmlLbox_SelectAll, MyFrame::OnSelectAll) + EVT_MENU(HtmlLbox_UpdateItem, MyFrame::OnUpdateItem) EVT_MENU(HtmlLbox_About, MyFrame::OnAbout) @@ -217,6 +231,7 @@ MyFrame::MyFrame() _T("Toggle multiple selection on/off")); menuHLbox->AppendSeparator(); menuHLbox->Append(HtmlLbox_SelectAll, _T("Select &all items\tCtrl-A")); + menuHLbox->Append(HtmlLbox_UpdateItem, _T("Update &first item\tCtrl-U")); menuHLbox->AppendSeparator(); menuHLbox->Append(HtmlLbox_SetBgCol, _T("Set &background...\tCtrl-B")); menuHLbox->Append(HtmlLbox_SetSelBgCol, @@ -327,6 +342,11 @@ void MyFrame::OnUpdateUISelectAll(wxUpdateUIEvent& event) event.Enable( m_hlbox && m_hlbox->HasMultipleSelection() ); } +void MyFrame::OnUpdateItem(wxCommandEvent& WXUNUSED(event)) +{ + m_hlbox->UpdateFirstItem(); +} + void MyFrame::OnSetBgCol(wxCommandEvent& WXUNUSED(event)) { wxColour col = wxGetColourFromUser(this, m_hlbox->GetBackgroundColour()); @@ -408,6 +428,8 @@ MyHtmlListBox::MyHtmlListBox(wxWindow *parent, bool multi) multi ? wxLB_MULTIPLE : 0) { m_change = true; + m_firstItemUpdated = false; + SetMargins(5, 5); @@ -440,6 +462,11 @@ void MyHtmlListBox::OnDrawSeparator(wxDC& dc, wxRect& rect, size_t) const wxString MyHtmlListBox::OnGetItem(size_t n) const { + if ( !n && m_firstItemUpdated ) + { + return wxString::Format(_T("