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);
336 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
349 static bool DeleteMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
364 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
383 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsName,
const Base::CFLString<wchar_t>& flsPath);
400 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
417 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
434 static const CResult GetMenuItemChildren(
const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
448 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
462 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
474 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
486 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
508 static bool RegisterTreeItem(
const wchar_t* pWcsName,
const wchar_t* pWcsPath,
void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
520 static bool UnregisterTreeItem(
const wchar_t* pWcsFullPath);
532 static bool UnregisterTreeItem(
void* pData);
546 static bool RenameTreeItem(
void* pData,
const wchar_t* pWcsNewName);
558 static bool IsThereTreeItem(
void* pData);
572 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
590 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
604 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem =
nullptr);
638 static void PreInitializePaneVisibility(
bool bShowPaneMenu =
true,
bool bShowPaneLog =
false,
bool bShowPaneCode =
false,
bool bShowPaneExampleSNAP =
true,
bool bShowPaneColorTable =
false,
bool bShowPaneViewGraph =
false,
bool bShowPaneSheet =
false);
670 static void GetPreInitializedPaneVisibility(
bool& bShowPaneMenu,
bool& bShowPaneLog,
bool& bShowPaneCode,
bool& bShowPaneExampleSNAP,
bool& bShowPaneColorTable,
bool& bShowPaneViewGraph,
bool& bShowPaneSheet);
684 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
698 static void SetPaneCreationOnInitialize(EPaneType ePaneType,
bool bCreate);
710 static EPaneType GetPaneCreationSetting();
718 static void BeginWaitCursor();
726 static void EndWaitCursor();
742 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
756 static const CResult LoadFontSetting();
774 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
789 static const CResult LoadFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
808 static const CResult ImportFixedViewPlacementSet(
const wchar_t* pWcsFileNameWithPath =
nullptr,
bool bOverwrite =
true,
bool bApply =
false);
822 static const CResult WriteFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
834 static const CResult LoadThemeSetting();
848 static const CResult WriteThemeSetting(
int nValue);
870 static const CResult AddPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand,
bool bRecursive,
bool bAllowToLoad);
892 static const CResult GetPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand,
bool& bRecursive,
bool& bAllowToLoad);
906 static const CResult LoadMenuItemExpandSetting();
924 static const CResult LoadMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand);
942 static const CResult WriteMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand);
956 static const CResult LoadExampleSNAPExpandSetting();
974 static const CResult LoadExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool& bExpand);
992 static const CResult WriteExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool bExpand);
1006 static const CResult LoadWorkingPane();
1025 static const CResult WriteWorkingPane(
const CGUIMenuItemBase* pMenuItem,
bool bExist);
1038 static const CResult WriteWorkingPanes();
1052 static const CResult WriteLastFocusedWorkingPane();
1066 static const CResult LoadFavoriteMenuItemSetting();
1086 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem,
bool bDelete,
bool bDeleteProfile =
false);
1100 static const CResult WriteFavoriteMenuItemSetting();
1114 static const CResult LoadFavoriteExampleSNAPSetting();
1134 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP,
bool bDelete,
bool bDeleteProfile =
false);
1148 static const CResult WriteFavoriteExampleSNAPSetting();
1158 static bool IsLoadingFavoriteMenu();
1168 static bool IsLoadingMenuItemExpand();
1178 static bool IsLoadingExampleSNAPExpand();
1188 static bool IsLoadingFixedViewPlacement();
1200 static bool EnableMenuItemSNAPObject(
bool bEnable);
1210 static bool IsMenuItemSNAPObjectEnabled();
1222 static const CResult ReloadOpenedPanePropertiesAll();
1234 static CGUIMainFrame* GetMainFrame();
1251 static const CResult OpenURL(
const Base::CFLString<wchar_t>& strURL);
1268 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1285 static const CResult SetAppTitle(
const Base::CFLString<wchar_t>& strAppTitle);
1298 static Base::CFLString<wchar_t> GetAppTitle();
1315 static void SetMenuItemRootPath(
const Base::CFLString<wchar_t>& strRoot);
1328 static Base::CFLString<wchar_t> GetMenuItemRootName();
1343 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1358 static ETreeItemIcon GetMenuItemRootIcon();
1369 static void EnableWriteWorkingPanesOnTerminate(
bool bEnable);
1380 static bool IsWriteWorkingPanesOnTerminateEnabled();
1397 static const CResult EnsureDirectoryExists(
const Base::CFLString<wchar_t>& strDirPath);
1399 static void RunOnMainThread(
const std::function<
void(
void*)>& lmdFunction,
void* pVResult,
const void* pVCaller);
1400 static void RunOnMainThreadPostMessage(
const std::function<
void(
void*)>& lmdFunction,
void* pVResult,
const void* pVCaller);
1401 static DWORD GetMainThreadID();
1403 static bool EnterDllResource();
1404 static bool LeaveDllResource();
1406 static const Base::CFLString<wchar_t> GetModuleFileName();
1408 static bool IsSwitchingViewTab();
1409 static void SetSwitchingViewTab(
bool bSet);
1411 static HINSTANCE GetDllResource();
1413 static CGUIViewImageBase* GetCallerView(
const CFLBase* pCaller);
1415 static const CResult InitializeAfxInstanceHandle();
1417 DeclareGetClassType();
1420 virtual void OnReceiveBroadcast(
const Base::CBroadcastMessage* pMessage)
override;
1421 static bool PumpMessage();
1422 static bool OnIdle(LONG lCount);
1423 static const CResult InternalSetMenuItemName(CGUIMenuItemBase* pItem,
const Base::CFLString<wchar_t>& strName);
1424 static const CResult InternalSetMenuItemPath(CGUIMenuItemBase* pItem,
const Base::CFLString<wchar_t>& strPath);
1425 static const CResult InternalInitializeTreeContainerMenuItem();
1426 static const CResult InternalInitializeTreeContainerMenuItemExampleSNAP();
1429 static CGUIManager* GetObject();
1431 Base::CFLString<wchar_t> m_strConfigurationPath;
1432 Base::CFLString<wchar_t> m_strExamplesSNAPPath;
1433 Base::CFLString<wchar_t> m_strAppTitle;
1434 Base::CFLString<wchar_t> m_strRoot;
1435 ETreeItemIcon m_eRootIcon;
1437 bool m_bInitialized;
1438 bool m_bPreTerminate;
1440 bool m_bPreInitPaneMenuVisibility;
1441 bool m_bPreInitPaneLogVisibility;
1442 bool m_bPreInitPaneCodeVisibility;
1443 bool m_bPreInitPaneExampleSNAPVisibility;
1444 bool m_bPreInitPaneColorTableVisibility;
1445 bool m_bPreInitPaneViewGraphVisibility;
1446 bool m_bPreInitPaneSheetVisibility;
1447 bool m_bEnableMenuItemSNAPObject;
1449 bool m_bLoadFixedViewPlacementSetting;
1450 bool m_bLoadThemeSetting;
1451 bool m_bLoadWorkingPane;
1452 bool m_bLoadFavoriteMenuItemSetting;
1453 bool m_bLoadMenuItemExpandSetting;
1454 bool m_bLoadFavoriteExampleSNAPSetting;
1455 bool m_bLoadExampleSNAPExpandSetting;
1456 bool m_bLoadFontSetting;
1458 bool m_bEnableWriteWorkingPanes;
1460 bool m_bNowLoadingFavoriteMenu;
1461 bool m_bNowLoadingFavoriteExampleSNAP;
1462 bool m_bNowLoadingMenuItemExpand;
1463 bool m_bNowLoadingExampleSNAPExpand;
1464 bool m_bNowLoadingFixedViewPlacement;
1465 bool m_bNowSwitchingViewTab;
1467 std::stack<HINSTANCE>& m_stackResources;
1468 std::deque<CGUIMenuItemBase*>& m_deqMenuItems;
1469 std::unordered_map<uint32_t, CGUIMenuItemBase*>& m_mapFullPathHashAndMenuItems;
1470 std::map<uint32_t, bool>& m_mapResourceIdChargedStatus;
1471 std::vector<CGUIMenuItemFixedViewPlacementSet*>& m_vctMenuItemFvpSet;
1472 std::set<Base::CFLString<wchar_t>>& m_setPaneName;
1473 std::vector<SMenuItemPredefinedExpandSetting*>& m_vctMenuItemPredefinedExpandSetting;
1476 CRuntimeClass* m_pRtiOrg;
1477 DWORD m_dwMainThreadID;
1479 friend class CGUIMenuItemBase;
A class on a set of fixed view positions.
Definition GUIFixedViewPlacementSet.h:30
A class of view base.
Definition GUIViewImageBase.h:43
Definition D2DObject.h:12
EPaneType
Pane type.
Definition DefinitionsGUI.h:9377