]> git.saurik.com Git - wxWidgets.git/blame - src/mac/carbon/treectrl.cpp
wxNativeEncoding::To/FromString now stores wxFontEncoding info as well (don't worry...
[wxWidgets.git] / src / mac / carbon / treectrl.cpp
CommitLineData
e9576ca5
SC
1/////////////////////////////////////////////////////////////////////////////
2// Name: treectrl.cpp
3// Purpose: wxTreeCtrl. See also Robert's generic wxTreeCtrl.
4// Author: AUTHOR
5// Modified by:
6// Created: ??/??/98
7// RCS-ID: $Id$
8// Copyright: (c) AUTHOR
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifdef __GNUG__
13#pragma implementation "treectrl.h"
14#endif
15
16#include "wx/stubs/textctrl.h"
17#include "wx/stubs/treectrl.h"
18
e9576ca5
SC
19IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl)
20IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject)
21
e9576ca5
SC
22
23wxTreeCtrl::wxTreeCtrl()
24{
25 m_imageListNormal = NULL;
26 m_imageListState = NULL;
27 m_textCtrl = NULL;
28}
29
30bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
31 long style, const wxValidator& validator, const wxString& name)
32{
33 SetName(name);
34 SetValidator(validator);
35
36 m_imageListNormal = NULL;
37 m_imageListState = NULL;
38 m_textCtrl = NULL;
39
40 m_windowStyle = style;
41
42 SetParent(parent);
43
44 m_windowId = (id == -1) ? NewControlId() : id;
45
46 if (parent) parent->AddChild(this);
47
48 // TODO create tree control
49
50 return FALSE;
51}
52
53wxTreeCtrl::~wxTreeCtrl()
54{
55 if (m_textCtrl)
56 {
57 delete m_textCtrl;
58 }
59}
60
61// Attributes
62int wxTreeCtrl::GetCount() const
63{
64 // TODO
65 return 0;
66}
67
68int wxTreeCtrl::GetIndent() const
69{
70 // TODO
71 return 0;
72}
73
74void wxTreeCtrl::SetIndent(int indent)
75{
76 // TODO
77}
78
79wxImageList *wxTreeCtrl::GetImageList(int which) const
80{
81 if ( which == wxIMAGE_LIST_NORMAL )
82 {
83 return m_imageListNormal;
84 }
85 else if ( which == wxIMAGE_LIST_STATE )
86 {
87 return m_imageListState;
88 }
89 return NULL;
90}
91
92void wxTreeCtrl::SetImageList(wxImageList *imageList, int which)
93{
94 if ( which == wxIMAGE_LIST_NORMAL )
95 {
96 m_imageListNormal = imageList;
97 }
98 else if ( which == wxIMAGE_LIST_STATE )
99 {
100 m_imageListState = imageList;
101 }
102 // TODO
103}
104
105long wxTreeCtrl::GetNextItem(long item, int code) const
106{
107 // TODO
108 return 0;
109}
110
111bool wxTreeCtrl::ItemHasChildren(long item) const
112{
113 // TODO
114 return FALSE;
115}
116
117long wxTreeCtrl::GetChild(long item) const
118{
119 // TODO
120 return 0;
121}
122
123long wxTreeCtrl::GetParent(long item) const
124{
125 // TODO
126 return 0;
127}
128
129long wxTreeCtrl::GetFirstVisibleItem() const
130{
131 // TODO
132 return 0;
133}
134
135long wxTreeCtrl::GetNextVisibleItem(long item) const
136{
137 // TODO
138 return 0;
139}
140
141long wxTreeCtrl::GetSelection() const
142{
143 // TODO
144 return 0;
145}
146
147long wxTreeCtrl::GetRootItem() const
148{
149 // TODO
150 return 0;
151}
152
153bool wxTreeCtrl::GetItem(wxTreeItem& info) const
154{
155 // TODO
156 return FALSE;
157}
158
159bool wxTreeCtrl::SetItem(wxTreeItem& info)
160{
161 // TODO
162 return FALSE;
163}
164
165int wxTreeCtrl::GetItemState(long item, long stateMask) const
166{
167 wxTreeItem info;
168
169 info.m_mask = wxTREE_MASK_STATE ;
170 info.m_stateMask = stateMask;
171 info.m_itemId = item;
172
173 if (!GetItem(info))
174 return 0;
175
176 return info.m_state;
177}
178
179bool wxTreeCtrl::SetItemState(long item, long state, long stateMask)
180{
181 wxTreeItem info;
182
183 info.m_mask = wxTREE_MASK_STATE ;
184 info.m_state = state;
185 info.m_stateMask = stateMask;
186 info.m_itemId = item;
187
188 return SetItem(info);
189}
190
191bool wxTreeCtrl::SetItemImage(long item, int image, int selImage)
192{
193 wxTreeItem info;
194
195 info.m_mask = wxTREE_MASK_IMAGE ;
196 info.m_image = image;
197 if ( selImage > -1)
198 {
199 info.m_selectedImage = selImage;
200 info.m_mask |= wxTREE_MASK_SELECTED_IMAGE;
201 }
202 info.m_itemId = item;
203
204 return SetItem(info);
205}
206
207wxString wxTreeCtrl::GetItemText(long item) const
208{
209 wxTreeItem info;
210
211 info.m_mask = wxTREE_MASK_TEXT ;
212 info.m_itemId = item;
213
214 if (!GetItem(info))
215 return wxString("");
216 return info.m_text;
217}
218
219void wxTreeCtrl::SetItemText(long item, const wxString& str)
220{
221 wxTreeItem info;
222
223 info.m_mask = wxTREE_MASK_TEXT ;
224 info.m_itemId = item;
225 info.m_text = str;
226
227 SetItem(info);
228}
229
230long wxTreeCtrl::GetItemData(long item) const
231{
232 wxTreeItem info;
233
234 info.m_mask = wxTREE_MASK_DATA ;
235 info.m_itemId = item;
236
237 if (!GetItem(info))
238 return 0;
239 return info.m_data;
240}
241
242bool wxTreeCtrl::SetItemData(long item, long data)
243{
244 wxTreeItem info;
245
246 info.m_mask = wxTREE_MASK_DATA ;
247 info.m_itemId = item;
248 info.m_data = data;
249
250 return SetItem(info);
251}
252
253bool wxTreeCtrl::GetItemRect(long item, wxRect& rect, bool textOnly) const
254{
255 // TODO
256 return FALSE;
257}
258
259wxTextCtrl* wxTreeCtrl::GetEditControl() const
260{
261 return m_textCtrl;
262}
263
264// Operations
265bool wxTreeCtrl::DeleteItem(long item)
266{
267 // TODO
268 return FALSE;
269}
270
271bool wxTreeCtrl::ExpandItem(long item, int action)
272{
273 // TODO
274 switch ( action )
275 {
276 case wxTREE_EXPAND_EXPAND:
277 break;
278
279 case wxTREE_EXPAND_COLLAPSE:
280 break;
281
282 case wxTREE_EXPAND_COLLAPSE_RESET:
283 break;
284
285 case wxTREE_EXPAND_TOGGLE:
286 break;
287
288 default:
289 wxFAIL_MSG("unknown action in wxTreeCtrl::ExpandItem");
290 }
291
292 bool bOk = FALSE; // TODO expand item
293
294 // May not send messages, so emulate them
295 if ( bOk ) {
296 wxTreeEvent event(wxEVT_NULL, m_windowId);
297 event.m_item.m_itemId = item;
298 event.m_item.m_mask =
299 event.m_item.m_stateMask = 0xffff; // get all
300 GetItem(event.m_item);
301
302 bool bIsExpanded = (event.m_item.m_state & wxTREE_STATE_EXPANDED) != 0;
303
304 event.m_code = action;
305 event.SetEventObject(this);
306
307 // @@@ return values of {EXPAND|COLLAPS}ING event handler is discarded
308 event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDING
309 : wxEVT_COMMAND_TREE_ITEM_COLLAPSING);
310 GetEventHandler()->ProcessEvent(event);
311
312 event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDED
313 : wxEVT_COMMAND_TREE_ITEM_COLLAPSED);
314 GetEventHandler()->ProcessEvent(event);
315 }
316
317 return bOk;
318}
319
320long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter)
321{
322 // TODO
323 return 0;
324}
325
326long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, int selImage,
327 long insertAfter)
328{
329 wxTreeItem info;
330 info.m_text = label;
331 info.m_mask = wxTREE_MASK_TEXT;
332 if ( image > -1 )
333 {
334 info.m_mask |= wxTREE_MASK_IMAGE | wxTREE_MASK_SELECTED_IMAGE;
335 info.m_image = image;
336 if ( selImage == -1 )
337 info.m_selectedImage = image;
338 else
339 info.m_selectedImage = selImage;
340 }
341
342 return InsertItem(parent, info, insertAfter);
343}
344
345bool wxTreeCtrl::SelectItem(long item)
346{
347 // TODO
348 return FALSE;
349}
350
351bool wxTreeCtrl::ScrollTo(long item)
352{
353 // TODO
354 return FALSE;
355}
356
357bool wxTreeCtrl::DeleteAllItems()
358{
359 // TODO
360 return FALSE;
361}
362
363wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass)
364{
365 // TODO
366 return NULL;
367}
368
369// End label editing, optionally cancelling the edit
370bool wxTreeCtrl::EndEditLabel(bool cancel)
371{
372 // TODO
373 return FALSE;
374}
375
376long wxTreeCtrl::HitTest(const wxPoint& point, int& flags)
377{
378 // TODO
379 return 0;
380}
381
382bool wxTreeCtrl::SortChildren(long item)
383{
384 // TODO
385 return FALSE;
386}
387
388bool wxTreeCtrl::EnsureVisible(long item)
389{
390 // TODO
391 return FALSE;
392}
393
394// Tree item structure
395wxTreeItem::wxTreeItem()
396{
397 m_mask = 0;
398 m_itemId = 0;
399 m_state = 0;
400 m_stateMask = 0;
401 m_image = -1;
402 m_selectedImage = -1;
403 m_children = 0;
404 m_data = 0;
405}
406
407// Tree event
408IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent)
409
410wxTreeEvent::wxTreeEvent(wxEventType commandType, int id):
411 wxCommandEvent(commandType, id)
412{
413 m_code = 0;
414 m_oldItem = 0;
415}
416