FLImaging 6.8.12.1
GUITreeCtrl.h
1#pragma once
2
3#include <set>
4#include "DefinitionsGUI.h"
5#include "GUITreeCtrlBase.h"
6
7namespace FLImaging
8{
9 namespace GUI
10 {
11 class CGUIMenuItemBase;
12 class CGUIDialogAddSNAPNodeDisplay;
13 class CGUIPaneExampleSNAP;
14 class CGUIPaneMenu;
15 class CGUIPaneBase;
16
17 typedef struct sMatchResult
18 {
19 public:
20 sMatchResult(int32_t _i32Start, int32_t _i32End, int32_t _i32AliasIndex)
21 : i32Start(_i32Start), i32End(_i32End), i32AliasIndex(_i32AliasIndex){}
22
23 int32_t i32Start;
24 int32_t i32End;
25 int32_t i32AliasIndex;
26 }SMatchResult;
27
28 class FL_EXPORT CGUITreeCtrl : public CGUITreeCtrlBase
29 {
30 public:
31 CGUITreeCtrl() noexcept;
32 CGUITreeCtrl(const CGUITreeCtrl& rh);
33 virtual ~CGUITreeCtrl();
34
35 public:
36
44 virtual bool RecursiveExpand(HTREEITEM hItem, UINT nCode, bool bSaveToConfig = true) override;
45
53 virtual void GetVerticalRange(HTREEITEM hItemRangeStart, HTREEITEM hItemRangeEnd, std::set<HTREEITEM>& setOut);
54
59 virtual void ClearMultiselectItems();
60
68 virtual HTREEITEM FindHandle(void* pData, HTREEITEM hParent = 0);
69
77 virtual HTREEITEM FindHandle(const Base::CFLString<wchar_t>& strPath, HTREEITEM hParent = 0);
78
85 virtual HTREEITEM FindHandleByFullPath(const Base::CFLString<wchar_t>& strFullPath);
86
96 virtual const CResult SortTreeItem(HTREEITEM hItem = NULL, ESortOrder eSortOrder = ESortOrder_Ascending);
97
106 virtual const CResult SetRootItemName(const Base::CFLString<wchar_t>& strRootItemName);
107
114 virtual const Base::CFLString<wchar_t>& GetRootItemName();
115
123 virtual const CResult EnableDragAndDropItem(bool bEnable);
124
130 virtual bool IsDragAndDropItemEnabled();
131
138 virtual const CResult SetDefaultImageList();
139
140 virtual bool SearchNext();
141 virtual bool SearchPrev();
142 virtual bool SearchFirst();
143 virtual bool SearchLast();
144
145 virtual void SetParentPane(CGUIPaneBase* pParentPane);
146 virtual CGUIPaneBase* GetParentPane() const;
147
148 virtual void SetParentPaneType(EPaneType eParentPaneType);
149 virtual EPaneType GetParentPaneType() const;
150
151 virtual void EnableAutoSaveExpandStatus(bool bEnable);
152 virtual bool IsAutoSaveExpandStatusEnabled() const;
153
154 virtual void SetFoundIndex(int32_t i32Idx);
155 virtual int32_t GetFoundIndex();
156 virtual int32_t GetFoundIndex(HTREEITEM hItem);
157 virtual int32_t GetFoundCount();
158 virtual HTREEITEM GetFoundItem(int32_t i32Index);
159
160 virtual void EnableItem(CGUIMenuItemBase* pMenuItem, bool bEnable);
161
162 virtual HTREEITEM MoveTreeItem(HTREEITEM hItem, HTREEITEM hItemTo, HTREEITEM hItemPos = TVI_LAST);
163
164 public:
165 DECLARE_MESSAGE_MAP()
166 virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
167 afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult);
168 afx_msg void OnNMClick(NMHDR* pNMHDR, LRESULT* pResult);
169 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
170 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
171 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
172 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
173 afx_msg HBRUSH CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/);
174 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
175 afx_msg void OnTvnItemexpanded(NMHDR* pNMHDR, LRESULT* pResult);
176 afx_msg void OnTvnSelchanging(NMHDR* pNMHDR, LRESULT* pResult);
177 afx_msg void OnTvnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);
178 afx_msg void OnTvnItemChanged(NMHDR* pNMHDR, LRESULT* pResult);
179 afx_msg void OnTvnItemChanging(NMHDR* pNMHDR, LRESULT* pResult);
180 afx_msg void OnTvnBegindrag(NMHDR* pNMHDR, LRESULT* pResult);
181 afx_msg void OnTvnBeginrdrag(NMHDR* pNMHDR, LRESULT* pResult);
182 afx_msg void OnTvnDeleteitem(NMHDR* pNMHDR, LRESULT* pResult);
183 afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
184
185 afx_msg LRESULT OnCancelAddNode(WPARAM wParam, LPARAM lParam);
186 afx_msg LRESULT OnUnselectItem(WPARAM wParam, LPARAM lParam);
187
188 virtual BOOL PreTranslateMessage(MSG* pMsg);
189
190 protected:
191 virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
192
193 protected:
194 CGUIMenuItemBase* GetSNAPNodePropertyMenu(HTREEITEM hItem);
195 virtual void InternalSortTreeItem(HTREEITEM hItem, ESortOrder eSortOrder, bool bAllowRoot = false);
196 static int CALLBACK CompareDesendingProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
197 static int CALLBACK CompareAscendingProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
198
199 protected:
200 Base::CFLString<wchar_t> m_strRootItemName;
201 int32_t m_i32FoundIdx;
202 std::vector<std::pair<HTREEITEM, std::vector<SMatchResult>>>& m_vctFound;
203 std::set<CGUIMenuItemBase*>& m_setMenuItemOnFavorite;
204 std::set<CGUIMenuItemBase*>& m_setMenuItemHided;
205 std::unordered_map<void*, HTREEITEM>& m_mapDataAndHTreeItem;
206 std::unordered_map<uint32_t, HTREEITEM>& m_mapFullPathHashAndHTreeItem;
207 HTREEITEM m_hItemVertStart;
208 std::set<HTREEITEM>& m_setMultiSelect;
209 CImageList m_imgListDefault;
210
211 bool m_bDragState;
212 bool m_bUnselectItem;
213 bool m_bEnableDragAndDropItem;
214 bool m_bEnableAutoSaveTreeItemExpandStatus;
215
216 HTREEITEM m_hItemUnselect;
217 HTREEITEM m_hItemLButtonDown;
218 EPaneType m_eParentPaneType;
219 TVITEMW m_itemDrag;
220
221 CGUIDialogAddSNAPNodeDisplay* m_pDlgAddNode;
222 CGUIPaneBase* m_pParentPane;
223
224 friend class CGUIManager;
225 friend class CGUIPaneMenu;
226 friend class CGUIPaneExampleSNAP;
227 friend class CGUITreeCtrlSearchUtils;
228 };
229 }
230}
Definition D2DObject.h:12