FLImaging 6.5.8.1
GUIManagerPane.h
1#pragma once
2#include "GUIDefinitions.h"
3#include <list>
4#include <set>
5
6namespace FLImaging
7{
8 namespace GUI
9 {
10 class CGUIPaneMenu;
11 class CGUIPaneLog;
12 class CGUIPaneCode;
13 class CGUIPaneExampleSNAP;
14 class CGUIPaneViewGraph;
15 class CGUIPaneColorTable;
16 class CGUIPaneSheet;
17 class CGUIPaneBase;
18 class CGUIPaneProperties;
19 class CGUIMainFrame;
20 class CGUIMenuItemBase;
21 class CGUITabbedPane;
22 class CGUIPaneFrameWnd;
23 class CGUIPanePlacementBase;
24
25 class FL_EXPORT CGUIManagerPane : public Base::CFLBase
26 {
27 CGUIManagerPane();
28 CGUIManagerPane(const CGUIManagerPane& rh);
29 public:
30 enum EQAMode
31 {
32 EQAMode_None = 0x00,
33
34 EQAMode_LastFocusedPane = 0x01,
35 EQAMode_Serialize = 0x02,
36
37 EQAMode_All = 0xff,
38 };
39
40 public:
41 typedef struct sStateDataAutoHideBar
42 {
43 sStateDataAutoHideBar();
44
45 Base::CFLString<wchar_t> strName;
46 DWORD dwCurrentAlignment;
47 bool bVisible;
48 CRect rcRectBar;
49 bool bFirstInGroup;
50 bool bLastInGroup;
51 bool bActiveInGroup;
52 int32_t i32Order;
53 }SStateDataAutoHideBar;
54
55 typedef struct sStateDataPaneContainer
56 {
57 sStateDataPaneContainer();
58 virtual ~sStateDataPaneContainer();
59
60 int32_t i32Level;
61 CRect rtPaneDivider;
62 CRect rtPaneContainer;
63 CRect rtLeft;
64 CRect rtRight;
65
66 bool bLeftPaneIsVisible;
67 bool bRightPaneIsVisible;
68
69 sStateDataPaneContainer* pLeftContainer;
70 sStateDataPaneContainer* pRightContainer;
71 CDockablePane* pLeftPane;
72 CDockablePane* pRightPane;
73
74 EDockPosition dockPosLeft;
75 EDockPosition dockPosRight;
76
77 }SStateDataPaneContainer;
78
79 typedef struct sStateDataPaneContainerManager
80 {
81 sStateDataPaneContainerManager();
82 virtual ~sStateDataPaneContainerManager();
83
84 int32_t i32ID;
85 int32_t i32Step;
86 int32_t i32Width;
87 int32_t i32MaxOffset;
88 int32_t i32MinOffset;
89 int32_t i32ControlBarCount;
90
91 bool bDefaultDivider;
92 DWORD dwDividerStyle;
93
94 SStateDataPaneContainer* pRootContainer;
95 EDockPosition dockPosRootContainer; // parent 에 대한 docking position
96 }SStateDataPaneContainerManager;
97
98 public:
99 virtual ~CGUIManagerPane();
100
101 public:
102 static const CResult Initialize();
103
115 static CGUIPaneMenu* GetPaneMenu();
116
130 static const CResult ShowPaneMenu(bool bShow);
131
143 static CGUIPaneLog* GetPaneLog();
144
158 static const CResult ShowPaneLog(bool bShow);
159
171 static CGUIPaneCode* GetPaneCode();
172
186 static const CResult ShowPaneCode(bool bShow);
187
199 static CGUIPaneExampleSNAP* GetPaneExampleSNAP();
200
214 static const CResult ShowPaneExampleSNAP(bool bShow);
215
227 static CGUIPaneViewGraph* GetPaneViewGraph();
228
242 static const CResult ShowPaneViewGraph(bool bShow);
243
255 static CGUIPaneColorTable* GetPaneColorTable();
256
270 static const CResult ShowPaneColorTable(bool bShow);
271
283 static CGUIPaneSheet* GetPaneSheet();
284
298 static const CResult ShowPaneSheet(bool bShow);
299
315 static const CResult ShowPane(EPaneType ePaneType, bool bShow);
316
332 static const CResult AttachPaneAsTab(CDockablePane* pPane, CDockablePane* pPaneDst);
333
357 static const CResult DockPane(CDockablePane* pPane, CDockablePane* pPaneDst, EDockPosition eDockPosition, int32_t i32Width, int32_t i32Height);
358
380 static const CResult DockPaneToMainFrame(CDockablePane* pPane, EDockPosition eDockPosition, int32_t i32Width, int32_t i32Height);
381
399 static const CResult FloatPane(CDockablePane* pPane, CRect rt, bool bShow = true);
400
412 static bool IsPaneActive(CDockablePane* pPane);
413
423 static CPane* GetLastFocusedPane();
424
437 static CGUIPaneProperties* GetLastFocusedPaneProperties();
438
452 static const CResult SetLastFocusedPane(CPane* pPane);
453
463 static std::list<CPane*>* GetFocusedPaneList();
464
482 static const CResult GetTopAlignPanes(std::vector<CDockablePane*>& vctPanes, ESortOrderRect eSortOrder = ESortOrderRect_Top_Asc_Left_Asc);
483
501 static const CResult GetBottomAlignPanes(std::vector<CDockablePane*>& vctPanes, ESortOrderRect eSortOrder = ESortOrderRect_Bottom_Desc_Left_Asc);
502
520 static const CResult GetLeftAlignPanes(std::vector<CDockablePane*>& vctPanes, ESortOrderRect eSortOrder = ESortOrderRect_Left_Asc_Top_Asc);
521
539 static const CResult GetRightAlignPanes(std::vector<CDockablePane*>& vctPanes, ESortOrderRect eSortOrder = ESortOrderRect_Right_Desc_Top_Asc);
540
556 static const CResult GetExactClassPanes(CDockablePane* pPane, std::vector<CDockablePane*>& vctPanes);
557
573 static CGUIPaneBase* FindPaneByName(const Base::CFLString<wchar_t>& strPaneName);
574
588 static DWORD GetAlignmentLocal(const CRect& rtDestination, const CRect& rt);
589 static const CResult SetPlacement(CDockablePane* pPane, const CGUIPanePlacementBase& panePlacement);
590 static const CResult SetPlacement(CDockablePane* pPane, const CGUIPanePlacementBase* pPanePlacement);
591
592 static EDockPosition ConvertAlignmentToDockPosition(DWORD dwAlignment);
593 static DWORD ConvertDockPositionToAlignment(EDockPosition eDockPos);
594
595 static CPaneContainer* GetPaneContainer(const CDockablePane* pPane, bool* pBIsLeftPane = nullptr);
596
597 // for FL developers
598 static const CResult SetQAMode(EQAMode eQAMode);
599 static bool IsQAMode(EQAMode eQAMode);
600 static bool IsPrintLogMode();
601
602 static const CResult LoadStateAll();
603 static const CResult SaveStateAll();
604 DeclareGetClassType();
605
606 protected:
607 static const CResult AddUserPane(uint32_t uID, const CGUIPaneBase* pPane);
608 static CGUIPaneBase* FindUserPaneByCommandID(uint32_t uID);
609
610 static CGUIManagerPane* GetObject();
611 static const CResult SetPrintLog(bool bPrintLog);
612
613 static Base::CFLString<wchar_t> GetPaneNameToDistinguish(const CBasePane* pPane, bool bReplaceBracket, CGUIMenuItemBase** pMI = nullptr);
614 static Base::CFLString<wchar_t> GetSectionNameOfPane(const Base::CFLString<wchar_t>& strPaneNameToDistinguish, bool bReplaceBracket, const CGUIMenuItemBase* pMI);
615 static CGUIMenuItemBase* FindParentMenuItemBySectionName(const Base::CFLString<wchar_t>& str, int32_t* pI32Idx = nullptr);
616 static CGUITabbedPane* FindTabbedPaneBySerialNumber(int32_t i32SerialNum);
617 static CGUIPaneFrameWnd* FindMiniFrameBySerialNumber(int32_t i32SerialNum);
618 static CDockablePane* FindPaneBySectionName(const Base::CFLString<wchar_t>& str);
619
620 static const CResult LoadStateAutoHideBars();
621 static const CResult LoadPanesWithoutDeploying();
622 static const CResult LoadTabbedPane();
623 static const CResult LoadStatePaneContainer();
624 static const CResult LoadStatePaneContainerForMiniFrame();
625 static const CResult LoadPaneContainer(CWnd* pParent, CRect rtParent, int32_t i32Level, const Base::CFLString<wchar_t>& strSectionName);
626
627 static const CResult SavePaneContainerRootStruct(sStateDataPaneContainerManager* pSPaneContainerRoot, const Base::CFLString<wchar_t>& strSectionNamePre, const Base::CFLString<wchar_t>& strFilePath);
628 static const CResult SavePaneContainerStruct(sStateDataPaneContainer* pSPaneContainer, const Base::CFLString<wchar_t>& strSectionNamePre, EDockPosition& eParentDocPos, CRect& rtParent, const Base::CFLString<wchar_t>& strFilePath);
629 static const CResult SavePaneContainer(CPaneContainer* pPaneContainer, CWnd* pParent, CRect rtParent, int32_t i32Level, const Base::CFLString<wchar_t>& strSectionName);
630 static const CResult SaveMainFramePaneContainers();
631
632 static const CResult GetStateDataPaneContainerManager(CPaneDivider* pSlider, SStateDataPaneContainerManager& sSDPaneDivider);
633 static const CResult GetStateDataPaneContainer(CPaneContainer* pSlider, SStateDataPaneContainer& sSDPaneContainer, EDockPosition eDockPosParent);
634
635 static const CResult SaveMiniFrames(const std::set<CGUIPaneFrameWnd*>& setMiniFrames);
636 static const CResult SavePanes(const std::set<CGUIPaneBase*>& setPanes);
637 static const CResult SaveTabCtrls(const std::set<CGUITabbedPane*>& setTabbedPanes);
638
639 static const CResult SerializeAutoHideBars(bool bLoad, std::vector<SStateDataAutoHideBar*>* pVctItems = nullptr);
640 static const CResult SerializeAutoHideInfo(CDockablePane* pPane, const Base::CFLString<wchar_t>& strSectionName, bool bLoad, SStateDataAutoHideBar* pStruct = nullptr);
641
642
643 static const CResult SetMainFrame(CGUIMainFrame* pMF);
644 // Pane 컨테이너에서 pane 을 제거
645 static const CResult RemovePane(CPane* pPane);
646
647 friend class CGUIMainFrame;
648 friend class CGUIPaneBase;
649 friend class CGUITabbedPane;
650 friend class CGUIPaneFrameWnd;
651 friend class CGUIManager;
652 friend class CGUIMenuItemPaneDialogCustomEmbedded;
653 friend class CGUIViewSNAP;
654 friend class CInternalManagerPane;
655
656 protected:
657 std::list<CPane*> m_listPaneFocused;
658 std::map<uint32_t, CGUIPaneBase*> m_mapUserPane;
659
660 CGUIMainFrame* m_pMainFrame;
661 Base::CFLArray<Base::CFLString<wchar_t>> m_flaSections;
662 Base::CFLArray<Base::CFLString<wchar_t>> m_flaSectionsForIndividualPane;
663
664 bool m_bInitialized;
665 EQAMode m_eQAMode;
666 bool m_bPrintLogMode;
667
668 };
669 }
670}
EDockPosition
도킹 위치
Definition GUIDefinitions.h:9487