~registry/dolphin-emu/triforce

« back to all changes in this revision

Viewing changes to Externals/wxWidgets3/include/wx/generic/treectlg.h

  • Committer: Sérgio Benjamim
  • Date: 2015-02-13 05:54:40 UTC
  • Revision ID: sergio_br2@yahoo.com.br-20150213055440-ey2rt3sjpy27km78
Dolphin Triforce branch from code.google, commit b957980 (4.0-315).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/////////////////////////////////////////////////////////////////////////////
 
2
// Name:        wx/generic/treectlg.h
 
3
// Purpose:     wxTreeCtrl class
 
4
// Author:      Robert Roebling
 
5
// Modified by:
 
6
// Created:     01/02/97
 
7
// Copyright:   (c) 1997,1998 Robert Roebling
 
8
// Licence:     wxWindows licence
 
9
/////////////////////////////////////////////////////////////////////////////
 
10
 
 
11
#ifndef _GENERIC_TREECTRL_H_
 
12
#define _GENERIC_TREECTRL_H_
 
13
 
 
14
#if wxUSE_TREECTRL
 
15
 
 
16
#include "wx/scrolwin.h"
 
17
#include "wx/pen.h"
 
18
 
 
19
// -----------------------------------------------------------------------------
 
20
// forward declaration
 
21
// -----------------------------------------------------------------------------
 
22
 
 
23
class WXDLLIMPEXP_FWD_CORE wxGenericTreeItem;
 
24
 
 
25
class WXDLLIMPEXP_FWD_CORE wxTreeItemData;
 
26
 
 
27
class WXDLLIMPEXP_FWD_CORE wxTreeRenameTimer;
 
28
class WXDLLIMPEXP_FWD_CORE wxTreeFindTimer;
 
29
class WXDLLIMPEXP_FWD_CORE wxTreeTextCtrl;
 
30
class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
31
 
 
32
// -----------------------------------------------------------------------------
 
33
// wxGenericTreeCtrl - the tree control
 
34
// -----------------------------------------------------------------------------
 
35
 
 
36
class WXDLLIMPEXP_CORE wxGenericTreeCtrl : public wxTreeCtrlBase,
 
37
                                      public wxScrollHelper
 
