FLImaging 7.4.14.3
GUIManager.h
1#pragma once
2
3#include "DefinitionsGUI.h"
4
5#include <deque>
6#include <stack>
7#include <queue>
8#include <map>
9#include <set>
10
11namespace FLImaging
12{
13 namespace GUI
14 {
15 class CGUIPropertyMenuBase;
16 class CGUIPaneBase;
17 class CGUIPaneMenu;
18 class CGUIPaneLog;
19 class CGUIPaneCode;
20 class CGUIPaneExampleSNAP;
21 class CGUIPaneViewGraph;
23 class CGUIMenuItemFixedViewPlacementSet;
25 class CGUIMenuItemBase;
27 class CGUIMainFrame;
28
29 typedef struct sMenuItemPredefinedExpandSetting
30 {
31 sMenuItemPredefinedExpandSetting() :
32 m_strMenuItemFullPath(L""),
33 m_bExpand(false),
34 m_bRecursive(false),
35 m_bAllowToLoad(true) {}
36
37 sMenuItemPredefinedExpandSetting(
38 const Base::CFLString<wchar_t>& strMenuItemFullPath,
39 bool bExpand, bool bRecursive, bool bAllowToLoad) :
40 m_strMenuItemFullPath(strMenuItemFullPath),
41 m_bExpand(bExpand),
42 m_bRecursive(bRecursive),
43 m_bAllowToLoad(bAllowToLoad) {}
44
45 sMenuItemPredefinedExpandSetting(sMenuItemPredefinedExpandSetting& rhs) :
46 m_strMenuItemFullPath(rhs.m_strMenuItemFullPath),
47 m_bExpand(rhs.m_bExpand),
48 m_bRecursive(rhs.m_bRecursive),
49 m_bAllowToLoad(rhs.m_bAllowToLoad) {}
50
51 ~sMenuItemPredefinedExpandSetting() {}
52 Base::CFLString<wchar_t> m_strMenuItemFullPath;
53 bool m_bExpand;
54 bool m_bRecursive;
55 bool m_bAllowToLoad;
56 }
57 SMenuItemPredefinedExpandSetting;
58
59 class FL_EXPORT CGUIManager : public Base::CFLBase
60 {
61 CGUIManager();
62 CGUIManager(const CGUIManager& rh);
63
64 public:
65 virtual ~CGUIManager();
66
67 static bool PreInitialize();
68 static bool Initialize();
69 static bool IsInitialized();
70 static bool PreTerminate();
71 static bool IsPreTerminated();
72 static bool Terminate();
73
74 static bool PeekAndPump();
75
90 static const CResult SetConfigurationPath(const Base::CFLString<wchar_t>& strPath);
91
102 static Base::CFLString<wchar_t> GetConfigurationPath();
103
118 static const CResult SetExamplesSNAPPath(const Base::CFLString<wchar_t>& strPath);
119
130 static Base::CFLString<wchar_t> GetExamplesSNAPPath();
131
140 static uint32_t GetValidResourceId();
141
154 static const CResult AddChargedResourceId(uint32_t u32ResourceID);
155
168 static const CResult ReleaseChargedResourceId(uint32_t i32ResourceID);
169
178 static int64_t GetMenuItemCount();
179
201 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);
202
226 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);
227
243 static const CResult UnregisterMenu(const Base::CFLString<wchar_t>& flsFullPath);
244
258 static bool AddMenuItem(CGUIMenuItemBase* pItem);
259
277 static bool AddMenuItem(CGUIMenuItemBase* pMI, bool bAllowMultiInstance, bool bSetGlobalModel = false);
278
298 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt = EInsertPosition_After);
299
323 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt, bool bAllowMultiInstance, bool bSetGlobalModel = false);
324
348 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem);
349
377 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem, bool bAllowMultiInstance, bool bSetGlobalModel = false);
378
390 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
391
403 static bool DeleteMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
404
418 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
419
437 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsName, const Base::CFLString<wchar_t>& flsPath);
438
454 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
455
471 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
472
488 static const CResult GetMenuItemChildren(const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
489
502 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
503
516 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
517
528 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
529
540 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
541
562 static bool RegisterTreeItem(const wchar_t* pWcsName, const wchar_t* pWcsPath, void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
563
574 static bool UnregisterTreeItem(const wchar_t* pWcsFullPath);
575
586 static bool UnregisterTreeItem(void* pData);
587
600 static bool RenameTreeItem(void* pData, const wchar_t* pWcsNewName);
601
612 static bool IsThereTreeItem(void* pData);
613
626 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
627
644 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
645
658 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem = nullptr);
659
692 static void PreInitializePaneVisibility(bool bShowPaneMenu = true, bool bShowPaneLog = false, bool bShowPaneCode = false, bool bShowPaneExampleSNAP = true, bool bShowPaneColorTable = false, bool bShowPaneViewGraph = false, bool bShowPaneSheet = false);
693
724 static void GetPreInitializedPaneVisibility(bool& bShowPaneMenu, bool& bShowPaneLog, bool& bShowPaneCode, bool& bShowPaneExampleSNAP, bool& bShowPaneColorTable, bool& bShowPaneViewGraph, bool& bShowPaneSheet);
725
738 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
739
752 static void SetPaneCreationOnInitialize(EPaneType ePaneType, bool bCreate);
753
764 static EPaneType GetPaneCreationSetting();
765
772 static void BeginWaitCursor();
773
780 static void EndWaitCursor();
781
796 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
797
810 static const CResult LoadFontSetting();
811
828 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
829
843 static const CResult LoadFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
844
862 static const CResult ImportFixedViewPlacementSet(const wchar_t* pWcsFileNameWithPath = nullptr, bool bOverwrite = true, bool bApply = false);
863
876 static const CResult WriteFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
877
888 static const CResult LoadThemeSetting();
889
902 static const CResult WriteThemeSetting(int nValue);
903
924 static const CResult AddPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand, bool bRecursive, bool bAllowToLoad);
925
946 static const CResult GetPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand, bool& bRecursive, bool& bAllowToLoad);
947
960 static const CResult LoadMenuItemExpandSetting();
961
978 static const CResult LoadMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand);
979
996 static const CResult WriteMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand);
997
1010 static const CResult LoadExampleSNAPExpandSetting();
1011
1028 static const CResult LoadExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool& bExpand);
1029
1046 static const CResult WriteExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool bExpand);
1047
1060 static const CResult LoadWorkingPane();
1061
1079 static const CResult WriteWorkingPane(const CGUIMenuItemBase* pMenuItem, bool bExist);
1080
1092 static const CResult WriteWorkingPanes();
1093
1106 static const CResult WriteLastFocusedWorkingPane();
1107
1120 static const CResult LoadFavoriteMenuItemSetting();
1121
1140 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem, bool bDelete, bool bDeleteProfile = false);
1141
1154 static const CResult WriteFavoriteMenuItemSetting();
1155
1168 static const CResult LoadFavoriteExampleSNAPSetting();
1169
1188 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP, bool bDelete, bool bDeleteProfile = false);
1189
1202 static const CResult WriteFavoriteExampleSNAPSetting();
1203
1212 static bool IsLoadingFavoriteMenu();
1213
1222 static bool IsLoadingMenuItemExpand();
1223
1232 static bool IsLoadingExampleSNAPExpand();
1233
1242 static bool IsLoadingFixedViewPlacement();
1243
1254 static bool EnableMenuItemSNAPObject(bool bEnable);
1255
1264 static bool IsMenuItemSNAPObjectEnabled();
1265
1276 static const CResult ReloadOpenedPanePropertiesAll();
1277
1288 static CGUIMainFrame* GetMainFrame();
1289
1305 static const CResult OpenURL(const Base::CFLString<wchar_t>& strURL);
1306
1322 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1323
1350 static const CResult SetRegistrySubKeyName(const Base::CFLString<wchar_t>& strSubKeyName);
1351
1367 static const CResult SetAppTitle(const Base::CFLString<wchar_t>& strAppTitle);
1368
1380 static Base::CFLString<wchar_t> GetAppTitle();
1381
1397 static void SetMenuItemRootPath(const Base::CFLString<wchar_t>& strRoot);
1398
1410 static Base::CFLString<wchar_t> GetMenuItemRootName();
1411
1425 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1426
1440 static ETreeItemIcon GetMenuItemRootIcon();
1441
1451 static void EnableWriteWorkingPanesOnTerminate(bool bEnable);
1452
1462 static bool IsWriteWorkingPanesOnTerminateEnabled();
1463
1479 static const CResult EnsureDirectoryExists(const Base::CFLString<wchar_t>& strDirPath);
1480
1494 static void SetMainFrameBackgroundImagePadding(int32_t i32PaddingX, int32_t i32PaddingY);
1495
1509 static void GetMainFrameBackgroundImagePadding(int32_t& i32PaddingX, int32_t& i32PaddingY);
1510
1524 static void SetMainFrameBackgroundImageIntervalSpacing(int32_t i32IntervalSpacingX, int32_t i32IntervalSpacingY);
1525
1539 static void GetMainFrameBackgroundImageIntervalSpacing(int32_t& i32IntervalSpacingX, int32_t& i32IntervalSpacingY);
1540
1552 static void SetMainFrameBackgroundColor(COLORREF clr);
1553
1565 static COLORREF GetMainFrameBackgroundColor();
1566
1578 static void SetMainFrameBackgroundImage(const wchar_t* pWcsImagePath);
1579
1593 static void SetMainFrameBackgroundImageLayout(EBackgroundImageLayout eMode = EBackgroundImageLayout_Tile);
1594
1608 static EBackgroundImageLayout GetMainFrameBackgroundImageLayout();
1609
1621 static void SetMainFrameAppIcon(const wchar_t* pWcsIconPath);
1622
1634 static void SetMainFrameMenuBarLogoImage(const wchar_t* pWcsMenuBarLogoImagePath);
1635
1647 static void ShowMainFrameMenuBarLogo(bool bShow);
1648
1660 static bool IsMainFrameMenuBarLogoVisible();
1661
1662 static void RunOnMainThread(const std::function<void(void*)>& lmdFunction, void* pVResult, const void* pVCaller);
1663 static void RunOnMainThreadPostMessage(const std::function<void(void*)>& lmdFunction, void* pVResult, const void* pVCaller);
1664 static DWORD GetMainThreadID();
1665
1666 static bool EnterDllResource();
1667 static bool LeaveDllResource();
1668
1669 static const Base::CFLString<wchar_t> GetModuleFileName();
1670
1671 static bool IsSwitchingViewTab();
1672 static void SetSwitchingViewTab(bool bSet);
1673
1674 static HINSTANCE GetDllResource();
1675
1676 static CGUIViewImageBase* GetCallerView(const CFLBase* pCaller);
1677
1678 static const CResult InitializeAfxInstanceHandle();
1679
1680 DeclareGetClassType();
1681
1682 protected:
1683 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
1684 static bool PumpMessage();
1685 static bool OnIdle(LONG lCount);
1686 static const CResult InternalSetMenuItemName(CGUIMenuItemBase* pItem, const Base::CFLString<wchar_t>& strName);
1687 static const CResult InternalSetMenuItemPath(CGUIMenuItemBase* pItem, const Base::CFLString<wchar_t>& strPath);
1688 static const CResult InternalInitializeTreeContainerMenuItem();
1689 static const CResult InternalInitializeTreeContainerMenuItemExampleSNAP();
1690
1691 private:
1692 static CGUIManager* GetObject();
1693
1694 Base::CFLString<wchar_t> m_strConfigurationPath;
1695 Base::CFLString<wchar_t> m_strExamplesSNAPPath;
1696 Base::CFLString<wchar_t> m_strAppTitle;
1697 Base::CFLString<wchar_t> m_strRoot;
1698 ETreeItemIcon m_eRootIcon;
1699
1700 bool m_bInitialized;
1701 bool m_bPreTerminate;
1702
1703 bool m_bPreInitPaneMenuVisibility;
1704 bool m_bPreInitPaneLogVisibility;
1705 bool m_bPreInitPaneCodeVisibility;
1706 bool m_bPreInitPaneExampleSNAPVisibility;
1707 bool m_bPreInitPaneColorTableVisibility;
1708 bool m_bPreInitPaneViewGraphVisibility;
1709 bool m_bPreInitPaneSheetVisibility;
1710 bool m_bEnableMenuItemSNAPObject;
1711
1712 bool m_bLoadFixedViewPlacementSetting;
1713 bool m_bLoadThemeSetting;
1714 bool m_bLoadWorkingPane;
1715 bool m_bLoadFavoriteMenuItemSetting;
1716 bool m_bLoadMenuItemExpandSetting;
1717 bool m_bLoadFavoriteExampleSNAPSetting;
1718 bool m_bLoadExampleSNAPExpandSetting;
1719 bool m_bLoadFontSetting;
1720
1721 bool m_bEnableWriteWorkingPanes;
1722
1723 bool m_bNowLoadingFavoriteMenu;
1724 bool m_bNowLoadingFavoriteExampleSNAP;
1725 bool m_bNowLoadingMenuItemExpand;
1726 bool m_bNowLoadingExampleSNAPExpand;
1727 bool m_bNowLoadingFixedViewPlacement;
1728 bool m_bNowSwitchingViewTab;
1729
1730 std::stack<HINSTANCE>& m_stackResources;
1731 std::deque<CGUIMenuItemBase*>& m_deqMenuItems;
1732 std::unordered_map<uint32_t, CGUIMenuItemBase*>& m_mapFullPathHashAndMenuItems;
1733 std::map<uint32_t, bool>& m_mapResourceIdChargedStatus;
1734 std::vector<CGUIMenuItemFixedViewPlacementSet*>& m_vctMenuItemFvpSet;
1735 std::set<Base::CFLString<wchar_t>>& m_setPaneName;
1736 std::vector<SMenuItemPredefinedExpandSetting*>& m_vctMenuItemPredefinedExpandSetting;
1737
1738 EPaneType m_ePaneCreationOnInitialize;
1739 CRuntimeClass* m_pRtiOrg;
1740 DWORD m_dwMainThreadID;
1741
1742
1743 /* MainFrame */
1744 Base::TPoint<int32_t> m_tpMainFrameBgPadding;
1745 bool m_bMainFrameBgPaddingDirty;
1746 Base::TPoint<int32_t> m_tpMainFrameBgIntervalSpacing;
1747 bool m_bMainFrameBgIntervalSpacingDirty;
1748
1749 COLORREF m_clrMainFrameBg;
1750 bool m_bMainFrameBgColorDirty;
1751
1752 EBackgroundImageLayout m_eMainFrameBgImageLayout;
1753 bool m_bMainFrameBgImageLayoutDirty;
1754
1755 Base::CFLString<wchar_t> m_strMainFrameBgImagePath;
1756 bool m_bMainFrameBgImageDirty;
1757
1758 Base::CFLString<wchar_t> m_strMainFrameAppIconPath;
1759 bool m_bMainFrameAppIconDirty;
1760
1761 Base::CFLString<wchar_t> m_strMainFrameMenuBarLogoImagePath;
1762 bool m_bMainFrameMenuBarLogoImageDirty;
1763 bool m_bShowMainFrameMenuBarLogo;
1764 bool m_bMainFrameMenuBarLogoVisibilityDirty;
1765
1766 friend class CGUIMenuItemBase;
1767 };
1768 }
1769}
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 view base.
Definition GUIViewImageBase.h:44
Definition D2DObject.h:12
EBackgroundImageLayout
Enumeration for specifying how the background image is arranged.
Definition DefinitionsGUI.h:12723
EPaneType
Pane type.
Definition DefinitionsGUI.h:10332