| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/msw/treectrl.h
 
- // Purpose:     wxTreeCtrl class
 
- // Author:      Julian Smart
 
- // Modified by: Vadim Zeitlin to be less MSW-specific on 10/10/98
 
- // Created:     01/02/97
 
- // Copyright:   (c) Julian Smart
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_MSW_TREECTRL_H_
 
- #define _WX_MSW_TREECTRL_H_
 
- // ----------------------------------------------------------------------------
 
- // headers
 
- // ----------------------------------------------------------------------------
 
- #if wxUSE_TREECTRL
 
- #include "wx/textctrl.h"
 
- #include "wx/dynarray.h"
 
- #include "wx/treebase.h"
 
- #include "wx/hashmap.h"
 
- #ifdef __GNUWIN32__
 
-     // Cygwin windows.h defines these identifiers
 
-     #undef GetFirstChild
 
-     #undef GetNextSibling
 
- #endif // Cygwin
 
- // fwd decl
 
- class  WXDLLIMPEXP_FWD_CORE wxImageList;
 
- class  WXDLLIMPEXP_FWD_CORE wxDragImage;
 
- struct WXDLLIMPEXP_FWD_CORE wxTreeViewItem;
 
- #if WXWIN_COMPATIBILITY_2_6
 
-     // NB: all the following flags are for compatbility only and will be removed in the
 
-     //     next versions
 
-     // flags for deprecated InsertItem() variant (their values are the same as of
 
-     // TVI_FIRST and TVI_LAST)
 
-     #define wxTREE_INSERT_FIRST 0xFFFF0001
 
-     #define wxTREE_INSERT_LAST  0xFFFF0002
 
- #endif
 
- // hash storing attributes for our items
 
- WX_DECLARE_EXPORTED_VOIDPTR_HASH_MAP(wxTreeItemAttr *, wxMapTreeAttr);
 
- // ----------------------------------------------------------------------------
 
- // wxTreeCtrl
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxTreeCtrl : public wxTreeCtrlBase
 