38
{
 
39
public:
 
40
    // creation
 
41
    // --------
 
42
 
 
43
    wxGenericTreeCtrl() : wxTreeCtrlBase(), wxScrollHelper(this) { Init(); }
 
44
 
 
45
    wxGenericTreeCtrl(wxWindow *parent, wxWindowID id = wxID_ANY,
 
46
               const wxPoint& pos = wxDefaultPosition,
 
47
               const wxSize& size = wxDefaultSize,
 
48
               long style = wxTR_DEFAULT_STYLE,
 
49
               const wxValidator &validator = wxDefaultValidator,
 
50
               const wxString& name = wxTreeCtrlNameStr)
 
51
        : wxTreeCtrlBase(),
 
52
          wxScrollHelper(this)
 
53
    {
 
54
        Init();
 
55
        Create(parent, id, pos, size, style, validator, name);
 
56
    }
 
57
 
 
58
    virtual ~wxGenericTreeCtrl();
 
59
 
 
60
    bool Create(wxWindow *parent, wxWindowID id = wxID_ANY,
 
61
                const wxPoint& pos = wxDefaultPosition,
 
62
                const wxSize& size = wxDefaultSize,
 
63
                long style = wxTR_DEFAULT_STYLE,
 
64
                const wxValidator &validator = wxDefaultValidator,
 
65
                const wxString& name = wxTreeCtrlNameStr);
 
66
 
 
67
    // implement base class pure virtuals
 
68
    // ----------------------------------
 
69
 
 
70
    virtual unsigned int GetCount() const;
 
71
 
 
72
    virtual unsigned int GetIndent() const { return m_indent; }
 
73
    virtual void SetIndent(unsigned int indent);
 
74
 
 
75
 
 
76
    virtual void SetImageList(wxImageList *imageList);
 
77
    virtual void SetStateImageList(wxImageList *imageList);
 
78
 
 
79
    virtual wxString GetItemText(const wxTreeItemId& item) const;
 
80
    virtual int GetItemImage(const wxTreeItemId& item,
 
81
                     wxTreeItemIcon which = wxTreeItemIcon_Normal) const;
 
82
    virtual wxTreeItemData *GetItemData(const wxTreeItemId& item) const;
 
83
    virtual wxColour GetItemTextColour(const wxTreeItemId& item) const;
 
84
    virtual wxColour GetItemBackgroundColour(const wxTreeItemId& item) const;
 
85
    virtual wxFont GetItemFont(const wxTreeItemId& item) const;
 
86
 
 
87
    virtual void SetItemText(const wxTreeItemId& item, const wxString& text);
 
88
    virtual void SetItemImage(const wxTreeItemId& item,
 
89
                              int image,
 
90
                              wxTreeItemIcon which = wxTreeItemIcon_Normal);
 
91
    virtual void SetItemData(const wxTreeItemId& item, wxTreeItemData *data);
 
92
 
 
93
    virtual void SetItemHasChildren(const wxTreeItemId& item, bool has = true);
 
94
    virtual void SetItemBold(const wxTreeItemId& item, bool bold = true);
 
95
    virtual void SetItemDropHighlight(const wxTreeItemId& item, bool highlight = true);
 
96
    virtual void SetItemTextColour(const wxTreeItemId& item, const wxColour& col);
 
97
    virtual void SetItemBackgroundColour(const wxTreeItemId& item, const wxColour& col);
 
98
    virtual void SetItemFont(const wxTreeItemId& item, const wxFont& font);
 
99
 
 
100
    virtual bool IsVisible(const wxTreeItemId& item) const;
 
101
    virtual bool ItemHasChildren(const wxTreeItemId& item) const;
 
102
    virtual bool IsExpanded(const wxTreeItemId& item) const;
 
103
    virtual bool IsSelected(const wxTreeItemId& item) const;
 
104
    virtual bool IsBold(const wxTreeItemId& item) const;
 
105
 
 
106
    virtual size_t GetChildrenCount(const wxTreeItemId& item,
 
107
                                    bool recursively = true) const;
 
108
 
 
109
    // navigation
 
110
    // ----------
 
111
 
 
112
    virtual wxTreeItemId GetRootItem() const { return m_anchor; }
 
113
    virtual wxTreeItemId GetSelection() const
 
114
    {
 
115
        wxASSERT_MSG( !HasFlag(wxTR_MULTIPLE),
 
116
                       wxT("must use GetSelections() with this control") );
 
117
 
 
118
        return m_current;
 
119
    }
 
120
    virtual size_t GetSelections(wxArrayTreeItemIds&) const;
 
121
    virtual wxTreeItemId GetFocusedItem() const { return m_current; }
 
122
 
 
123
    virtual void ClearFocusedItem();
 
124
    virtual void SetFocusedItem(const wxTreeItemId& item);
 
125
 
 
126
    virtual wxTreeItemId GetItemParent(const wxTreeItemId& item) const;
 
127
    virtual wxTreeItemId GetFirstChild(const wxTreeItemId& item,
 
128
                                       wxTreeItemIdValue& cookie) const;
 
129
    virtual wxTreeItemId GetNextChild(const wxTreeItemId& item,
 
130
                                      wxTreeItemIdValue& cookie) const;
 
131
    virtual wxTreeItemId GetLastChild(const wxTreeItemId& item) const;
 
132
    virtual wxTreeItemId GetNextSibling(const wxTreeItemId& item) const;
 
133
    virtual wxTreeItemId GetPrevSibling(const wxTreeItemId& item) const;
 
134
 
 
135
    virtual wxTreeItemId GetFirstVisibleItem() const;
 
136
    virtual wxTreeItemId GetNextVisible(const wxTreeItemId& item) const;
 
137
    virtual wxTreeItemId GetPrevVisible(const wxTreeItemId& item) const;
 
138
 
 
139
 
 
140
    // operations
 
141
    // ----------
 
142
 
 
143
    virtual wxTreeItemId AddRoot(const wxString& text,
 
144
                         int image = -1, int selectedImage = -1,
 
145
                         wxTreeItemData *data = NULL);
 
146
 
 
147
    virtual void Delete(const wxTreeItemId& item);
 
148
    virtual void DeleteChildren(const wxTreeItemId& item);
 
149
    virtual void DeleteAllItems();
 
150
 
 
151
    virtual void Expand(const wxTreeItemId& item);
 
152
    virtual void Collapse(const wxTreeItemId& item);
 
153
    virtual void CollapseAndReset(const wxTreeItemId& item);
 
154
    virtual void Toggle(const wxTreeItemId& item);
 
155
 
 
156
    virtual void Unselect();
 
157
    virtual void UnselectAll();
 
158
    virtual void SelectItem(const wxTreeItemId& item, bool select = true);
 
159
    virtual void SelectChildren(const wxTreeItemId& parent);
 
160
 
 
161
    virtual void EnsureVisible(const wxTreeItemId& item);
 
162
    virtual void ScrollTo(const wxTreeItemId& item);
 
163
 
 
164
    virtual wxTextCtrl *EditLabel(const wxTreeItemId& item,
 
165
                          wxClassInfo* textCtrlClass = wxCLASSINFO(wxTextCtrl));
 
166
    virtual wxTextCtrl *GetEditControl() const;
 
167
    virtual void EndEditLabel(const wxTreeItemId& item,
 
168
                              bool discardChanges = false);
 
169
 
 
170
    virtual void EnableBellOnNoMatch(bool on = true);
 
171
 
 
172
    virtual void SortChildren(const wxTreeItemId& item);
 
173
 
 
174
    // items geometry
 
175
    // --------------
 
176
 
 
177
    virtual bool GetBoundingRect(const wxTreeItemId& item,
 
178
                                 wxRect& rect,
 
179
                                 bool textOnly = false) const;
 
180
 
 
181
 
 
182
    // this version specific methods
 
183
    // -----------------------------
 
184
 
 
185
    wxImageList *GetButtonsImageList() const { return m_imageListButtons; }
 
186
    void SetButtonsImageList(wxImageList *imageList);
 
187
    void AssignButtonsImageList(wxImageList *imageList);
 
188
 
 
189
    void SetDropEffectAboveItem( bool above = false ) { m_dropEffectAboveItem = above; }
 
190
    bool GetDropEffectAboveItem() const { return m_dropEffectAboveItem; }
 
191
 
 
192
    wxTreeItemId GetNext(const wxTreeItemId& item) const;
 
193
 
 
194
#if WXWIN_COMPATIBILITY_2_6
 
195
    // use EditLabel() instead
 
196
    void Edit( const wxTreeItemId& item ) { EditLabel(item); }
 
197
#endif // WXWIN_COMPATIBILITY_2_6
 
198
 
 
199
    // implementation only from now on
 
200
 
 
201
    // overridden base class virtuals
 
202
    virtual bool SetBackgroundColour(const wxColour& colour);
 
203
    virtual bool SetForegroundColour(const wxColour& colour);
 
204
 
 
205
    virtual void Refresh(bool eraseBackground = true, const wxRect *rect = NULL);
 
206
 
 
207
    virtual bool SetFont( const wxFont &font );
 
208
    virtual void SetWindowStyle(const long styles);
 
209
 
 
210
    // callbacks
 
211
    void OnPaint( wxPaintEvent &event );
 
212
    void OnSetFocus( wxFocusEvent &event );
 
213
    void OnKillFocus( wxFocusEvent &event );
 
214
    void OnKeyDown( wxKeyEvent &event );
 
215
    void OnChar( wxKeyEvent &event );
 
216
    void OnMouse( wxMouseEvent &event );
 
217
    void OnGetToolTip( wxTreeEvent &event );
 
218
    void OnSize( wxSizeEvent &event );
 
219
    void OnInternalIdle( );
 
220
 
 
221
    virtual wxVisualAttributes GetDefaultAttributes() const
 
222
    {
 
223
        return GetClassDefaultAttributes(GetWindowVariant());
 
224
    }
 
225
 
 
226
    static wxVisualAttributes
 
227
    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
228
 
 
229
    // implementation helpers
 
230
    void AdjustMyScrollbars();
 
231
 
 
232
    WX_FORWARD_TO_SCROLL_HELPER()
 
233
 
 
234
protected:
 
235
    friend class wxGenericTreeItem;
 
236
    friend class wxTreeRenameTimer;
 
237
    friend class wxTreeFindTimer;
 
238
    friend class wxTreeTextCtrl;
 
239
 
 
240
    wxFont               m_normalFont;
 
241
    wxFont               m_boldFont;
 
242
 
 
243
    wxGenericTreeItem   *m_anchor;
 
244
    wxGenericTreeItem   *m_current,
 
245
                        *m_key_current,
 
246
                        // A hint to select a parent item after deleting a child
 
247
                        *m_select_me;
 
248
    unsigned short       m_indent;
 
249
    int                  m_lineHeight;
 
250
    wxPen                m_dottedPen;
 
251
    wxBrush             *m_hilightBrush,
 
252
                        *m_hilightUnfocusedBrush;
 
253
    bool                 m_hasFocus;
 
254
    bool                 m_dirty;
 
255
    bool                 m_ownsImageListButtons;
 
256
    bool                 m_isDragging; // true between BEGIN/END drag events
 
257
    bool                 m_lastOnSame;  // last click on the same item as prev
 
258
    wxImageList         *m_imageListButtons;
 
259
 
 
260
    int                  m_dragCount;
 
261
    wxPoint              m_dragStart;
 
262
    wxGenericTreeItem   *m_dropTarget;
 
263
    wxCursor             m_oldCursor;  // cursor is changed while dragging
 
264
    wxGenericTreeItem   *m_oldSelection;
 
265
    wxGenericTreeItem   *m_underMouse; // for visual effects
 
266
 
 
267
    enum { NoEffect, BorderEffect, AboveEffect, BelowEffect } m_dndEffect;
 
268
    wxGenericTreeItem   *m_dndEffectItem;
 
269
 
 
270
    wxTreeTextCtrl      *m_textCtrl;
 
271
 
 
272
 
 
273
    wxTimer             *m_renameTimer;
 
274
 
 
275
    // incremental search data
 
276
    wxString             m_findPrefix;
 
277
    wxTimer             *m_findTimer;
 
278
    // This flag is set to 0 if the bell is disabled, 1 if it is enabled and -1
 
279
    // if it is globally enabled but has been temporarily disabled because we
 
280
    // had already beeped for this particular search.
 
281
    int                  m_findBell;
 
282
 
 
283
    bool                 m_dropEffectAboveItem;
 
284
 
 
285
    // the common part of all ctors
 
286
    void Init();
 
287
 
 
288
    // overridden wxWindow methods
 
289
    virtual void DoThaw();
 
290
 
 
291
    // misc helpers
 
292
    void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted);
 
