X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a1b806b98241ab649c169aaa1f134df85e80fb8b..fa699cbaaf217af186cd04dd10d6ec67c8667136:/samples/treectrl/treetest.cpp diff --git a/samples/treectrl/treetest.cpp b/samples/treectrl/treetest.cpp index 8bfb579636..485e203b54 100644 --- a/samples/treectrl/treetest.cpp +++ b/samples/treectrl/treetest.cpp @@ -30,6 +30,7 @@ #include "wx/treectrl.h" #include "wx/math.h" #include "wx/renderer.h" +#include "wx/wupdlock.h" #ifdef __WIN32__ // this is not supported by native control @@ -53,7 +54,7 @@ #include "unchecked.xpm" #include "checked.xpm" -#ifndef __WXMSW__ +#ifndef wxHAS_IMAGES_IN_RESOURCES #include "../sample.xpm" #endif @@ -113,6 +114,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) MENU_LINK(Recreate) MENU_LINK(ToggleImages) MENU_LINK(ToggleStates) + MENU_LINK(ToggleBell) MENU_LINK(ToggleAlternateImages) MENU_LINK(ToggleAlternateStates) MENU_LINK(ToggleButtons) @@ -121,6 +123,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) MENU_LINK(EnsureVisible) MENU_LINK(SetFocus) MENU_LINK(AddItem) + MENU_LINK(AddManyItems) MENU_LINK(InsertItem) MENU_LINK(IncIndent) MENU_LINK(DecIndent) @@ -214,7 +217,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) // This reduces flicker effects - even better would be to define // OnEraseBackground to do nothing. When the tree control's scrollbars are // show or hidden, the frame is sent a background erase event. - SetBackgroundColour(wxColour(255, 255, 255)); + SetBackgroundColour(*wxWHITE); // Give it an icon SetIcon(wxICON(sample)); @@ -226,9 +229,11 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) *tree_menu = new wxMenu, *item_menu = new wxMenu; +#if wxUSE_LOG file_menu->Append(TreeTest_ClearLog, wxT("&Clear log\tCtrl-L")); file_menu->AppendSeparator(); - file_menu->Append(TreeTest_About, wxT("&About...")); +#endif // wxUSE_LOG + file_menu->Append(TreeTest_About, wxT("&About")); file_menu->AppendSeparator(); file_menu->Append(TreeTest_Quit, wxT("E&xit\tAlt-X")); @@ -247,6 +252,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) #endif // NO_MULTIPLE_SELECTION style_menu->AppendCheckItem(TreeTest_ToggleImages, wxT("Toggle show ima&ges")); style_menu->AppendCheckItem(TreeTest_ToggleStates, wxT("Toggle show st&ates")); + style_menu->AppendCheckItem(TreeTest_ToggleBell, wxT("Toggle &bell on no match")); style_menu->AppendCheckItem(TreeTest_ToggleAlternateImages, wxT("Toggle alternate images")); style_menu->AppendCheckItem(TreeTest_ToggleAlternateStates, wxT("Toggle alternate state images")); style_menu->Append(TreeTest_SetImageSize, wxT("Set image si&ze...")); @@ -260,6 +266,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) tree_menu->Append(TreeTest_CollapseAndReset, wxT("C&ollapse and reset")); tree_menu->AppendSeparator(); tree_menu->Append(TreeTest_AddItem, wxT("Append a &new item")); + tree_menu->Append(TreeTest_AddManyItems, wxT("Appends &many items")); tree_menu->Append(TreeTest_InsertItem, wxT("&Insert a new item")); tree_menu->Append(TreeTest_Delete, wxT("&Delete this item")); tree_menu->Append(TreeTest_DeleteChildren, wxT("Delete &children")); @@ -334,6 +341,16 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) m_textCtrl = new wxTextCtrl(m_panel, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER); + +#ifdef __WXMOTIF__ + // For some reason, we get a memcpy crash in wxLogStream::DoLogStream + // on gcc/wxMotif, if we use wxLogTextCtl. Maybe it's just gcc? + delete wxLog::SetActiveTarget(new wxLogStderr); +#else + // set our text control as the log target + wxLogTextCtrl *logWindow = new wxLogTextCtrl(m_textCtrl); + delete wxLog::SetActiveTarget(logWindow); +#endif #endif // wxUSE_LOG CreateTreeWithDefStyle(); @@ -347,18 +364,6 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) // create a status bar CreateStatusBar(2); #endif // wxUSE_STATUSBAR - -#if wxUSE_LOG -#ifdef __WXMOTIF__ - // For some reason, we get a memcpy crash in wxLogStream::DoLogStream - // on gcc/wxMotif, if we use wxLogTextCtl. Maybe it's just gcc? - delete wxLog::SetActiveTarget(new wxLogStderr); -#else - // set our text control as the log target - wxLogTextCtrl *logWindow = new wxLogTextCtrl(m_textCtrl); - delete wxLog::SetActiveTarget(logWindow); -#endif -#endif // wxUSE_LOG } MyFrame::~MyFrame() @@ -705,6 +710,11 @@ void MyFrame::OnToggleStates(wxCommandEvent& WXUNUSED(event)) } } +void MyFrame::OnToggleBell(wxCommandEvent& event) +{ + m_treeCtrl->EnableBellOnNoMatch(event.IsChecked()); +} + void MyFrame::OnToggleAlternateImages(wxCommandEvent& WXUNUSED(event)) { bool alternateImages = m_treeCtrl->AlternateImages(); @@ -775,6 +785,17 @@ void MyFrame::OnAddItem(wxCommandEvent& WXUNUSED(event)) MyTreeCtrl::TreeCtrlIcon_File */ ); } +void MyFrame::OnAddManyItems(wxCommandEvent& WXUNUSED(event)) +{ + wxWindowUpdateLocker lockUpdates(this); + + const wxTreeItemId root = m_treeCtrl->GetRootItem(); + for ( int n = 0; n < 1000; n++ ) + { + m_treeCtrl->AppendItem(root, wxString::Format("Item #%03d", n)); + } +} + void MyFrame::OnIncIndent(wxCommandEvent& WXUNUSED(event)) { unsigned int indent = m_treeCtrl->GetIndent(); @@ -1606,7 +1627,7 @@ void MyTreeCtrl::ShowMenu(wxTreeItemId id, const wxPoint& pt) #if wxUSE_MENUS wxMenu menu(title); - menu.Append(TreeTest_About, wxT("&About...")); + menu.Append(TreeTest_About, wxT("&About")); menu.AppendSeparator(); menu.Append(TreeTest_Highlight, wxT("&Highlight item")); menu.Append(TreeTest_Dump, wxT("&Dump"));