]> git.saurik.com Git - wxWidgets.git/blame_incremental - samples/treectrl/treectrl.h
changed Mac Mouse Moved Hysteresis (area in which mouse movements do NOT generate...
[wxWidgets.git] / samples / treectrl / treectrl.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: treectrl.h
3// Purpose: wxTreeCtrl sample
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart and Markus Holzem
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12#define USE_GENERIC_TREECTRL 0
13
14#if USE_GENERIC_TREECTRL
15#include "wx/generic/treectlg.h"
16#ifndef wxTreeCtrl
17#define wxTreeCtrl wxGenericTreeCtrl
18#define sm_classwxTreeCtrl sm_classwxGenericTreeCtrl
19#endif
20#endif
21
22// Define a new application type
23class MyApp : public wxApp
24{
25public:
26 MyApp() { m_showImages = TRUE; }
27
28 bool OnInit();
29
30 void SetShowImages(bool show) { m_showImages = show; }
31 bool ShowImages() const { return m_showImages; }
32
33private:
34 bool m_showImages;
35};
36
37class MyTreeItemData : public wxTreeItemData
38{
39public:
40 MyTreeItemData(const wxString& desc) : m_desc(desc) { }
41
42 void ShowInfo(wxTreeCtrl *tree);
43 const char *GetDesc() const { return m_desc.c_str(); }
44
45private:
46 wxString m_desc;
47};
48
49class MyTreeCtrl : public wxTreeCtrl
50{
51public:
52 enum
53 {
54 TreeCtrlIcon_File,
55 TreeCtrlIcon_FileSelected,
56 TreeCtrlIcon_Folder,
57 TreeCtrlIcon_FolderSelected,
58 TreeCtrlIcon_FolderOpened
59 };
60
61 MyTreeCtrl() { }
62 MyTreeCtrl(wxWindow *parent, const wxWindowID id,
63 const wxPoint& pos, const wxSize& size,
64 long style);
65 virtual ~MyTreeCtrl();
66
67 void OnBeginDrag(wxTreeEvent& event);
68 void OnBeginRDrag(wxTreeEvent& event);
69 void OnEndDrag(wxTreeEvent& event);
70 void OnBeginLabelEdit(wxTreeEvent& event);
71 void OnEndLabelEdit(wxTreeEvent& event);
72 void OnDeleteItem(wxTreeEvent& event);
73 void OnGetInfo(wxTreeEvent& event);
74 void OnSetInfo(wxTreeEvent& event);
75 void OnItemExpanded(wxTreeEvent& event);
76 void OnItemExpanding(wxTreeEvent& event);
77 void OnItemCollapsed(wxTreeEvent& event);
78 void OnItemCollapsing(wxTreeEvent& event);
79 void OnSelChanged(wxTreeEvent& event);
80 void OnSelChanging(wxTreeEvent& event);
81 void OnTreeKeyDown(wxTreeEvent& event);
82 void OnItemActivated(wxTreeEvent& event);
83 void OnRMouseDClick(wxMouseEvent& event);
84
85 void GetItemsRecursively(const wxTreeItemId& idParent, long cookie);
86
87 void CreateImageList(int size = 16);
88
89 void AddTestItemsToTree(size_t numChildren, size_t depth);
90
91 void DoSortChildren(const wxTreeItemId& item, bool reverse = FALSE)
92 { m_reverseSort = reverse; wxTreeCtrl::SortChildren(item); }
93 void DoEnsureVisible() { EnsureVisible(m_lastItem); }
94
95 void DoToggleIcon(const wxTreeItemId& item);
96
97protected:
98 virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
99
100 // is this the test item which we use in several event handlers?
101 bool IsTestItem(const wxTreeItemId& item)
102 {
103 // the test item is the first child folder
104 return GetParent(item) == GetRootItem() && !GetPrevSibling(item);
105 }
106
107private:
108 void AddItemsRecursively(const wxTreeItemId& idParent,
109 size_t nChildren,
110 size_t depth,
111 size_t folder);
112
113 wxImageList *m_imageListNormal;
114 bool m_reverseSort; // flag for OnCompareItems
115 wxTreeItemId m_lastItem, // for OnEnsureVisible()
116 m_draggedItem; // item being dragged right now
117
118 // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
119 // if you want your overloaded OnCompareItems() to be called.
120 // OTOH, if you don't want it you may omit the next line - this will
121 // make default (alphabetical) sorting much faster under wxMSW.
122 DECLARE_DYNAMIC_CLASS(MyTreeCtrl)
123 DECLARE_EVENT_TABLE()
124};
125
126// Define a new frame type
127class MyFrame: public wxFrame
128{
129public:
130 // ctor and dtor
131 MyFrame(const wxString& title, int x, int y, int w, int h);
132 virtual ~MyFrame();
133
134 // menu callbacks
135 void OnQuit(wxCommandEvent& event);
136 void OnAbout(wxCommandEvent& event);
137
138 void OnDump(wxCommandEvent& event);
139#ifndef NO_MULTIPLE_SELECTION
140 void OnDumpSelected(wxCommandEvent& event);
141 void OnSelect(wxCommandEvent& event);
142 void OnUnselect(wxCommandEvent& event);
143 void OnToggleSel(wxCommandEvent& event);
144#endif // NO_MULTIPLE_SELECTION
145 void OnDelete(wxCommandEvent& event);
146 void OnDeleteChildren(wxCommandEvent& event);
147 void OnDeleteAll(wxCommandEvent& event);
148
149 void OnRecreate(wxCommandEvent& event);
150 void OnToggleImages(wxCommandEvent& event);
151 void OnSetImageSize(wxCommandEvent& event);
152 void OnCollapseAndReset(wxCommandEvent& event);
153
154 void OnSetBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(TRUE); }
155 void OnClearBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(FALSE); }
156
157 void OnEnsureVisible(wxCommandEvent& event);
158
159 void OnCount(wxCommandEvent& event);
160 void OnCountRec(wxCommandEvent& event);
161
162 void OnRename(wxCommandEvent& event);
163 void OnSort(wxCommandEvent& event) { DoSort(); }
164 void OnSortRev(wxCommandEvent& event) { DoSort(TRUE); }
165
166 void OnAddItem(wxCommandEvent& event);
167 void OnInsertItem(wxCommandEvent& event);
168
169 void OnIncIndent(wxCommandEvent& event);
170 void OnDecIndent(wxCommandEvent& event);
171
172 void OnIncSpacing(wxCommandEvent& event);
173 void OnDecSpacing(wxCommandEvent& event);
174
175 void OnToggleIcon(wxCommandEvent& event);
176
177 void OnSize(wxSizeEvent& event);
178
179private:
180 void DoSort(bool reverse = FALSE);
181
182 void Resize(const wxSize& size);
183
184 MyTreeCtrl *m_treeCtrl;
185 wxTextCtrl *m_textCtrl;
186
187 void DoSetBold(bool bold = TRUE);
188
189 DECLARE_EVENT_TABLE()
190};
191
192// menu and control ids
193enum
194{
195 TreeTest_Quit,
196 TreeTest_About,
197 TreeTest_Dump,
198 TreeTest_DumpSelected,
199 TreeTest_Count,
200 TreeTest_CountRec,
201 TreeTest_Sort,
202 TreeTest_SortRev,
203 TreeTest_Bold,
204 TreeTest_UnBold,
205 TreeTest_Rename,
206 TreeTest_Delete,
207 TreeTest_DeleteChildren,
208 TreeTest_DeleteAll,
209 TreeTest_Recreate,
210 TreeTest_ToggleImages,
211 TreeTest_SetImageSize,
212 TreeTest_ToggleSel,
213 TreeTest_CollapseAndReset,
214 TreeTest_EnsureVisible,
215 TreeTest_AddItem,
216 TreeTest_InsertItem,
217 TreeTest_IncIndent,
218 TreeTest_DecIndent,
219 TreeTest_IncSpacing,
220 TreeTest_DecSpacing,
221 TreeTest_ToggleIcon,
222 TreeTest_Select,
223 TreeTest_Unselect,
224 TreeTest_Ctrl = 1000
225};