293
 
 
294
    void DrawBorder(const wxTreeItemId& item);
 
295
    void DrawLine(const wxTreeItemId& item, bool below);
 
296
    void DrawDropEffect(wxGenericTreeItem *item);
 
297
 
 
298
    void DoSelectItem(const wxTreeItemId& id,
 
299
                      bool unselect_others = true,
 
300
                      bool extended_select = false);
 
301
 
 
302
    virtual int DoGetItemState(const wxTreeItemId& item) const;
 
303
    virtual void DoSetItemState(const wxTreeItemId& item, int state);
 
304
 
 
305
    virtual wxTreeItemId DoInsertItem(const wxTreeItemId& parent,
 
306
                                      size_t previous,
 
307
                                      const wxString& text,
 
308
                                      int image,
 
309
                                      int selectedImage,
 
310
                                      wxTreeItemData *data);
 
311
    virtual wxTreeItemId DoInsertAfter(const wxTreeItemId& parent,
 
312
                                       const wxTreeItemId& idPrevious,
 
313
                                       const wxString& text,
 
314
                                       int image = -1, int selImage = -1,
 
315
                                       wxTreeItemData *data = NULL);
 
316
    virtual wxTreeItemId DoTreeHitTest(const wxPoint& point, int& flags) const;
 
317
 
 
318
    // called by wxTextTreeCtrl when it marks itself for deletion
 