- {
 
- public:
 
-     // creation
 
-     // --------
 
-     wxTreeCtrl() { Init(); }
 
-     wxTreeCtrl(wxWindow *parent, wxWindowID id = wxID_ANY,
 
-                const wxPoint& pos = wxDefaultPosition,
 
-                const wxSize& size = wxDefaultSize,
 
-                long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
 
-                const wxValidator& validator = wxDefaultValidator,
 
-                const wxString& name = wxTreeCtrlNameStr)
 
-     {
 
-         Create(parent, id, pos, size, style, validator, name);
 
-     }
 
-     virtual ~wxTreeCtrl();
 
-     bool Create(wxWindow *parent, wxWindowID id = wxID_ANY,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
 
-                 const wxValidator& validator = wxDefaultValidator,
 
-                 const wxString& name = wxTreeCtrlNameStr);
 
-     // implement base class pure virtuals
 
-     // ----------------------------------
 
-     virtual unsigned int GetCount() const;
 
-     virtual unsigned int GetIndent() const;
 
-     virtual void SetIndent(unsigned int indent);
 
-     virtual void SetImageList(wxImageList *imageList);
 
-     virtual void SetStateImageList(wxImageList *imageList);
 
-     virtual wxString GetItemText(const wxTreeItemId& item) const;
 
-     virtual int GetItemImage(const wxTreeItemId& item,
 
-                         wxTreeItemIcon which = wxTreeItemIcon_Normal) const;
 
-     virtual wxTreeItemData *GetItemData(const wxTreeItemId& item) const;
 
-     virtual wxColour GetItemTextColour(const wxTreeItemId& item) const;
 
-     virtual wxColour GetItemBackgroundColour(const wxTreeItemId& item) const;
 
-     virtual wxFont GetItemFont(const wxTreeItemId& item) const;
 
-     virtual void SetItemText(const wxTreeItemId& item, const wxString& text);
 
-     virtual void SetItemImage(const wxTreeItemId& item, int image,
 
-                       wxTreeItemIcon which = wxTreeItemIcon_Normal);
 
-     virtual void SetItemData(const wxTreeItemId& item, wxTreeItemData *data);
 
-     virtual void SetItemHasChildren(const wxTreeItemId& item, bool has = true);
 
-     virtual void SetItemBold(const wxTreeItemId& item, bool bold = true);
 
-     virtual void SetItemDropHighlight(const wxTreeItemId& item,
 
-                                       bool highlight = true);
 
-     virtual void SetItemTextColour(const wxTreeItemId& item,
 
-                                    const wxColour& col);
 
-     virtual void SetItemBackgroundColour(const wxTreeItemId& item,
 
-                                          const wxColour& col);
 
-     virtual void SetItemFont(const wxTreeItemId& item, const wxFont& font);
 
-     // item status inquiries
 
-     // ---------------------
 
-     virtual bool IsVisible(const wxTreeItemId& item) const;
 
-     virtual bool ItemHasChildren(const wxTreeItemId& item) const;
 
-     virtual bool IsExpanded(const wxTreeItemId& item) const;
 
-     virtual bool IsSelected(const wxTreeItemId& item) const;
 
-     virtual bool IsBold(const wxTreeItemId& item) const;
 
-     virtual size_t GetChildrenCount(const wxTreeItemId& item,
 
-                                     bool recursively = true) const;
 
-     // navigation
 
-     // ----------
 
-     virtual wxTreeItemId GetRootItem() const;
 
-     virtual wxTreeItemId GetSelection() const;
 
-     virtual size_t GetSelections(wxArrayTreeItemIds& selections) const;
 
-     virtual wxTreeItemId GetFocusedItem() const;
 
-     virtual void ClearFocusedItem();
 
-     virtual void SetFocusedItem(const wxTreeItemId& item);
 
-     virtual wxTreeItemId GetItemParent(const wxTreeItemId& item) const;
 
-     virtual wxTreeItemId GetFirstChild(const wxTreeItemId& item,
 
-                                        wxTreeItemIdValue& cookie) const;
 
-     virtual wxTreeItemId GetNextChild(const wxTreeItemId& item,
 
-                                       wxTreeItemIdValue& cookie) const;
 
-     virtual wxTreeItemId GetLastChild(const wxTreeItemId& item) const;
 
-     virtual wxTreeItemId GetNextSibling(const wxTreeItemId& item) const;
 
-     virtual wxTreeItemId GetPrevSibling(const wxTreeItemId& item) const;
 
-     virtual wxTreeItemId GetFirstVisibleItem() const;
 
-     virtual wxTreeItemId GetNextVisible(const wxTreeItemId& item) const;
 
-     virtual wxTreeItemId GetPrevVisible(const wxTreeItemId& item) const;
 
-     // operations
 
-     // ----------
 
-     virtual wxTreeItemId AddRoot(const wxString& text,
 
-                          int image = -1, int selectedImage = -1,
 
-                          wxTreeItemData *data = NULL);
 
-     virtual void Delete(const wxTreeItemId& item);
 
-     virtual void DeleteChildren(const wxTreeItemId& item);
 
-     virtual void DeleteAllItems();
 
-     virtual void Expand(const wxTreeItemId& item);
 
-     virtual void Collapse(const wxTreeItemId& item);
 
-     virtual void CollapseAndReset(const wxTreeItemId& item);
 
-     virtual void Toggle(const wxTreeItemId& item);
 
-     virtual void Unselect();
 
-     virtual void UnselectAll();
 
-     virtual void SelectItem(const wxTreeItemId& item, bool select = true);
 
-     virtual void SelectChildren(const wxTreeItemId& parent);
 
-     virtual void EnsureVisible(const wxTreeItemId& item);
 
-     virtual void ScrollTo(const wxTreeItemId& item);
 
-     virtual wxTextCtrl *EditLabel(const wxTreeItemId& item,
 
-                           wxClassInfo* textCtrlClass = wxCLASSINFO(wxTextCtrl));
 
-     virtual wxTextCtrl *GetEditControl() const;
 
-     virtual void EndEditLabel(const wxTreeItemId& WXUNUSED(item),
 
-                               bool discardChanges = false)
 
-     {
 
-         DoEndEditLabel(discardChanges);
 
-     }
 
-     virtual void SortChildren(const wxTreeItemId& item);
 
-     virtual bool GetBoundingRect(const wxTreeItemId& item,
 
-                                  wxRect& rect,
 
-                                  bool textOnly = false) const;
 
-     // implementation
 
-     // --------------
 
-     virtual wxVisualAttributes GetDefaultAttributes() const
 
-     {
 
-         return GetClassDefaultAttributes(GetWindowVariant());
 
-     }
 
-     static wxVisualAttributes
 
-     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
-     virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
 
-     virtual WXLRESULT MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
 
-     virtual bool MSWCommand(WXUINT param, WXWORD id);
 
-     virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
 
-     virtual bool MSWShouldPreProcessMessage(WXMSG* msg);
 
-     // override some base class virtuals
 
-     virtual bool SetBackgroundColour(const wxColour &colour);
 
-     virtual bool SetForegroundColour(const wxColour &colour);
 
-     // returns true if the platform should explicitly apply a theme border
 
-     virtual bool CanApplyThemeBorder() const { return false; }
 
- protected:
 
-     // Implement "update locking" in a custom way for this control.
 
-     virtual void DoFreeze();
 
-     virtual void DoThaw();
 
-     virtual void DoSetSize(int x, int y,
 
-                            int width, int height,
 
-                            int sizeFlags = wxSIZE_AUTO);
 
-     // SetImageList helper
 
-     void SetAnyImageList(wxImageList *imageList, int which);
 
-     // refresh a single item
 
-     void RefreshItem(const wxTreeItemId& item);
 
-     // end edit label
 
-     void DoEndEditLabel(bool discardChanges = false);
 
-     virtual int DoGetItemState(const wxTreeItemId& item) const;
 
-     virtual void DoSetItemState(const wxTreeItemId& item, int state);
 
-     virtual wxTreeItemId DoInsertItem(const wxTreeItemId& parent,
 
-                                       size_t pos,
 
-                                       const wxString& text,
 
-                                       int image, int selectedImage,
 
-                                       wxTreeItemData *data);
 
-     virtual wxTreeItemId DoInsertAfter(const wxTreeItemId& parent,
 
-                                        const wxTreeItemId& idPrevious,
 
-                                        const wxString& text,
 
-                                        int image = -1, int selImage = -1,
 
-                                        wxTreeItemData *data = NULL);
 
-     virtual wxTreeItemId DoTreeHitTest(const wxPoint& point, int& flags) const;
 
-     // obtain the user data for the lParam member of TV_ITEM
 
-     class wxTreeItemParam *GetItemParam(const wxTreeItemId& item) const;
 
-     // update the event to include the items client data and pass it to
 
-     // HandleWindowEvent(), return true if it processed it
 
-     bool HandleTreeEvent(wxTreeEvent& event) const;
 
-     // pass the event to HandleTreeEvent() and return true if the event was
 
-     // either unprocessed or not vetoed
 
-     bool IsTreeEventAllowed(wxTreeEvent& event) const
 
-     {
 
-         return !HandleTreeEvent(event) || event.IsAllowed();
 
-     }
 
-     // generate a wxEVT_KEY_DOWN event from the specified WPARAM/LPARAM values
 
-     // having the same meaning as for WM_KEYDOWN, return true if it was
 
-     // processed
 
-     bool MSWHandleTreeKeyDownEvent(WXWPARAM wParam, WXLPARAM lParam);
 
-     // handle a key event in a multi-selection control, should be only called
 
-     // for keys which can be used to change the selection
 
-     //
 
-     // return true if the key was processed, false otherwise
 
-     bool MSWHandleSelectionKey(unsigned vkey);
 
-     // data used only while editing the item label:
 
-     wxTextCtrl  *m_textCtrl;        // text control in which it is edited
 
-     wxTreeItemId m_idEdited;        // the item being edited
 
- private:
 
-     // the common part of all ctors
 
-     void Init();
 
-     // helper functions
 
-     bool DoGetItem(wxTreeViewItem *tvItem) const;
 
-     void DoSetItem(wxTreeViewItem *tvItem);
 
-     void DoExpand(const wxTreeItemId& item, int flag);
 
-     void DoSelectItem(const wxTreeItemId& item, bool select = true);
 
-     void DoUnselectItem(const wxTreeItemId& item);
 
-     void DoToggleItemSelection(const wxTreeItemId& item);
 
-     void DoUnselectAll();
 
-     void DoSelectChildren(const wxTreeItemId& parent);
 
-     void DeleteTextCtrl();
 
-     // return true if the item is the hidden root one (i.e. it's the root item
 
-     // and the tree has wxTR_HIDE_ROOT style)
 
-     bool IsHiddenRoot(const wxTreeItemId& item) const;
 
-     // check if the given flags (taken from TV_HITTESTINFO structure)
 
-     // indicate a position "on item": this is less trivial than just checking
 
-     // for TVHT_ONITEM because we consider that points to the left and right of
 
-     // item text are also "on item" when wxTR_FULL_ROW_HIGHLIGHT is used as the
 
-     // item visually spans the entire breadth of the window then
 
-     bool MSWIsOnItem(unsigned flags) const;
 
-     // the hash storing the items attributes (indexed by item ids)
 
-     wxMapTreeAttr m_attrs;
 
-     // true if the hash above is not empty
 
-     bool m_hasAnyAttr;
 
- #if wxUSE_DRAGIMAGE
 
-     // used for dragging
 
-     wxDragImage *m_dragImage;
 
- #endif
 
-     // Virtual root item, if wxTR_HIDE_ROOT is set.
 
-     void* m_pVirtualRoot;
 
-     // the starting item for selection with Shift
 
-     wxTreeItemId m_htSelStart, m_htClickedItem;
 
-     wxPoint m_ptClick;
 
-     // whether dragging has started
 
-     bool m_dragStarted;
 
-     // whether focus was lost between subsequent clicks of a single item
 
-     bool m_focusLost;
 
-     // set when we are changing selection ourselves (only used in multi
 
-     // selection mode)
 
-     bool m_changingSelection;
 
-     // whether we need to trigger a state image click event
 
-     bool m_triggerStateImageClick;
 
-     // whether we need to deselect other items on mouse up
 
-     bool m_mouseUpDeselect;
 
-     // The size to restore the control to when it is thawed, see DoThaw().
 
-     wxSize m_thawnSize;
 
-     friend class wxTreeItemIndirectData;
 
-     friend class wxTreeSortHelper;
 
-     DECLARE_DYNAMIC_CLASS(wxTreeCtrl)
 
-     wxDECLARE_NO_COPY_CLASS(wxTreeCtrl);
 
- };
 
- #endif // wxUSE_TREECTRL
 
- #endif // _WX_MSW_TREECTRL_H_
 
 
  |