3#include "DefinitionsGUI.h"
4#include "DefinitionsGUIResource.h"
16 class CGUIPropertyMenuBase;
21 class CGUIPaneExampleSNAP;
22 class CGUIPaneViewGraph;
24 class CGUIMenuItemFixedViewPlacementSet;
26 class CGUIMenuItemBase;
30 typedef struct sMenuItemPredefinedExpandSetting
32 sMenuItemPredefinedExpandSetting() :
33 m_strMenuItemFullPath(L
""),
36 m_bAllowToLoad(true) {}
38 sMenuItemPredefinedExpandSetting(
39 const Base::CFLString<wchar_t>& strMenuItemFullPath,
40 bool bExpand,
bool bRecursive,
bool bAllowToLoad) :
41 m_strMenuItemFullPath(strMenuItemFullPath),
43 m_bRecursive(bRecursive),
44 m_bAllowToLoad(bAllowToLoad) {}
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) {}
52 ~sMenuItemPredefinedExpandSetting() {}
53 Base::CFLString<wchar_t> m_strMenuItemFullPath;
58 SMenuItemPredefinedExpandSetting;
60 class FL_EXPORT CGUIManager :
public Base::CFLBase
63 CGUIManager(
const CGUIManager& rh);
66 virtual ~CGUIManager();
68 static bool PreInitialize();
69 static bool Initialize();
70 static bool IsInitialized();
71 static bool PreTerminate();
72 static bool IsPreTerminated();
73 static bool Terminate();
75 static bool PeekAndPump();
91 static const CResult SetConfigurationPath(
const Base::CFLString<wchar_t>& strPath);
103 static Base::CFLString<wchar_t> GetConfigurationPath();
119 static const CResult SetExamplesSNAPPath(
const Base::CFLString<wchar_t>& strPath);
131 static Base::CFLString<wchar_t> GetExamplesSNAPPath();
141 static uint32_t GetValidResourceId();
155 static const CResult AddChargedResourceId(uint32_t u32ResourceID);
169 static const CResult ReleaseChargedResourceId(uint32_t i32ResourceID);
179 static int64_t GetMenuItemCount();
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);
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);
244 static const CResult UnregisterMenu(
const Base::CFLString<wchar_t>& flsFullPath);
259 static bool AddMenuItem(CGUIMenuItemBase* pItem);
278 static bool AddMenuItem(CGUIMenuItemBase* pMI,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
299 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt = EInsertPosition_After);
324 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
349 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem);
378 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
391 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
404 static bool DeleteMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
419 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
438 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsName,
const Base::CFLString<wchar_t>& flsPath);
455 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
472 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
489 static const CResult GetMenuItemChildren(
const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
503 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
517 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
529 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
541 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
563 static bool RegisterTreeItem(
const wchar_t* pWcsName,
const wchar_t* pWcsPath,
void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
575 static bool UnregisterTreeItem(
const wchar_t* pWcsFullPath);
587 static bool UnregisterTreeItem(
void* pData);
601 static bool RenameTreeItem(
void* pData,
const wchar_t* pWcsNewName);
613 static bool IsThereTreeItem(
void* pData);
627 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
645 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
659 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem =
nullptr);
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);
735 static void GetPreInitializedPaneVisibility(
bool& bShowPaneMenu,
bool& bShowPaneLog,
bool& bShowPaneCode,
bool& bShowPaneExampleSNAP,
bool& bShowPaneColorTable,
bool& bShowPaneViewGraph,
bool& bShowPaneSheet,
bool& bShowPaneSystemInformation);
749 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
763 static void SetPaneCreationOnInitialize(EPaneType ePaneType,
bool bCreate);
775 static EPaneType GetPaneCreationSetting();
783 static void BeginWaitCursor();
791 static void EndWaitCursor();
807 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
821 static const CResult LoadFontSetting();
839 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
854 static const CResult LoadFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
873 static const CResult ImportFixedViewPlacementSet(
const wchar_t* pWcsFileNameWithPath =
nullptr,
bool bOverwrite =
true,
bool bApply =
false);
887 static const CResult WriteFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
899 static const CResult LoadThemeSetting();
913 static const CResult WriteThemeSetting(
int nValue);
935 static const CResult AddPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand,
bool bRecursive,
bool bAllowToLoad);
957 static const CResult GetPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand,
bool& bRecursive,
bool& bAllowToLoad);
971 static const CResult LoadMenuItemExpandSetting();
989 static const CResult LoadMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand);
1007 static const CResult WriteMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand);
1021 static const CResult LoadExampleSNAPExpandSetting();
1039 static const CResult LoadExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool& bExpand);
1057 static const CResult WriteExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool bExpand);
1071 static const CResult LoadWorkingPane();
1090 static const CResult WriteWorkingPane(
const CGUIMenuItemBase* pMenuItem,
bool bExist);
1103 static const CResult WriteWorkingPanes();
1117 static const CResult WriteLastFocusedWorkingPane();
1131 static const CResult LoadFavoriteMenuItemSetting();
1151 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem,
bool bDelete,
bool bDeleteProfile =
false);
1165 static const CResult WriteFavoriteMenuItemSetting();
1179 static const CResult LoadFavoriteExampleSNAPSetting();
1199 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP,
bool bDelete,
bool bDeleteProfile =
false);
1213 static const CResult WriteFavoriteExampleSNAPSetting();
1223 static bool IsLoadingFavoriteMenu();
1233 static bool IsLoadingMenuItemExpand();
1243 static bool IsLoadingExampleSNAPExpand();
1253 static bool IsLoadingFixedViewPlacement();
1265 static bool EnableMenuItemSNAPObject(
bool bEnable);
1275 static bool IsMenuItemSNAPObjectEnabled();
1287 static const CResult ReloadOpenedPanePropertiesAll();
1299 static CGUIMainFrame* GetMainFrame();
1316 static const CResult OpenURL(
const Base::CFLString<wchar_t>& strURL);
1333 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1361 static const CResult SetRegistrySubKeyName(
const Base::CFLString<wchar_t>& strSubKeyName);
1378 static const CResult SetAppTitle(
const Base::CFLString<wchar_t>& strAppTitle);
1391 static Base::CFLString<wchar_t> GetAppTitle();
1408 static void SetMenuItemRootPath(
const Base::CFLString<wchar_t>& strRoot);
1421 static Base::CFLString<wchar_t> GetMenuItemRootName();
1436 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1451 static ETreeItemIcon GetMenuItemRootIcon();
1462 static void EnableWriteWorkingPanesOnTerminate(
bool bEnable);
1473 static bool IsWriteWorkingPanesOnTerminateEnabled();
1490 static const CResult EnsureDirectoryExists(
const Base::CFLString<wchar_t>& strDirPath);
1505 static void SetMainFrameBackgroundImagePadding(int32_t i32PaddingX, int32_t i32PaddingY);
1520 static void GetMainFrameBackgroundImagePadding(int32_t& i32PaddingX, int32_t& i32PaddingY);
1535 static void SetMainFrameBackgroundImageIntervalSpacing(int32_t i32IntervalSpacingX, int32_t i32IntervalSpacingY);
1550 static void GetMainFrameBackgroundImageIntervalSpacing(int32_t& i32IntervalSpacingX, int32_t& i32IntervalSpacingY);
1563 static void SetMainFrameBackgroundColor(COLORREF clr);
1576 static COLORREF GetMainFrameBackgroundColor();
1589 static void SetMainFrameBackgroundImage(
const wchar_t* pWcsImagePath);
1605 static void SetMainFrameBackgroundImage(UINT nIDResource, EImageResourceType eImageResourceType = EImageResourceType_PNG, HINSTANCE hInst = NULL);
1620 static void SetMainFrameBackgroundImageLayout(EBackgroundImageLayout eMode = EBackgroundImageLayout_Tile);
1648 static void SetMainFrameAppIcon(
const wchar_t* pWcsIconPath);
1661 static void SetMainFrameMenuBarLogoImage(
const wchar_t* pWcsMenuBarLogoImagePath);
1674 static void ShowMainFrameMenuBarLogo(
bool bShow);
1687 static bool IsMainFrameMenuBarLogoVisible();
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();
1693 static bool EnterDllResource();
1694 static bool LeaveDllResource();
1696 static const Base::CFLString<wchar_t> GetModuleFileName();
1698 static bool IsSwitchingViewTab();
1699 static void SetSwitchingViewTab(
bool bSet);
1701 static HINSTANCE GetDllResource();
1703 static CGUIViewImageBase* GetCallerView(
const CFLBase* pCaller);
1705 static const CResult InitializeAfxInstanceHandle();
1707 DeclareGetClassType();
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();
1723 static HINSTANCE GetMainFrameBackgroundImageInstanceHandle();
1726 static CGUIManager* GetObject();
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;
1734 bool m_bInitialized;
1735 bool m_bPreTerminate;
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;
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;
1756 bool m_bEnableWriteWorkingPanes;
1758 bool m_bNowLoadingFavoriteMenu;
1759 bool m_bNowLoadingFavoriteExampleSNAP;
1760 bool m_bNowLoadingMenuItemExpand;
1761 bool m_bNowLoadingExampleSNAPExpand;
1762 bool m_bNowLoadingFixedViewPlacement;
1763 bool m_bNowSwitchingViewTab;
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;
1774 CRuntimeClass* m_pRtiOrg;
1775 DWORD m_dwMainThreadID;
1779 Base::TPoint<int32_t> m_tpMainFrameBgPadding;
1780 bool m_bMainFrameBgPaddingDirty;
1781 Base::TPoint<int32_t> m_tpMainFrameBgIntervalSpacing;
1782 bool m_bMainFrameBgIntervalSpacingDirty;
1784 COLORREF m_clrMainFrameBg;
1785 bool m_bMainFrameBgColorDirty;
1788 bool m_bMainFrameBgImageLayoutDirty;
1790 Base::CFLString<wchar_t> m_strMainFrameBgImagePath;
1791 bool m_bMainFrameBgImageUseResource;
1792 UINT m_nMainFrameBgImageResourceID;
1794 HINSTANCE m_hMainFrameBgImageInst;
1795 bool m_bMainFrameBgImageDirty;
1797 Base::CFLString<wchar_t> m_strMainFrameAppIconPath;
1798 bool m_bMainFrameAppIconDirty;
1800 friend class CGUIMenuItemBase;
1801 friend class CGUIMainFrame;
A class on a set of fixed view positions.
Definition GUIFixedViewPlacementSet.h:30
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