FLImaging 6.5.8.1
GUIPaneProperties.h
1
2#pragma once
3
4#include <functional>
5#include "GUIButton.h"
6
7#include "GUIPaneMenu.h"
8#include "GUIPaneBase.h"
9#include "GUIPropertyGridCtrl.h"
10#include "GUIDefinitions.h"
11
12namespace FLImaging
13{
14 namespace GUI
15 {
16 class CGUIPaneProperties;
17
18 class CGUIPanePropertiesShell : public CWnd
19 {
20 public:
21 CGUIPanePropertiesShell(CGUIPaneProperties* pWndParent, CGUIPropertyGridCtrl* pGridCtrl);
22 virtual ~CGUIPanePropertiesShell();
23
24 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
25 afx_msg LRESULT OnPropertyChanged(WPARAM wparam, LPARAM lparam);
26 afx_msg void OnButtonExecute(UINT uID);
27 afx_msg void OnUpdateButtonExecute(CCmdUI* pCmdUI);
28
29 DECLARE_MESSAGE_MAP()
30
31 public:
32 CGUIPaneProperties* GetParentPaneProperties();
33
34 protected:
35 CGUIPaneProperties* m_pPaneProperties;
36 CGUIPropertyGridCtrl* m_pWndPropList;
37
38 friend class CGUIPaneProperties;
39 public:
40 afx_msg void OnEnable(BOOL bEnable);
41 };
42
43 class CGUIMenuItemProperty;
44 class CGUIPaneProperties;
45 class CGUIPropertyItemBase;
46 class CGUIPropertyButton;
47
48 typedef std::function<void(CGUIPaneProperties*)> CPropertyTimerProcedure;
49 #define MakePropertyTimerProcedure [=](CGUIPaneProperties* pPropertyPane) -> void
50
51 class FL_EXPORT CGUIPaneProperties : public CGUIPaneBase
52 {
53 public:
54 enum EControlID
55 {
56 // Ranges
57 EControlID_Button_Start = 3000,
58 EControlID_Button_End = EControlID_Button_Start + 200,
59 EControlID_PropertyControls_Start = EControlID_Button_End + 1,
60 EControlID_PropertyControls_End = EControlID_PropertyControls_Start + 1000,
61
62 // Implement
63 EControlID_PropertyControls_StatusMessageCaption = EControlID_PropertyControls_Start,
64 EControlID_PropertyControls_StatusMessageText,
65 };
66
67 CGUIPaneProperties() noexcept;
68 CGUIPaneProperties(const CGUIPaneProperties& rh);
69 virtual ~CGUIPaneProperties();
70
71 bool SetMenuItemProperty(CGUIMenuItemProperty* pProperty);
72 virtual CGUIMenuItemProperty* GetMenuItemProperty()const;
73
74 const CResult InitialShowWindow();
75
76 const CResult SetTimerHandler(int64_t i64Interval, CPropertyTimerProcedure* pFunc, uint32_t* pU32TimerIDResult = nullptr);
77 const CResult KillTimerHandler(uint32_t u32TimerID);
78
79 virtual void StoreRecentDockSiteInfo() override;
80
81 void SetVSDotNetLook(BOOL bSet);
82 CGUIPropertyGridCtrl* GetPropertyGridCtrl();
83
84 virtual BOOL IsVisible() const override;
85 virtual BOOL IsWindowVisible() const;
86
87 virtual bool SwitchTabs(bool bForwardDirection) override;
88
89 CGUIPanePropertiesShell* GetPanePropertiesShell();
90 CGUIPaneProperties* GetMessagePaneProperties();
91
92 virtual const CResult EnableControls(bool bEnable);
93 virtual bool IsControlsEnabled() const;
94
95 virtual void AdjustLayout();
96
97 virtual const CResult UpdateAuthorityLevelItems();
98
99 // 조건에 따라 Destroy 또는 Close 동작을 수행
100 // 연결된 menu item 이 multi instance child 일 경우 destroy, 아닐 경우 close
101 virtual const CResult ProcessPaneTermination() override;
102
103 DECLARE_MESSAGE_MAP()
104 public:
105 afx_msg void OnTimer(UINT_PTR nIDEvent);
106 afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
107 afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
108 afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
109 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
110 afx_msg void OnDestroy();
111 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
112 virtual BOOL PreTranslateMessage(MSG* pMsg);
113
114 protected:
115 virtual bool Build();
116 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
117 virtual void UpdateFont();
118
119 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
120 afx_msg void OnSize(UINT nType, int cx, int cy);
121 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
122 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
123 afx_msg void OnSetFocus(CWnd* pOldWnd);
124 afx_msg void OnEnable(BOOL bEnable);
125
126 public:
127 /* Control from outside*/
128 volatile bool m_bExitProcedure;
129
130 protected:
131 /* MenuItemProperty*/
132 CGUIMenuItemProperty* m_pMenuItemProperty;
133
134 /* PropertyGridCtrl*/
135 CGUIPropertyGridCtrl m_wndPropList;
136
137 /* Font*/
138 CFont* m_pFont;
139
140 /* Timer procedure*/
141 std::map<uint32_t, CPropertyTimerProcedure*>& m_mapTimerCallback;
142
143 /* Create Instance*/
144 int32_t m_i32InstanceIdx;
145
146 std::vector<CMFCPropertyGridProperty*>& m_vctProperties;
147
148 CGUIPanePropertiesShell* m_pWndShell;
149
150 bool m_bControlEnabled;
151 std::map<CGUIPropertyItemBase*, bool>& m_mapPrevItemEnabledState;
152 std::map<CGUIPropertyButton*, bool>& m_mapPrevButtonEnabledState;
153
154 friend class CGUIPaneMenu;
155 friend class CGUIMenuItemProperty;
156 friend class CGUIManager;
157 friend class CGUITabbedPane;
158 friend class CGUIMainFrame;
159 friend class CGUIManagerPane;
160 friend class CGUIPropertyMenuSNAPView;
161 friend class CGUIPanePropertiesShell;
162 friend class CGUIPropertyItemBase;
163 friend class CGUIPropertyButton;
164 friend class CGUIPropertyItemCategory;
165 };
166 }
167}
168