319
    void ResetTextControl();
 
320
 
 
321
    // find the first item starting with the given prefix after the given item
 
322
    wxTreeItemId FindItem(const wxTreeItemId& id, const wxString& prefix) const;
 
323
 
 
324
    bool HasButtons() const { return HasFlag(wxTR_HAS_BUTTONS); }
 
325
 
 
326
    void CalculateLineHeight();
 
327
    int  GetLineHeight(wxGenericTreeItem *item) const;
 
328
    void PaintLevel( wxGenericTreeItem *item, wxDC& dc, int level, int &y );
 
329
    void PaintItem( wxGenericTreeItem *item, wxDC& dc);
 
330
 
 
331
    void CalculateLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y );
 
332
    void CalculatePositions();
 
333
 
 
334
    void RefreshSubtree( wxGenericTreeItem *item );
 
335
    void RefreshLine( wxGenericTreeItem *item );
 
336
 
 
337
    // redraw all selected items
 
338
    void RefreshSelected();
 
339
 
 
340
    // RefreshSelected() recursive helper
 
341
    void RefreshSelectedUnder(wxGenericTreeItem *item);
 
342
 
 
343
    void OnRenameTimer();
 
344
    bool OnRenameAccept(wxGenericTreeItem *item, const wxString& value);
 
