FLImaging 7.8.25.3
GUIManager.h
1#pragma once
2
3#include "DefinitionsGUI.h"
4#include "DefinitionsGUIResource.h"
5
6#include <deque>
7#include <stack>
8#include <queue>
9#include <map>
10#include <set>
11
12namespace FLImaging
13{
14 namespace GUI
15 {
16 class CGUIPropertyMenuBase;
17 class CGUIPaneBase;
18 class CGUIPaneMenu;
19 class CGUIPaneLog;
20 class CGUIPaneCode;
21 class CGUIPaneExampleSNAP;
22 class CGUIPaneViewGraph;
24 class CGUIMenuItemFixedViewPlacementSet;
26 class CGUIMenuItemBase;
28 class CGUIMainFrame;
29
30 typedef struct sMenuItemPredefinedExpandSetting
31 {
32 sMenuItemPredefinedExpandSetting() :
33 m_strMenuItemFullPath(L""),
34 m_bExpand(false),
35 m_bRecursive(false),
36 m_bAllowToLoad(true) {}
37
38 sMenuItemPredefinedExpandSetting(
39 const Base::CFLString<wchar_t>& strMenuItemFullPath,
40 bool bExpand, bool bRecursive, bool bAllowToLoad) :
41 m_strMenuItemFullPath(strMenuItemFullPath),
42 m_bExpand(bExpand),
43 m_bRecursive(bRecursive),
44 m_bAllowToLoad(bAllowToLoad) {}
45
46 sMenuItemPredefinedExpandSetting(sMenuItemPredefinedExpandSetting& rhs) :
47 m_strMenuItemFullPath(rhs.m_strMenuItemFullPath),
48 m_bExpand(rhs.m_bExpand),
49 m_bRecursive(rhs.m_bRecursive),
50 m_bAllowToLoad(rhs.m_bAllowToLoad) {}
51
52 ~sMenuItemPredefinedExpandSetting() {}
53 Base::CFLString<wchar_t> m_strMenuItemFullPath;
54 bool m_bExpand;
55 bool m_bRecursive;
56 bool m_bAllowToLoad;
57 }
58 SMenuItemPredefinedExpandSetting;
59
60 class FL_EXPORT CGUIManager : public Base::CFLBase
61 {
62 CGUIManager();
63 CGUIManager(const CGUIManager& rh);
64
65 public:
66 virtual ~CGUIManager();
67
68 static bool PreInitialize();
69 static bool Initialize();
70 static bool IsInitialized();
71 static bool PreTerminate();
72 static bool IsPreTerminated();
73 static bool Terminate();
74
75 static bool PeekAndPump();
76
91 static const CResult SetConfigurationPath(const Base::CFLString<wchar_t>& strPath);
92
103 static Base::CFLString<wchar_t> GetConfigurationPath();
104
119 static const CResult SetExamplesSNAPPath(const Base::CFLString<wchar_t>& strPath);
120
131 static Base::CFLString<wchar_t> GetExamplesSNAPPath();
132
141 static uint32_t GetValidResourceId();
142
155 static const CResult AddChargedResourceId(uint32_t u32ResourceID);
156
169 static const CResult ReleaseChargedResourceId(uint32_t i32ResourceID);
170
179 static int64_t GetMenuItemCount();
180
202 static const CResult RegisterMenu(const CGUIPropertyMenuBase& pmb, const Base::CFLString<wchar_t>& strName, const Base::CFLString<wchar_t>& strPath, bool bAllowMultiInstance = true, bool bSetGlobalModel = false);
203
227 static const CResult RegisterMenu(const CGUIPropertyMenuBase& pmb, const Base::CFLString<wchar_t>& strName, const Base::CFLString<wchar_t>& strInsertPositionFullPath, EInsertPosition eInsertAt, bool bAllowMultiInstance, bool bSetGlobalModel);
228
244 static const CResult UnregisterMenu(const Base::CFLString<wchar_t>& flsFullPath);
245
259 static bool AddMenuItem(CGUIMenuItemBase* pItem);
260
278 static bool AddMenuItem(CGUIMenuItemBase* pMI, bool bAllowMultiInstance, bool bSetGlobalModel = false);
279
299 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt = EInsertPosition_After);
300
324 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt, bool bAllowMultiInstance, bool bSetGlobalModel = false);
325
349 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem);
350
378 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem, bool bAllowMultiInstance, bool bSetGlobalModel = false);
379
391 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
392
404 static bool DeleteMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
405
419 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
420
438 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsName, const Base::CFLString<wchar_t>& flsPath);
439
455 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
456
472 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
473
489 static const CResult GetMenuItemChildren(const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
490
503 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
504
517 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
518
529 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
530
541 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
542
563 static bool RegisterTreeItem(const wchar_t* pWcsName, const wchar_t* pWcsPath, void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
564
575 static bool UnregisterTreeItem(const wchar_t* pWcsFullPath);
576
587 static bool UnregisterTreeItem(void* pData);
588
601 static bool RenameTreeItem(void* pData, const wchar_t* pWcsNewName);
602
613 static bool IsThereTreeItem(void* pData);
614
627 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
628
645 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
646
659 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem = nullptr);
660
697 static void PreInitializePaneVisibility(bool bShowPaneMenu = true, bool bShowPaneLog = false, bool bShowPaneCode = false, bool bShowPaneExampleSNAP = true, bool bShowPaneColorTable = false, bool bShowPaneViewGraph = false, bool bShowPaneSheet = false, bool bShowPaneSystemInformation = false);
698
735 static void GetPreInitializedPaneVisibility(bool& bShowPaneMenu, bool& bShowPaneLog, bool& bShowPaneCode, bool& bShowPaneExampleSNAP, bool& bShowPaneColorTable, bool& bShowPaneViewGraph, bool& bShowPaneSheet, bool& bShowPaneSystemInformation);
736
749 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
750
763 static void SetPaneCreationOnInitialize(EPaneType ePaneType, bool bCreate);
764
775 static EPaneType GetPaneCreationSetting();
776
783 static void BeginWaitCursor();
784
791 static void EndWaitCursor();
792
807 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
808
821 static const CResult LoadFontSetting();
822
839 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
840
854 static const CResult LoadFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
855
873 static const CResult ImportFixedViewPlacementSet(const wchar_t* pWcsFileNameWithPath = nullptr, bool bOverwrite = true, bool bApply = false);
874
887 static const CResult WriteFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
888
899 static const CResult LoadThemeSetting();
900
913 static const CResult WriteThemeSetting(int nValue);
914
935 static const CResult AddPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand, bool bRecursive, bool bAllowToLoad);
936
957 static const CResult GetPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand, bool& bRecursive, bool& bAllowToLoad);
958
971 static const CResult LoadMenuItemExpandSetting();
972
989 static const CResult LoadMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand);
990
1007 static const CResult WriteMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand);
1008
1021 static const CResult LoadExampleSNAPExpandSetting();
1022
1039 static const CResult LoadExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool& bExpand);
1040
1057 static const CResult WriteExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool bExpand);
1058
1071 static const CResult LoadWorkingPane();
1072
1090 static const CResult WriteWorkingPane(const CGUIMenuItemBase* pMenuItem, bool bExist);
1091
1103 static const CResult WriteWorkingPanes();
1104
1117 static const CResult WriteLastFocusedWorkingPane();
1118
1131 static const CResult LoadFavoriteMenuItemSetting();
1132
1151 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem, bool bDelete, bool bDeleteProfile = false);
1152
1165 static const CResult WriteFavoriteMenuItemSetting();
1166
1179 static const CResult LoadFavoriteExampleSNAPSetting();
1180
1199 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP, bool bDelete, bool bDeleteProfile = false);
1200
1213 static const CResult WriteFavoriteExampleSNAPSetting();
1214
1223 static bool IsLoadingFavoriteMenu();
1224
1233 static bool IsLoadingMenuItemExpand();
1234
1243 static bool IsLoadingExampleSNAPExpand();
1244
1253 static bool IsLoadingFixedViewPlacement();
1254
1265 static bool EnableMenuItemSNAPObject(bool bEnable);
1266
1275 static bool IsMenuItemSNAPObjectEnabled();
1276
1287 static const CResult ReloadOpenedPanePropertiesAll();
1288
1299 static CGUIMainFrame* GetMainFrame();
1300
1316 static const CResult OpenURL(const Base::CFLString<wchar_t>& strURL);
1317
1333 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1334
1361 static const CResult SetRegistrySubKeyName(const Base::CFLString<wchar_t>& strSubKeyName);
1362
1378 static const CResult SetAppTitle(const Base::CFLString<wchar_t>& strAppTitle);
1379
1391 static Base::CFLString<wchar_t> GetAppTitle();
1392
1408 static void SetMenuItemRootPath(const Base::CFLString<wchar_t>& strRoot);
1409
1421 static Base::CFLString<wchar_t> GetMenuItemRootName();
1422
1436 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1437
1451 static ETreeItemIcon GetMenuItemRootIcon();
1452
1462 static void EnableWriteWorkingPanesOnTerminate(bool bEnable);
1463
1473 static bool IsWriteWorkingPanesOnTerminateEnabled();
1474
1490 static const CResult EnsureDirectoryExists(const Base::CFLString<wchar_t>& strDirPath);
1491
1505 static void SetMainFrameBackgroundImagePadding(int32_t i32PaddingX, int32_t i32PaddingY);
1506
1520 static void GetMainFrameBackgroundImagePadding(int32_t& i32PaddingX, int32_t& i32PaddingY);
1521
1535 static void SetMainFrameBackgroundImageIntervalSpacing(int32_t i32IntervalSpacingX, int32_t i32IntervalSpacingY);
1536
1550 static void GetMainFrameBackgroundImageIntervalSpacing(int32_t& i32IntervalSpacingX, int32_t& i32IntervalSpacingY);
1551
1563 static void SetMainFrameBackgroundColor(COLORREF clr);
1564
1576 static COLORREF GetMainFrameBackgroundColor();
1577
1589 static void SetMainFrameBackgroundImage(const wchar_t* pWcsImagePath);
1590
1605 static void SetMainFrameBackgroundImage(UINT nIDResource, EImageResourceType eImageResourceType = EImageResourceType_PNG, HINSTANCE hInst = NULL);
1606
1620 static void SetMainFrameBackgroundImageLayout(EBackgroundImageLayout eMode = EBackgroundImageLayout_Tile);
1621
1635 static EBackgroundImageLayout GetMainFrameBackgroundImageLayout();
1636
1648 static void SetMainFrameAppIcon(const wchar_t* pWcsIconPath);
1649
1661 static void SetMainFrameMenuBarLogoImage(const wchar_t* pWcsMenuBarLogoImagePath);
1662
1674 static void ShowMainFrameMenuBarLogo(bool bShow);
1675
1687 static bool IsMainFrameMenuBarLogoVisible();
1688
1689 static void RunOnMainThread(const std::function<void(void*)>& lmdFunction, void* pVResult, const void* pVCaller);
1690 static void RunOnMainThreadPostMessage(const std::function<void(void*)>& lmdFunction, void* pVResult, const void* pVCaller);
1691 static DWORD GetMainThreadID();
1692
1693 static bool EnterDllResource();
1694 static bool LeaveDllResource();
1695
1696 static const Base::CFLString<wchar_t> GetModuleFileName();
1697
1698 static bool IsSwitchingViewTab();
1699 static void SetSwitchingViewTab(bool bSet);
1700
1701 static HINSTANCE GetDllResource();
1702
1703 static CGUIViewImageBase* GetCallerView(const CFLBase* pCaller);
1704
1705 static const CResult InitializeAfxInstanceHandle();
1706
1707 DeclareGetClassType();
1708
1709 protected:
1710 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
1711 static bool PumpMessage();
1712 static bool OnIdle(LONG lCount);
1713 static const CResult InternalSetMenuItemName(CGUIMenuItemBase* pItem, const Base::CFLString<wchar_t>& strName);
1714 static const CResult InternalSetMenuItemPath(CGUIMenuItemBase* pItem, const Base::CFLString<wchar_t>& strPath);
1715 static const CResult InternalInitializeTreeContainerMenuItem();
1716 static const CResult InternalInitializeTreeContainerMenuItemExampleSNAP();
1717 static bool IsMainFrameBackgroundImageDirty();
1718 static const CResult LoadMainFrameBackgroundImage();
1719 static bool DoesMainFrameBackgroundImageUseResource();
1720 static Base::CFLString<wchar_t> GetMainFrameBackgroundImagePath();
1721 static UINT GetMainFrameBackgroundImageResourceID();
1722 static EImageResourceType GetMainFrameBackgroundImageResourceType();
1723 static HINSTANCE GetMainFrameBackgroundImageInstanceHandle();
1724
1725 private:
1726 static CGUIManager* GetObject();
1727
1728 Base::CFLString<wchar_t> m_strConfigurationPath;
1729 Base::CFLString<wchar_t> m_strExamplesSNAPPath;
1730 Base::CFLString<wchar_t> m_strAppTitle;
1731 Base::CFLString<wchar_t> m_strRoot;
1732 ETreeItemIcon m_eRootIcon;
1733
1734 bool m_bInitialized;
1735 bool m_bPreTerminate;
1736
1737 bool m_bPreInitPaneMenuVisibility;
1738 bool m_bPreInitPaneLogVisibility;
1739 bool m_bPreInitPaneCodeVisibility;
1740 bool m_bPreInitPaneExampleSNAPVisibility;
1741 bool m_bPreInitPaneColorTableVisibility;
1742 bool m_bPreInitPaneViewGraphVisibility;
1743 bool m_bPreInitPaneSheetVisibility;
1744 bool m_bPreInitPaneSystemInformationVisibility;
1745 bool m_bEnableMenuItemSNAPObject;
1746
1747 bool m_bLoadFixedViewPlacementSetting;
1748 bool m_bLoadThemeSetting;
1749 bool m_bLoadWorkingPane;
1750 bool m_bLoadFavoriteMenuItemSetting;
1751 bool m_bLoadMenuItemExpandSetting;
1752 bool m_bLoadFavoriteExampleSNAPSetting;
1753 bool m_bLoadExampleSNAPExpandSetting;
1754 bool m_bLoadFontSetting;
1755
1756 bool m_bEnableWriteWorkingPanes;
1757
1758 bool m_bNowLoadingFavoriteMenu;
1759 bool m_bNowLoadingFavoriteExampleSNAP;
1760 bool m_bNowLoadingMenuItemExpand;
1761 bool m_bNowLoadingExampleSNAPExpand;
1762 bool m_bNowLoadingFixedViewPlacement;
1763 bool m_bNowSwitchingViewTab;
1764
1765 std::stack<HINSTANCE>& m_stackResources;
1766 std::deque<CGUIMenuItemBase*>& m_deqMenuItems;
1767 std::unordered_map<uint32_t, CGUIMenuItemBase*>& m_mapFullPathHashAndMenuItems;
1768 std::map<uint32_t, bool>& m_mapResourceIdChargedStatus;
1769 std::vector<CGUIMenuItemFixedViewPlacementSet*>& m_vctMenuItemFvpSet;
1770 std::set<Base::CFLString<wchar_t>>& m_setPaneName;
1771 std::vector<SMenuItemPredefinedExpandSetting*>& m_vctMenuItemPredefinedExpandSetting;
1772
1773 EPaneType m_ePaneCreationOnInitialize;
1774 CRuntimeClass* m_pRtiOrg;
1775 DWORD m_dwMainThreadID;
1776
1777
1778 /* MainFrame */
1779 Base::TPoint<int32_t> m_tpMainFrameBgPadding;
1780 bool m_bMainFrameBgPaddingDirty;
1781 Base::TPoint<int32_t> m_tpMainFrameBgIntervalSpacing;
1782 bool m_bMainFrameBgIntervalSpacingDirty;
1783
1784 COLORREF m_clrMainFrameBg;
1785 bool m_bMainFrameBgColorDirty;
1786
1787 EBackgroundImageLayout m_eMainFrameBgImageLayout;
1788 bool m_bMainFrameBgImageLayoutDirty;
1789
1790 Base::CFLString<wchar_t> m_strMainFrameBgImagePath;
1791 bool m_bMainFrameBgImageUseResource;
1792 UINT m_nMainFrameBgImageResourceID;
1793 EImageResourceType m_eMainFrameBgImageResourceType;
1794 HINSTANCE m_hMainFrameBgImageInst;
1795 bool m_bMainFrameBgImageDirty;
1796
1797 Base::CFLString<wchar_t> m_strMainFrameAppIconPath;
1798 bool m_bMainFrameAppIconDirty;
1799
1800 friend class CGUIMenuItemBase;
1801 friend class CGUIMainFrame;
1802 };
1803 }
1804}
A class on a set of fixed view positions.
Definition GUIFixedViewPlacementSet.h:30
The menu item class associated with the property pane.
Definition GUIMenuItemProperty.h:48
A class of log pane.
Definition GUIPaneLog.h:33
A class of view base.
Definition GUIViewImageBase.h:44
Definition D2DObject.h:12
EImageResourceType
Image resource type enumeration.
Definition DefinitionsGUIResource.h:43
EBackgroundImageLayout
Enumeration for specifying how the background image is arranged.
Definition DefinitionsGUI.h:16050
EPaneType
Pane type.
Definition DefinitionsGUI.h:13634