class MyApp : public wxApp
{
public:
+ MyApp() { m_showImages = TRUE; }
+
bool OnInit();
+
+ void SetShowImages(bool show) { m_showImages = show; }
+ bool ShowImages() const { return m_showImages; }
+
+private:
+ bool m_showImages;
};
class MyTreeItemData : public wxTreeItemData
enum
{
TreeCtrlIcon_File,
- TreeCtrlIcon_Folder
+ TreeCtrlIcon_FileSelected,
+ TreeCtrlIcon_Folder,
+ TreeCtrlIcon_FolderSelected,
+ TreeCtrlIcon_FolderOpened
};
MyTreeCtrl() { }
void OnBeginDrag(wxTreeEvent& event);
void OnBeginRDrag(wxTreeEvent& event);
+ void OnEndDrag(wxTreeEvent& event);
void OnBeginLabelEdit(wxTreeEvent& event);
void OnEndLabelEdit(wxTreeEvent& event);
void OnDeleteItem(wxTreeEvent& event);
void GetItemsRecursively(const wxTreeItemId& idParent, long cookie);
+ void CreateImageList(int size = 32);
+
void AddTestItemsToTree(size_t numChildren, size_t depth);
void DoSortChildren(const wxTreeItemId& item, bool reverse = FALSE)
- { m_reverseSort = reverse; wxTreeCtrl::SortChildren(item); }
+ { m_reverseSort = reverse; wxTreeCtrl::SortChildren(item); }
void DoEnsureVisible() { EnsureVisible(m_lastItem); }
+ void DoToggleIcon(const wxTreeItemId& item);
+
protected:
virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
+ // is this the test item which we use in several event handlers?
+ bool IsTestItem(const wxTreeItemId& item)
+ {
+ // the test item is the first child folder
+ return GetParent(item) == GetRootItem() && !GetPrevSibling(item);
+ }
+
private:
void AddItemsRecursively(const wxTreeItemId& idParent,
size_t nChildren,
size_t folder);
wxImageList *m_imageListNormal;
- bool m_reverseSort; // flag for OnCompareItems
- wxTreeItemId m_lastItem; // for OnEnsureVisible()
+ bool m_reverseSort; // flag for OnCompareItems
+ wxTreeItemId m_lastItem, // for OnEnsureVisible()
+ m_draggedItem; // item being dragged right now
// NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
// if you want your overloaded OnCompareItems() to be called.
void OnAbout(wxCommandEvent& event);
void OnDump(wxCommandEvent& event);
+#ifndef NO_MULTIPLE_SELECTION
+ void OnDumpSelected(wxCommandEvent& event);
+ void OnSelect(wxCommandEvent& event);
+ void OnUnselect(wxCommandEvent& event);
+ void OnToggleSel(wxCommandEvent& event);
+#endif // NO_MULTIPLE_SELECTION
void OnDelete(wxCommandEvent& event);
void OnDeleteChildren(wxCommandEvent& event);
void OnDeleteAll(wxCommandEvent& event);
+
void OnRecreate(wxCommandEvent& event);
+ void OnToggleImages(wxCommandEvent& event);
+ void OnSetImageSize(wxCommandEvent& event);
void OnCollapseAndReset(wxCommandEvent& event);
void OnSetBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(TRUE); }
void OnEnsureVisible(wxCommandEvent& event);
+ void OnCount(wxCommandEvent& event);
+ void OnCountRec(wxCommandEvent& event);
+
void OnRename(wxCommandEvent& event);
void OnSort(wxCommandEvent& event) { DoSort(); }
void OnSortRev(wxCommandEvent& event) { DoSort(TRUE); }
void OnAddItem(wxCommandEvent& event);
+ void OnInsertItem(wxCommandEvent& event);
+
+ void OnIncIndent(wxCommandEvent& event);
+ void OnDecIndent(wxCommandEvent& event);
+
+ void OnIncSpacing(wxCommandEvent& event);
+ void OnDecSpacing(wxCommandEvent& event);
+
+ void OnToggleIcon(wxCommandEvent& event);
+
+ void OnSize(wxSizeEvent& event);
private:
void DoSort(bool reverse = FALSE);
+ void Resize(const wxSize& size);
+
MyTreeCtrl *m_treeCtrl;
+ wxTextCtrl *m_textCtrl;
void DoSetBold(bool bold = TRUE);
TreeTest_Quit,
TreeTest_About,
TreeTest_Dump,
+ TreeTest_DumpSelected,
+ TreeTest_Count,
+ TreeTest_CountRec,
TreeTest_Sort,
TreeTest_SortRev,
TreeTest_Bold,
TreeTest_DeleteChildren,
TreeTest_DeleteAll,
TreeTest_Recreate,
+ TreeTest_ToggleImages,
+ TreeTest_SetImageSize,
+ TreeTest_ToggleSel,
TreeTest_CollapseAndReset,
TreeTest_EnsureVisible,
TreeTest_AddItem,
- TreeTest_Ctrl = 100
+ TreeTest_InsertItem,
+ TreeTest_IncIndent,
+ TreeTest_DecIndent,
+ TreeTest_IncSpacing,
+ TreeTest_DecSpacing,
+ TreeTest_ToggleIcon,
+ TreeTest_Select,
+ TreeTest_Unselect,
+ TreeTest_Ctrl = 1000
};