3#include "GUIDefinitions.h"
15 class CGUIPropertyMenuBase;
20 class CGUIPaneExampleSNAP;
21 class CGUIPaneViewGraph;
22 class CGUIFixedViewPlacementSet;
23 class CGUIMenuItemFixedViewPlacementSet;
24 class CGUIMenuItemProperty;
25 class CGUIMenuItemBase;
26 class CGUIViewImageBase;
28 class CGUITreeContainer;
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 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();
1311 static void SetMenuItemRootPath(
const Base::CFLString<wchar_t>& strRoot);
1324 static Base::CFLString<wchar_t> GetMenuItemRootName();
1339 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1354 static ETreeItemIcon GetMenuItemRootIcon();
1365 static void EnableWriteWorkingPanesOnTerminate(
bool bEnable);
1376 static bool IsWriteWorkingPanesOnTerminateEnabled();
1378 static void RunOnMainThread(
const std::function<
void(
void*)>& lmdFunction,
void* pVResult,
const void* pVCaller);
1379 static void RunOnMainThreadPostMessage(
const std::function<
void(
void*)>& lmdFunction,
void* pVResult,
const void* pVCaller);
1380 static DWORD GetMainThreadID();
1382 static bool EnterDllResource();
1383 static bool LeaveDllResource();
1385 static const Base::CFLString<wchar_t> GetModuleFileName();
1387 static bool IsSwitchingViewTab();
1388 static void SetSwitchingViewTab(
bool bSet);
1390 static HINSTANCE GetDllResource();
1392 static CGUIViewImageBase* GetCallerView(
const CFLBase* pCaller);
1394 static const CResult InitializeAfxInstanceHandle();
1396 static CGUITreeContainer* GetTreeContainerMenuItem();
1398 DeclareGetClassType();
1401 virtual void OnReceiveBroadcast(
const Base::CBroadcastMessage* pMessage)
override;
1402 static bool PumpMessage();
1403 static bool OnIdle(LONG lCount);
1404 static const CResult InternalSetMenuItemName(CGUIMenuItemBase* pItem,
const Base::CFLString<wchar_t>& strName);
1405 static const CResult InternalSetMenuItemPath(CGUIMenuItemBase* pItem,
const Base::CFLString<wchar_t>& strPath);
1406 static const CResult InternalInitializeTreeContainerMenuItem();
1407 static const CResult InternalInitializeTreeContainerMenuItemExampleSNAP();
1410 static CGUIManager* GetObject();
1412 Base::CFLString<wchar_t> m_strConfigurationPath;
1413 Base::CFLString<wchar_t> m_strExamplesSNAPPath;
1414 Base::CFLString<wchar_t> m_strAppTitle;
1415 Base::CFLString<wchar_t> m_strRoot;
1416 ETreeItemIcon m_eRootIcon;
1418 bool m_bInitialized;
1419 bool m_bPreTerminate;
1421 bool m_bPreInitPaneMenuVisibility;
1422 bool m_bPreInitPaneLogVisibility;
1423 bool m_bPreInitPaneCodeVisibility;
1424 bool m_bPreInitPaneExampleSNAPVisibility;
1425 bool m_bPreInitPaneColorTableVisibility;
1426 bool m_bPreInitPaneViewGraphVisibility;
1427 bool m_bPreInitPaneSheetVisibility;
1428 bool m_bEnableMenuItemSNAPObject;
1430 bool m_bLoadFixedViewPlacementSetting;
1431 bool m_bLoadThemeSetting;
1432 bool m_bLoadWorkingPane;
1433 bool m_bLoadFavoriteMenuItemSetting;
1434 bool m_bLoadMenuItemExpandSetting;
1435 bool m_bLoadFavoriteExampleSNAPSetting;
1436 bool m_bLoadExampleSNAPExpandSetting;
1437 bool m_bLoadFontSetting;
1439 bool m_bEnableWriteWorkingPanes;
1441 bool m_bNowLoadingFavoriteMenu;
1442 bool m_bNowLoadingFavoriteExampleSNAP;
1443 bool m_bNowLoadingMenuItemExpand;
1444 bool m_bNowLoadingExampleSNAPExpand;
1445 bool m_bNowLoadingFixedViewPlacement;
1446 bool m_bNowSwitchingViewTab;
1448 std::stack<HINSTANCE>& m_stackResources;
1449 std::deque<CGUIMenuItemBase*>& m_deqMenuItems;
1450 std::map<uint32_t, bool>& m_mapResourceIdChargedStatus;
1451 std::vector<CGUIMenuItemFixedViewPlacementSet*>& m_vctMenuItemFvpSet;
1452 std::set<Base::CFLString<wchar_t>>& m_setPaneName;
1453 std::vector<SMenuItemPredefinedExpandSetting*>& m_vctMenuItemPredefinedExpandSetting;
1456 CRuntimeClass* m_pRtiOrg;
1457 DWORD m_dwMainThreadID;
1459 CGUITreeContainer* m_pTreeContainerMenuItem;
1461 friend class CGUIMenuItemBase;
EPaneType
Pane type.
Definition GUIDefinitions.h:9006