345
    void OnRenameCancelled(wxGenericTreeItem *item);
 
346
 
 
347
    void FillArray(wxGenericTreeItem*, wxArrayTreeItemIds&) const;
 
348
    void SelectItemRange( wxGenericTreeItem *item1, wxGenericTreeItem *item2 );
 
349
    bool TagAllChildrenUntilLast(wxGenericTreeItem *crt_item, wxGenericTreeItem *last_item, bool select);
 
350
    bool TagNextChildren(wxGenericTreeItem *crt_item, wxGenericTreeItem *last_item, bool select);
 
351
    void UnselectAllChildren( wxGenericTreeItem *item );
 
352
    void ChildrenClosing(wxGenericTreeItem* item);
 
353
 
 
354
    void DoDirtyProcessing();
 
355
 
 
356
    virtual wxSize DoGetBestSize() const;
 
357
 
 
358
private:
 
359
    // Reset the state of the last find (i.e. keyboard incremental search)
 
360
    // operation.
 
361
    void ResetFindState();
 
362
 
 
363
    DECLARE_EVENT_TABLE()
 
364
    DECLARE_DYNAMIC_CLASS(wxGenericTreeCtrl)
 
365
    wxDECLARE_NO_COPY_CLASS(wxGenericTreeCtrl);
 
366
};
 
367
 
 
368
#if !defined(__WXMSW__) || defined(__WXUNIVERSAL__)
 
369
/*
 
370
 * wxTreeCtrl has to be a real class or we have problems with
 
371
 * the run-time information.
 
372
 */
 
373
 
 
374
class WXDLLIMPEXP_CORE wxTreeCtrl: public wxGenericTreeCtrl
 
375
{
 
376
    DECLARE_DYNAMIC_CLASS(wxTreeCtrl)
 
377
 
 
378
public:
 
379
    wxTreeCtrl() {}
 
380
 
 
381
    wxTreeCtrl(wxWindow *parent, wxWindowID id = wxID_ANY,
 
382
               const wxPoint& pos = wxDefaultPosition,
 
383
               const wxSize& size = wxDefaultSize,
 
384
               long style = wxTR_DEFAULT_STYLE,
 
385
               const wxValidator &validator = wxDefaultValidator,
 
386
               const wxString& name = wxTreeCtrlNameStr)
 
387
    : wxGenericTreeCtrl(parent, id, pos, size, style, validator, name)
 
388
    {
 
389
    }
 
390
};
 
391
#endif // !__WXMSW__ || __WXUNIVERSAL__
 
392
 
 
393
#endif // wxUSE_TREECTRL
 
394
 
 
395
#endif // _GENERIC_TREECTRL_H_