3#include "DefinitionsGUI.h"
15 class CGUIPropertyMenuBase;
20 class CGUIPaneExampleSNAP;
21 class CGUIPaneViewGraph;
23 class CGUIMenuItemFixedViewPlacementSet;
25 class CGUIMenuItemBase;
29 typedef struct sMenuItemPredefinedExpandSetting
31 sMenuItemPredefinedExpandSetting() :
32 m_strMenuItemFullPath(L
""),
35 m_bAllowToLoad(true) {}
37 sMenuItemPredefinedExpandSetting(
38 const Base::CFLString<wchar_t>& strMenuItemFullPath,
39 bool bExpand,
bool bRecursive,
bool bAllowToLoad) :
40 m_strMenuItemFullPath(strMenuItemFullPath),
42 m_bRecursive(bRecursive),
43 m_bAllowToLoad(bAllowToLoad) {}
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) {}
51 ~sMenuItemPredefinedExpandSetting() {}
52 Base::CFLString<wchar_t> m_strMenuItemFullPath;
57 SMenuItemPredefinedExpandSetting;
59 class FL_EXPORT CGUIManager :
public Base::CFLBase
62 CGUIManager(
const CGUIManager& rh);
65 virtual ~CGUIManager();
67 static bool PreInitialize();
68 static bool Initialize();
69 static bool IsInitialized();
70 static bool PreTerminate();
71 static bool IsPreTerminated();
72 static bool Terminate();
74 static bool PeekAndPump();
90 static const CResult SetConfigurationPath(
const Base::CFLString<wchar_t>& strPath);
102 static Base::CFLString<wchar_t> GetConfigurationPath();
118 static const CResult SetExamplesSNAPPath(
const Base::CFLString<wchar_t>& strPath);
130 static Base::CFLString<wchar_t> GetExamplesSNAPPath();
140 static uint32_t GetValidResourceId();
154 static const CResult AddChargedResourceId(uint32_t u32ResourceID);
168 static const CResult ReleaseChargedResourceId(uint32_t i32ResourceID);
178 static int64_t GetMenuItemCount();
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);
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);
243 static const CResult UnregisterMenu(
const Base::CFLString<wchar_t>& flsFullPath);
258 static bool AddMenuItem(CGUIMenuItemBase* pItem);
277 static bool AddMenuItem(CGUIMenuItemBase* pMI,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
298 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt = EInsertPosition_After);
323 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
348 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem);
377 static bool InsertMenuItemAsFirstChild(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pParentItem,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
390 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
403 static bool DeleteMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
418 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
437 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsName,
const Base::CFLString<wchar_t>& flsPath);
454 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
471 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
488 static const CResult GetMenuItemChildren(
const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
502 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
516 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
528 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
540 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
562 static bool RegisterTreeItem(
const wchar_t* pWcsName,
const wchar_t* pWcsPath,
void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
574 static bool UnregisterTreeItem(
const wchar_t* pWcsFullPath);
586 static bool UnregisterTreeItem(
void* pData);
600 static bool RenameTreeItem(
void* pData,
const wchar_t* pWcsNewName);
612 static bool IsThereTreeItem(
void* pData);
626 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
644 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
658 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem =
nullptr);
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);
724 static void GetPreInitializedPaneVisibility(
bool& bShowPaneMenu,
bool& bShowPaneLog,
bool& bShowPaneCode,
bool& bShowPaneExampleSNAP,
bool& bShowPaneColorTable,
bool& bShowPaneViewGraph,
bool& bShowPaneSheet);
738 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
752 static void SetPaneCreationOnInitialize(EPaneType ePaneType,
bool bCreate);
764 static EPaneType GetPaneCreationSetting();
772 static void BeginWaitCursor();
780 static void EndWaitCursor();
796 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
810 static const CResult LoadFontSetting();
828 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
843 static const CResult LoadFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
862 static const CResult ImportFixedViewPlacementSet(
const wchar_t* pWcsFileNameWithPath =
nullptr,
bool bOverwrite =
true,
bool bApply =
false);
876 static const CResult WriteFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
888 static const CResult LoadThemeSetting();
902 static const CResult WriteThemeSetting(
int nValue);
924 static const CResult AddPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand,
bool bRecursive,
bool bAllowToLoad);
946 static const CResult GetPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand,
bool& bRecursive,
bool& bAllowToLoad);
960 static const CResult LoadMenuItemExpandSetting();
978 static const CResult LoadMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand);
996 static const CResult WriteMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand);
1010 static const CResult LoadExampleSNAPExpandSetting();
1028 static const CResult LoadExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool& bExpand);
1046 static const CResult WriteExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool bExpand);
1060 static const CResult LoadWorkingPane();
1079 static const CResult WriteWorkingPane(
const CGUIMenuItemBase* pMenuItem,
bool bExist);
1092 static const CResult WriteWorkingPanes();
1106 static const CResult WriteLastFocusedWorkingPane();
1120 static const CResult LoadFavoriteMenuItemSetting();
1140 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem,
bool bDelete,
bool bDeleteProfile =
false);
1154 static const CResult WriteFavoriteMenuItemSetting();
1168 static const CResult LoadFavoriteExampleSNAPSetting();
1188 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP,
bool bDelete,
bool bDeleteProfile =
false);
1202 static const CResult WriteFavoriteExampleSNAPSetting();
1212 static bool IsLoadingFavoriteMenu();
1222 static bool IsLoadingMenuItemExpand();
1232 static bool IsLoadingExampleSNAPExpand();
1242 static bool IsLoadingFixedViewPlacement();
1254 static bool EnableMenuItemSNAPObject(
bool bEnable);
1264 static bool IsMenuItemSNAPObjectEnabled();
1276 static const CResult ReloadOpenedPanePropertiesAll();
1288 static CGUIMainFrame* GetMainFrame();
1305 static const CResult OpenURL(
const Base::CFLString<wchar_t>& strURL);
1322 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1350 static const CResult SetRegistrySubKeyName(
const Base::CFLString<wchar_t>& strSubKeyName);
1367 static const CResult SetAppTitle(
const Base::CFLString<wchar_t>& strAppTitle);
1380 static Base::CFLString<wchar_t> GetAppTitle();
1397 static void SetMenuItemRootPath(
const Base::CFLString<wchar_t>& strRoot);
1410 static Base::CFLString<wchar_t> GetMenuItemRootName();
1425 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1440 static ETreeItemIcon GetMenuItemRootIcon();
1451 static void EnableWriteWorkingPanesOnTerminate(
bool bEnable);
1462 static bool IsWriteWorkingPanesOnTerminateEnabled();
1479 static const CResult EnsureDirectoryExists(
const Base::CFLString<wchar_t>& strDirPath);
1494 static void SetMainFrameBackgroundImagePadding(int32_t i32PaddingX, int32_t i32PaddingY);
1509 static void GetMainFrameBackgroundImagePadding(int32_t& i32PaddingX, int32_t& i32PaddingY);
1524 static void SetMainFrameBackgroundImageIntervalSpacing(int32_t i32IntervalSpacingX, int32_t i32IntervalSpacingY);
1539 static void GetMainFrameBackgroundImageIntervalSpacing(int32_t& i32IntervalSpacingX, int32_t& i32IntervalSpacingY);
1552 static void SetMainFrameBackgroundColor(COLORREF clr);
1565 static COLORREF GetMainFrameBackgroundColor();
1578 static void SetMainFrameBackgroundImage(
const wchar_t* pWcsImagePath);
1593 static void SetMainFrameBackgroundImageLayout(EBackgroundImageLayout eMode = EBackgroundImageLayout_Tile);
1621 static void SetMainFrameAppIcon(
const wchar_t* pWcsIconPath);
1634 static void SetMainFrameMenuBarLogoImage(
const wchar_t* pWcsMenuBarLogoImagePath);
1647 static void ShowMainFrameMenuBarLogo(
bool bShow);
1660 static bool IsMainFrameMenuBarLogoVisible();
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();
1666 static bool EnterDllResource();
1667 static bool LeaveDllResource();
1669 static const Base::CFLString<wchar_t> GetModuleFileName();
1671 static bool IsSwitchingViewTab();
1672 static void SetSwitchingViewTab(
bool bSet);
1674 static HINSTANCE GetDllResource();
1676 static CGUIViewImageBase* GetCallerView(
const CFLBase* pCaller);
1678 static const CResult InitializeAfxInstanceHandle();
1680 DeclareGetClassType();
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();
1692 static CGUIManager* GetObject();
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;
1700 bool m_bInitialized;
1701 bool m_bPreTerminate;
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;
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;
1721 bool m_bEnableWriteWorkingPanes;
1723 bool m_bNowLoadingFavoriteMenu;
1724 bool m_bNowLoadingFavoriteExampleSNAP;
1725 bool m_bNowLoadingMenuItemExpand;
1726 bool m_bNowLoadingExampleSNAPExpand;
1727 bool m_bNowLoadingFixedViewPlacement;
1728 bool m_bNowSwitchingViewTab;
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;
1739 CRuntimeClass* m_pRtiOrg;
1740 DWORD m_dwMainThreadID;
1744 Base::TPoint<int32_t> m_tpMainFrameBgPadding;
1745 bool m_bMainFrameBgPaddingDirty;
1746 Base::TPoint<int32_t> m_tpMainFrameBgIntervalSpacing;
1747 bool m_bMainFrameBgIntervalSpacingDirty;
1749 COLORREF m_clrMainFrameBg;
1750 bool m_bMainFrameBgColorDirty;
1753 bool m_bMainFrameBgImageLayoutDirty;
1755 Base::CFLString<wchar_t> m_strMainFrameBgImagePath;
1756 bool m_bMainFrameBgImageDirty;
1758 Base::CFLString<wchar_t> m_strMainFrameAppIconPath;
1759 bool m_bMainFrameAppIconDirty;
1761 Base::CFLString<wchar_t> m_strMainFrameMenuBarLogoImagePath;
1762 bool m_bMainFrameMenuBarLogoImageDirty;
1763 bool m_bShowMainFrameMenuBarLogo;
1764 bool m_bMainFrameMenuBarLogoVisibilityDirty;
1766 friend class CGUIMenuItemBase;
A class on a set of fixed view positions.
Definition GUIFixedViewPlacementSet.h:30
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