X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2899e2232750915f4ff37c0ac178fce1b5858fe0..794bcc2dea743ac907b839f54e451847c9ea4b72:/include/wx/msw/treectrl.h diff --git a/include/wx/msw/treectrl.h b/include/wx/msw/treectrl.h index 313018797d..f27f7bea4b 100644 --- a/include/wx/msw/treectrl.h +++ b/include/wx/msw/treectrl.h @@ -34,6 +34,7 @@ typedef long wxDataType; // fwd decl class WXDLLEXPORT wxImageList; +class WXDLLEXPORT wxDragImage; struct WXDLLEXPORT wxTreeViewItem; // a callback function used for sorting tree items, it should return -1 if the @@ -41,39 +42,6 @@ struct WXDLLEXPORT wxTreeViewItem; // they're equivalent class wxTreeItemData; -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine -// where exactly the specified point is situated: - // above the client area. -static const int wxTREE_HITTEST_ABOVE = 0x0001; - // below the client area. -static const int wxTREE_HITTEST_BELOW = 0x0002; - // in the client area but below the last item. -static const int wxTREE_HITTEST_NOWHERE = 0x0004; - // on the button associated with an item. -static const int wxTREE_HITTEST_ONITEMBUTTON = 0x0010; - // on the bitmap associated with an item. -static const int wxTREE_HITTEST_ONITEMICON = 0x0020; - // in the indentation associated with an item. -static const int wxTREE_HITTEST_ONITEMINDENT = 0x0040; - // on the label (string) associated with an item. -static const int wxTREE_HITTEST_ONITEMLABEL = 0x0080; - // in the area to the right of an item. -static const int wxTREE_HITTEST_ONITEMRIGHT = 0x0100; - // on the state icon for a tree view item that is in a user-defined state. -static const int wxTREE_HITTEST_ONITEMSTATEICON = 0x0200; - // to the right of the client area. -static const int wxTREE_HITTEST_TOLEFT = 0x0400; - // to the left of the client area. -static const int wxTREE_HITTEST_TORIGHT = 0x0800; - // anywhere on the item -static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON | - wxTREE_HITTEST_ONITEMLABEL | - wxTREE_HITTEST_ONITEMSTATEICON; - // NB: all the following flags are for compatbility only and will be removed in the // next versions @@ -122,7 +90,7 @@ protected: long m_itemId; }; -WX_DEFINE_ARRAY(wxTreeItemId, wxArrayTreeItemIds); +WX_DEFINE_EXPORTED_ARRAY(WXHTREEITEM, wxArrayTreeItemIds); // ---------------------------------------------------------------------------- // wxTreeItemData is some (arbitrary) user class associated with some item. The @@ -149,11 +117,7 @@ public: // accessors: set/get the item associated with this node void SetId(const wxTreeItemId& id) { m_itemId = id; } -#ifdef __WATCOMC__ - const wxTreeItemId GetId() const { return m_itemId; } -#else - const wxTreeItemId& GetId() const { return (wxTreeItemId&) m_itemId; } -#endif + const wxTreeItemId GetId() const { return *this; } }; // ---------------------------------------------------------------------------- @@ -197,10 +161,10 @@ public: unsigned int GetIndent() const; void SetIndent(unsigned int indent); - // spacing is the number of pixels between the start and the Text - // not implemented under wxMSW + // spacing is the number of pixels between the start and the Text + // not implemented under wxMSW unsigned int GetSpacing() const { return 18; } // return wxGTK default - void SetSpacing(unsigned int ) {} + void SetSpacing(unsigned int WXUNUSED(spacing)) { } // image list: these functions allow to associate an image list with // the control and retrieve it. Note that the control does _not_ delete @@ -228,10 +192,9 @@ public: // retrieve items label wxString GetItemText(const wxTreeItemId& item) const; - // get the normal item image - int GetItemImage(const wxTreeItemId& item) const; - // get the selected item image - int GetItemSelectedImage(const wxTreeItemId& item) const; + // get one of the images associated with the item (normal by default) + int GetItemImage(const wxTreeItemId& item, + wxTreeItemIcon which = wxTreeItemIcon_Normal) const; // get the data associated with the item wxTreeItemData *GetItemData(const wxTreeItemId& item) const; @@ -240,10 +203,9 @@ public: // set items label void SetItemText(const wxTreeItemId& item, const wxString& text); - // set the normal item image - void SetItemImage(const wxTreeItemId& item, int image); - // set the selected item image - void SetItemSelectedImage(const wxTreeItemId& item, int image); + // get one of the images associated with the item (normal by default) + void SetItemImage(const wxTreeItemId& item, int image, + wxTreeItemIcon which = wxTreeItemIcon_Normal); // associate some data with the item void SetItemData(const wxTreeItemId& item, wxTreeItemData *data); @@ -259,6 +221,15 @@ public: // the item will be shown with a drop highlight void SetItemDropHighlight(const wxTreeItemId& item, bool highlight = TRUE); + // set the items text colour + void SetItemTextColour(const wxTreeItemId& item, const wxColour& col); + + // set the items background colour + void SetItemBackgroundColour(const wxTreeItemId& item, const wxColour& col); + + // set the items font (should be of the same height for all items) + void SetItemFont(const wxTreeItemId& item, const wxFont& font); + // item status inquiries // --------------------- @@ -349,6 +320,13 @@ public: int image = -1, int selectedImage = -1, wxTreeItemData *data = NULL); + // insert a new item before the one with the given index + wxTreeItemId InsertItem(const wxTreeItemId& parent, + size_t index, + const wxString& text, + int image = -1, int selectedImage = -1, + wxTreeItemData *data = NULL); + // insert a new item in as the last child of the parent wxTreeItemId AppendItem(const wxTreeItemId& parent, const wxString& text, @@ -452,11 +430,24 @@ public: void SetImageList(wxImageList *imageList, int) { SetImageList(imageList); } + // use Set/GetItemImage directly + // get the selected item image + int GetItemSelectedImage(const wxTreeItemId& item) const + { return GetItemImage(item, wxTreeItemIcon_Selected); } + // set the selected item image + void SetItemSelectedImage(const wxTreeItemId& item, int image) + { SetItemImage(item, image, wxTreeItemIcon_Selected); } + // implementation // -------------- + virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); virtual bool MSWCommand(WXUINT param, WXWORD id); virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); + // override some base class virtuals + virtual bool SetBackgroundColour(const wxColour &colour); + virtual bool SetForegroundColour(const wxColour &colour); + // get/set the check state for the item (only for wxTR_MULTIPLE) bool IsItemChecked(const wxTreeItemId& item) const; void SetItemCheck(const wxTreeItemId& item, bool check = TRUE); @@ -465,7 +456,7 @@ protected: // SetImageList helper void SetAnyImageList(wxImageList *imageList, int which); - wxTextCtrl* m_textCtrl; // used while editing the item label + wxTextCtrl *m_textCtrl; // used while editing the item label wxImageList *m_imageListNormal, // images for tree elements *m_imageListState; // special images for app defined states @@ -485,10 +476,33 @@ private: int image, int selectedImage, wxTreeItemData *data); + int DoGetItemImageFromData(const wxTreeItemId& item, + wxTreeItemIcon which) const; + void DoSetItemImageFromData(const wxTreeItemId& item, + int image, + wxTreeItemIcon which) const; void DoSetItemImages(const wxTreeItemId& item, int image, int imageSel); void DeleteTextCtrl(); + // support for additional item images + friend class wxTreeItemIndirectData; + void SetIndirectItemData(const wxTreeItemId& item, + wxTreeItemIndirectData *data); + bool HasIndirectData(const wxTreeItemId& item) const; + + // the array storing all item ids which have indirect data + wxArrayTreeItemIds m_itemsWithIndirectData; + + // the hash storing the items attributes (indexed by items ids) + wxHashTable m_attrs; + + // TRUE if the hash above is not empty + bool m_hasAnyAttr; + + // used for dragging + wxDragImage *m_dragImage; + DECLARE_DYNAMIC_CLASS(wxTreeCtrl) };