FLImaging 6.5.8.1
GUIPaneBase.h
1#pragma once
2#include "GUIDefinitions.h"
3
4namespace FLImaging
5{
6 namespace GUI
7 {
8 class CGUIMenuItemBase;
9 class CGUIDockablePaneHostFrame;
10
11 class FL_EXPORT CGUIPaneBase : public CDockablePane, public Base::CFLBase
12 {
13 public:
14 typedef struct sStateData
15 {
16 CRect rtRect;
17 CRect rtRectRecentFloat;
18 CRect rtRectRecentDocked;
19 DWORD dwCurrentAlignment;
20 DWORD dwRecentFrameAlignment;
21 bool bFloating;
22 bool bAutoHideMode;
23 bool bVisible;
24 int32_t i32RecentRowIndex;
25 int32_t i32MRUWidth;
26 int32_t i32ParentMiniFrameSerialNum;
27 int32_t i32ParentTabbedPaneSerialNum;
28 int64_t i64PaneDividerNum;
29 }
30 SStateData;
31
32 public:
33 DECLARE_MESSAGE_MAP()
34
35 public:
36 CGUIPaneBase();
37 virtual ~CGUIPaneBase();
38
39 virtual bool SetName(Base::CFLString<wchar_t> strName);
40 virtual bool GetName(Base::CFLString<wchar_t>& strName) const;
41
42 virtual bool SetResourceID(uint32_t u32ID);
43 virtual uint32_t GetResourceID() const;
44
45 virtual bool SwitchTabs(bool bForwardDirection);
46
47 virtual void SetPaneType(EPaneType eParentPaneType);
48 virtual EPaneType GetPaneType() const;
49
50 virtual bool HasEverBeenDeployed() const;
51 virtual void SetEverBeenDeployed(bool bSet);
52
53 virtual BOOL IsAutoHideMode() const;
54
55 virtual bool ClosePane();
56 virtual void UndockPane(BOOL bDelay = FALSE) override;
57
58 void SetPrepareToFloat(bool bSet);
59 bool IsPreparedToFloat() const;
60
61 void SetReadyToFloat(bool bSet);
62 bool IsReadyToFloat() const;
63
64 virtual BOOL DockToFrameWindow(DWORD dwAlignment, LPCRECT lpRect = NULL, DWORD dwDockFlags = DT_DOCK_LAST, CBasePane* pRelativeBar = NULL, int nRelativeIndex = -1, BOOL bOuterEdge = FALSE) override;
65 virtual BOOL DockToWindow(CDockablePane* pTargetWindow, DWORD dwAlignment, LPCRECT lpRect = NULL) override;
66 virtual BOOL FloatPane(CRect rectFloat, AFX_DOCK_METHOD dockMethod = DM_UNKNOWN, bool bShow = true) override;
67
68 virtual CDockablePane* AttachToTabWnd(CDockablePane* pTabControlBarAttachTo, AFX_DOCK_METHOD dockMethod, BOOL bSetActive = TRUE, CDockablePane** ppTabbedControlBar = NULL) override;
69 virtual CTabbedPane* CreateTabbedPane() override;
70 virtual CPaneFrameWnd* CreateDefaultMiniframe(CRect rectInitial) override;
71 //virtual CDockingManager* GetDockingManager() const { return m_pDockManager; }
72
73 virtual void DrawCaption(CDC* pDC, CRect rectCaption)override;
74
75 static const CResult Read(CGUIPaneBase* pWnd, const Base::CFLString<wchar_t>& strFilePath, const Base::CFLString<wchar_t>& strSectionName);
76 static const CResult Write(CGUIPaneBase* pWnd, const Base::CFLString<wchar_t>& strFilePath);
77
78 virtual bool IsLoadComplete() const;
79 virtual void MarkLoadComplete(bool bComplete);
80
81 virtual bool IsSaveComplete() const;
82 virtual void MarkSaveComplete(bool bComplete);
83
84 virtual bool CanSave() const;
85 virtual const SStateData& GetStateData() const;
86
87 virtual CMFCAutoHideBar* SetAutoHideMode(BOOL bMode, DWORD dwAlignment, CMFCAutoHideBar* pCurrAutoHideBar = NULL, BOOL bUseTimer = TRUE)override;
88
89 virtual bool IsStandalone() const;
90 virtual void SetStandalone(bool bStandalone);
91
92 virtual void SetMenuItem(CGUIMenuItemBase* pMenuItem);
93 virtual CGUIMenuItemBase* GetMenuItem() const;
94
95 // 조건에 따라 Destroy 또는 Close 동작을 수행
96 // 연결된 menu item 이 multi instance child 일 경우 destroy, 아닐 경우 close
97 virtual const CResult ProcessPaneTermination();
98
99 virtual CGUIDockablePaneHostFrame* GetHostFrame() const;
100
101 protected:
102 virtual void OnPressCloseButton() override;
103
104 public:
105 volatile bool m_bTerminateApp;
106 volatile bool m_bPreClose;
107 bool m_bEverBeenDeployed;
108 bool m_bStandalone;
109
110 protected:
111 Base::CFLString<wchar_t> m_strName;
112 EPaneType m_ePaneType;
113
114 bool m_bSaveDone;
115 bool m_bLoadDone;
116 SStateData m_sStateData;
117 uint32_t m_u32ResourceID;
118 CGUIMenuItemBase* m_pMenuItem;
119
120 CPoint m_ptDragStart;
121 CRect m_rtOrgWindow;
122 CGUIDockablePaneHostFrame* m_pParentHostFrame;
123
124 friend class CGUITabbedPane;
125 friend class CGUIPaneFrameWnd;
126 friend class CGUIManager;
127 friend class CGUIMenuItemAttributePane;
128
129 public:
130
131 DeclareGetClassType();
132 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
133 afx_msg void OnDestroy();
134 afx_msg void OnClose();
135 afx_msg void OnSetFocus(CWnd* pOldWnd);
136 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
137 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
138 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
139 afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
140};
141 }
142}
143