FLImaging 6.6.27.1
GUITreeCtrl.h
1#pragma once
2
3#include <set>
4#include "GUIDefinitions.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 bWriteFileSystem = 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 HTREEITEM m_hItemVertStart;
206 std::set<HTREEITEM>& m_setMultiSelect;
207 CImageList m_imgListDefault;
208
209 bool m_bDragState;
210 bool m_bUnselectItem;
211 bool m_bEnableDragAndDropItem;
212 bool m_bEnableAutoSaveTreeItemExpandStatus;
213
214 HTREEITEM m_hItemUnselect;
215 HTREEITEM m_hItemLButtonDown;
216 EPaneType m_eParentPaneType;
217 TVITEMW m_itemDrag;
218
219 CGUIDialogAddSNAPNodeDisplay* m_pDlgAddNode;
220 CGUIPaneBase* m_pParentPane;
221
222 friend class CGUIManager;
223 friend class CGUIPaneMenu;
224 friend class CGUIPaneExampleSNAP;
225 friend class CGUITreeCtrlSearchUtils;
226 };
227 }
228}
Definition D2DObject.h:12