]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/treectrl/treetest.cpp
corrected (?) wxStringList::Delete()
[wxWidgets.git] / samples / treectrl / treetest.cpp
index 068853eac05f2a74607cd5ac14b63f3de1e93a85..17d2ac3490bb6aeccb22f70fedb8a539dc7aa8ec 100644 (file)
@@ -43,6 +43,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
   EVT_MENU(TreeTest_Quit, MyFrame::OnQuit)
   EVT_MENU(TreeTest_About, MyFrame::OnAbout)
   EVT_MENU(TreeTest_Dump, MyFrame::OnDump)
+  EVT_MENU(TreeTest_Bold, MyFrame::OnSetBold)
+  EVT_MENU(TreeTest_UnBold, MyFrame::OnClearBold)
+  EVT_MENU(TreeTest_Delete, MyFrame::OnDelete)
+  EVT_MENU(TreeTest_DeleteAll, MyFrame::OnDeleteAll)
+  EVT_MENU(TreeTest_Recreate, MyFrame::OnRecreate)
 END_EVENT_TABLE()
 
 BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
@@ -59,7 +64,7 @@ BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
   EVT_TREE_ITEM_COLLAPSING(TreeTest_Ctrl, MyTreeCtrl::OnItemCollapsing)
   EVT_TREE_SEL_CHANGED(TreeTest_Ctrl, MyTreeCtrl::OnSelChanged)
   EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging)
-  EVT_CHAR(MyTreeCtrl::OnKeyDown)
+  EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown)
 END_EVENT_TABLE()
 
 IMPLEMENT_APP(MyApp)
@@ -93,7 +98,13 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
   // Make a menubar
   wxMenu *file_menu = new wxMenu;
 
-  file_menu->Append(TreeTest_Dump, "&Dump tree items");
+  file_menu->Append(TreeTest_Dump, "D&ump tree items");
+  file_menu->Append(TreeTest_Delete, "&Delete this item");
+  file_menu->Append(TreeTest_DeleteAll, "Delete &all items");
+  file_menu->Append(TreeTest_Recreate, "&Recreate the tree");
+  file_menu->AppendSeparator();
+  file_menu->Append(TreeTest_Bold, "Make item &bold");
+  file_menu->Append(TreeTest_UnBold, "Make item &not bold");
   file_menu->AppendSeparator();
   file_menu->Append(TreeTest_About, "&About...");
   file_menu->AppendSeparator();
@@ -130,9 +141,15 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
   CreateStatusBar(3);
   SetStatusText("", 0);
 
+#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(textCtrl);
   delete wxLog::SetActiveTarget(logWindow);
+#endif
 }
 
 MyFrame::~MyFrame()
@@ -157,10 +174,32 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 
 void MyFrame::OnDump(wxCommandEvent& WXUNUSED(event))
 {
-  wxTreeItemId root=m_treeCtrl->GetSelection();
+  wxTreeItemId root = m_treeCtrl->GetSelection();
   m_treeCtrl->GetItemsRecursively(root, -1);
 }
 
+void MyFrame::DoSetBold(bool bold)
+{
+  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), bold);
+}
+
+void MyFrame::OnDelete(wxCommandEvent& WXUNUSED(event))
+{
+  wxTreeItemId item = m_treeCtrl->GetSelection();
+  m_treeCtrl->Delete(item);
+}
+
+void MyFrame::OnDeleteAll(wxCommandEvent& WXUNUSED(event))
+{
+  m_treeCtrl->DeleteAllItems();
+}
+
+void MyFrame::OnRecreate(wxCommandEvent& event)
+{
+  OnDeleteAll(event);
+  m_treeCtrl->AddTestItemsToTree(3, 2);
+}
+
 // MyTreeCtrl implementation
 MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,
                        const wxPoint& pos, const wxSize& size,
@@ -171,8 +210,8 @@ MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,
   m_imageListNormal = new wxImageList(16, 16, TRUE);
 
   // should correspond to TreeCtrlIcon_xxx enum
-  m_imageListNormal->Add(wxICON(icon2));
   m_imageListNormal->Add(wxICON(icon1));
+  m_imageListNormal->Add(wxICON(icon2));
 
   SetImageList(m_imageListNormal);
 
@@ -204,7 +243,7 @@ void MyTreeCtrl::AddItemsRecursively(const wxTreeItemId& idParent,
       int image = depth == 1 ? TreeCtrlIcon_File : TreeCtrlIcon_Folder;
       wxTreeItemId id = AppendItem(idParent, str, image, image,
                                    new MyTreeItemData(str));
-      AddItemsRecursively(id, numChildren, depth - 1,n+1);
+      AddItemsRecursively(id, numChildren, depth - 1, n + 1);
     }
   }
   //else: done!
@@ -217,7 +256,7 @@ void MyTreeCtrl::AddTestItemsToTree(size_t numChildren,
                         TreeCtrlIcon_Folder, TreeCtrlIcon_Folder,
                         new MyTreeItemData("Root item"));
 
-  AddItemsRecursively(rootId, numChildren, depth,0);
+  AddItemsRecursively(rootId, numChildren, depth, 0);
 }
 
 void MyTreeCtrl::GetItemsRecursively(const wxTreeItemId& idParent, long cookie)
@@ -278,7 +317,7 @@ void MyTreeCtrl::OnItemCollapsing(wxTreeEvent& event)
   }
 }
 
-void MyTreeCtrl::OnKeyDown(wxTreeEvent& WXUNUSED(event))
+void MyTreeCtrl::OnTreeKeyDown(wxTreeEvent&WXUNUSED(event))
 {
   // show some info about this item
   wxTreeItemId itemId = GetSelection();
@@ -289,7 +328,7 @@ void MyTreeCtrl::OnKeyDown(wxTreeEvent& WXUNUSED(event))
     item->ShowInfo(this);
   }
 
-  wxLogMessage("OnKeyDown");
+  wxLogMessage("OnTreeKeyDown");
 }
 
 static inline const char *Bool2String(bool b)
@@ -299,11 +338,12 @@ static inline const char *Bool2String(bool b)
 
 void MyTreeItemData::ShowInfo(wxTreeCtrl *tree)
 {
-  wxLogMessage("Item '%s': %sselected, %sexpanded, "
+  wxLogMessage("Item '%s': %sselected, %sexpanded, %sbold,\n"
                "%u children (%u immediately under this item).",
                m_desc.c_str(),
                Bool2String(tree->IsSelected(GetId())),
                Bool2String(tree->IsExpanded(GetId())),
+               Bool2String(tree->IsBold(GetId())),
                tree->GetChildrenCount(GetId()),
                tree->GetChildrenCount(GetId(), FALSE));
 }