X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f73eddd2a5af3c58fff4e2a6154d9a395b7631a5..ba7512e14d2e148a5734d7727957470d0daf77fd:/samples/treectrl/treetest.h diff --git a/samples/treectrl/treetest.h b/samples/treectrl/treetest.h index 2d6e989211..8ea3334298 100644 --- a/samples/treectrl/treetest.h +++ b/samples/treectrl/treetest.h @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #define USE_GENERIC_TREECTRL 0 @@ -23,18 +23,21 @@ class MyApp : public wxApp { public: - MyApp() { m_showImages = true; m_showButtons = false; } + MyApp() { m_showImages = true; m_showStates = true; m_showButtons = false; } bool OnInit(); void SetShowImages(bool show) { m_showImages = show; } bool ShowImages() const { return m_showImages; } + void SetShowStates(bool show) { m_showStates = show; } + bool ShowStates() const { return m_showStates; } + void SetShowButtons(bool show) { m_showButtons = show; } bool ShowButtons() const { return m_showButtons; } private: - bool m_showImages, m_showButtons; + bool m_showImages, m_showStates, m_showButtons; }; class MyTreeItemData : public wxTreeItemData @@ -61,7 +64,7 @@ public: TreeCtrlIcon_FolderOpened }; - MyTreeCtrl() { m_alternateImages = false; } + MyTreeCtrl() { m_alternateImages = false; m_alternateStates = false; } MyTreeCtrl(wxWindow *parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style); @@ -85,6 +88,7 @@ public: void OnSelChanging(wxTreeEvent& event); void OnTreeKeyDown(wxTreeEvent& event); void OnItemActivated(wxTreeEvent& event); + void OnItemStateClick(wxTreeEvent& event); void OnItemRClick(wxTreeEvent& event); void OnRMouseDown(wxMouseEvent& event); @@ -96,6 +100,7 @@ public: void CreateImageList(int size = 16); void CreateButtonsImageList(int size = 11); + void CreateStateImageList(bool del = false); void AddTestItemsToTree(size_t numChildren, size_t depth); @@ -104,6 +109,7 @@ public: void DoEnsureVisible() { if (m_lastItem.IsOk()) EnsureVisible(m_lastItem); } void DoToggleIcon(const wxTreeItemId& item); + void DoToggleState(const wxTreeItemId& item); void ShowMenu(wxTreeItemId id, const wxPoint& pt); @@ -114,6 +120,16 @@ public: void SetAlternateImages(bool show) { m_alternateImages = show; } bool AlternateImages() const { return m_alternateImages; } + void SetAlternateStates(bool show) { m_alternateStates = show; } + bool AlternateStates() const { return m_alternateStates; } + + void ResetBrokenStateImages() + { + const size_t count = GetStateImageList()->GetImageCount(); + int state = count > 0 ? count - 1 : wxTREE_ITEMSTATE_NONE; + DoResetBrokenStateImages(GetRootItem(), 0, state); + } + protected: virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2); @@ -130,6 +146,9 @@ private: size_t depth, size_t folder); + void DoResetBrokenStateImages(const wxTreeItemId& idParent, + wxTreeItemIdValue cookie, int state); + void LogEvent(const wxChar *name, const wxTreeEvent& event); int m_imageSize; // current size of images @@ -137,6 +156,7 @@ private: wxTreeItemId m_lastItem, // for OnEnsureVisible() m_draggedItem; // item being dragged right now bool m_alternateImages; + bool m_alternateStates; // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS() // if you want your overloaded OnCompareItems() to be called. @@ -189,8 +209,11 @@ public: void OnSelect(wxCommandEvent& event); void OnUnselect(wxCommandEvent& event); void OnToggleSel(wxCommandEvent& event); + void OnSelectChildren(wxCommandEvent& event); #endif // NO_MULTIPLE_SELECTION void OnSelectRoot(wxCommandEvent& event); + void OnSetFocusedRoot(wxCommandEvent& event); + void OnClearFocused(wxCommandEvent& event); void OnDelete(wxCommandEvent& event); void OnDeleteChildren(wxCommandEvent& event); void OnDeleteAll(wxCommandEvent& event); @@ -198,7 +221,9 @@ public: void OnRecreate(wxCommandEvent& event); void OnToggleButtons(wxCommandEvent& event); void OnToggleImages(wxCommandEvent& event); + void OnToggleStates(wxCommandEvent& event); void OnToggleAlternateImages(wxCommandEvent& event); + void OnToggleAlternateStates(wxCommandEvent& event); void OnSetImageSize(wxCommandEvent& event); void OnCollapseAndReset(wxCommandEvent& event); @@ -206,6 +231,7 @@ public: void OnClearBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(false); } void OnEnsureVisible(wxCommandEvent& event); + void OnSetFocus(wxCommandEvent& event); void OnCount(wxCommandEvent& event); void OnCountRec(wxCommandEvent& event); @@ -224,6 +250,7 @@ public: void OnDecSpacing(wxCommandEvent& event); void OnToggleIcon(wxCommandEvent& event); + void OnToggleState(wxCommandEvent& event); void OnShowFirstVisible(wxCommandEvent& WXUNUSED(event)) { DoShowFirstOrLast(&wxTreeCtrl::GetFirstVisibleItem, "first visible"); } @@ -233,9 +260,19 @@ public: #endif // wxHAS_LAST_VISIBLE void OnShowNextVisible(wxCommandEvent& WXUNUSED(event)) - { DoShowNextOrPrev(&wxTreeCtrl::GetNextVisible, "next visible"); } + { DoShowRelativeItem(&wxTreeCtrl::GetNextVisible, "next visible"); } void OnShowPrevVisible(wxCommandEvent& WXUNUSED(event)) - { DoShowNextOrPrev(&wxTreeCtrl::GetPrevVisible, "previous visible"); } + { DoShowRelativeItem(&wxTreeCtrl::GetPrevVisible, "previous visible"); } + + void OnShowParent(wxCommandEvent& WXUNUSED(event)) + { DoShowRelativeItem(&wxTreeCtrl::GetItemParent, "parent"); } + void OnShowPrevSibling(wxCommandEvent& WXUNUSED(event)) + { DoShowRelativeItem(&wxTreeCtrl::GetPrevSibling, "previous sibling"); } + void OnShowNextSibling(wxCommandEvent& WXUNUSED(event)) + { DoShowRelativeItem(&wxTreeCtrl::GetNextSibling, "next sibling"); } + + void OnScrollTo(wxCommandEvent& event); + void OnSelectLast(wxCommandEvent& event); void OnIdle(wxIdleEvent& event); void OnSize(wxSizeEvent& event); @@ -255,7 +292,7 @@ private: void DoShowFirstOrLast(TreeFunc0_t pfn, const wxString& label); typedef wxTreeItemId (wxTreeCtrl::*TreeFunc1_t)(const wxTreeItemId&) const; - void DoShowNextOrPrev(TreeFunc1_t pfn, const wxString& label); + void DoShowRelativeItem(TreeFunc1_t pfn, const wxString& label); wxPanel *m_panel; @@ -301,12 +338,15 @@ enum TreeTest_DeleteAll, TreeTest_Recreate, TreeTest_ToggleImages, + TreeTest_ToggleStates, TreeTest_ToggleAlternateImages, + TreeTest_ToggleAlternateStates, TreeTest_ToggleButtons, TreeTest_SetImageSize, TreeTest_ToggleSel, TreeTest_CollapseAndReset, TreeTest_EnsureVisible, + TreeTest_SetFocus, TreeTest_AddItem, TreeTest_InsertItem, TreeTest_IncIndent, @@ -314,12 +354,21 @@ enum TreeTest_IncSpacing, TreeTest_DecSpacing, TreeTest_ToggleIcon, + TreeTest_ToggleState, TreeTest_Select, TreeTest_Unselect, TreeTest_SelectRoot, + TreeTest_ClearFocused, + TreeTest_SetFocusedRoot, + TreeTest_SelectChildren, TreeTest_ShowFirstVisible, TreeTest_ShowLastVisible, TreeTest_ShowNextVisible, TreeTest_ShowPrevVisible, + TreeTest_ShowParent, + TreeTest_ShowPrevSibling, + TreeTest_ShowNextSibling, + TreeTest_ScrollTo, + TreeTest_SelectLast, TreeTest_Ctrl = 1000 };