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 Terminate();
73 static bool PeekAndPump();
89 static const CResult SetConfigurationPath(
const Base::CFLString<wchar_t>& strPath);
101 static Base::CFLString<wchar_t> GetConfigurationPath();
117 static const CResult SetExamplesSNAPPath(
const Base::CFLString<wchar_t>& strPath);
129 static Base::CFLString<wchar_t> GetExamplesSNAPPath();
139 static uint32_t GetValidResourceId();
153 static const CResult AddChargedResourceId(uint32_t u32ResourceID);
167 static const CResult ReleaseChargedResourceId(uint32_t i32ResourceID);
177 static int64_t GetMenuItemCount();
200 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);
225 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);
242 static const CResult UnregisterMenu(
const Base::CFLString<wchar_t>& flsFullPath);
257 static bool AddMenuItem(CGUIMenuItemBase* pItem);
276 static bool AddMenuItem(CGUIMenuItemBase* pMI,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
297 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt = EInsertPosition_After);
322 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt,
bool bAllowMultiInstance,
bool bSetGlobalModel =
false);
335 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
348 static bool DeleteMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
363 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
382 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsName,
const Base::CFLString<wchar_t>& flsPath);
399 static CGUIMenuItemBase* GetMenuItem(
const Base::CFLString<wchar_t>& flsFullPath);
416 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
433 static const CResult GetMenuItemChildren(
const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
447 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
461 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
473 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
485 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
507 static bool RegisterTreeItem(
const wchar_t* pWcsName,
const wchar_t* pWcsPath,
void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
519 static bool UnregisterTreeItem(
const wchar_t* pWcsFullPath);
531 static bool UnregisterTreeItem(
void* pData);
545 static bool RenameTreeItem(
void* pData,
const wchar_t* pWcsNewName);
557 static bool IsThereTreeItem(
void* pData);
571 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
589 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
603 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem =
nullptr);
637 static void PreInitializePaneVisibility(
bool bShowPaneMenu =
true,
bool bShowPaneLog =
false,
bool bShowPaneCode =
false,
bool bShowPaneExampleSNAP =
true,
bool bShowPaneColorTable =
false,
bool bShowPaneViewGraph =
false,
bool bShowPaneSheet =
false);
669 static void GetPreInitializedPaneVisibility(
bool& bShowPaneMenu,
bool& bShowPaneLog,
bool& bShowPaneCode,
bool& bShowPaneExampleSNAP,
bool& bShowPaneColorTable,
bool& bShowPaneViewGraph,
bool& bShowPaneSheet);
683 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
697 static void SetPaneCreationOnInitialize(EPaneType ePaneType,
bool bCreate);
709 static EPaneType GetPaneCreationSetting();
717 static void BeginWaitCursor();
725 static void EndWaitCursor();
741 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
755 static const CResult LoadFontSetting();
773 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
788 static const CResult LoadFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
807 static const CResult ImportFixedViewPlacementSet(
const wchar_t* pWcsFileNameWithPath =
nullptr,
bool bOverwrite =
true,
bool bApply =
false);
821 static const CResult WriteFixedViewPlacementSetting(
const wchar_t* pWcsFileNameWithPath =
nullptr);
833 static const CResult LoadThemeSetting();
847 static const CResult WriteThemeSetting(
int nValue);
869 static const CResult AddPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand,
bool bRecursive,
bool bAllowToLoad);
891 static const CResult GetPredefinedMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand,
bool& bRecursive,
bool& bAllowToLoad);
905 static const CResult LoadMenuItemExpandSetting();
923 static const CResult LoadMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool& bExpand);
941 static const CResult WriteMenuItemExpandSetting(
const Base::CFLString<wchar_t>& strMenuItemFullPath,
bool bExpand);
955 static const CResult LoadExampleSNAPExpandSetting();
973 static const CResult LoadExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool& bExpand);
991 static const CResult WriteExampleSNAPExpandSetting(
const Base::CFLString<wchar_t>& strExampleSNAPFullPath,
bool bExpand);
1005 static const CResult LoadWorkingPane();
1024 static const CResult WriteWorkingPane(
const CGUIMenuItemBase* pMenuItem,
bool bExist);
1037 static const CResult WriteWorkingPanes();
1051 static const CResult WriteLastFocusedWorkingPane();
1065 static const CResult LoadFavoriteMenuItemSetting();
1085 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem,
bool bDelete,
bool bDeleteProfile =
false);
1099 static const CResult WriteFavoriteMenuItemSetting();
1113 static const CResult LoadFavoriteExampleSNAPSetting();
1133 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP,
bool bDelete,
bool bDeleteProfile =
false);
1147 static const CResult WriteFavoriteExampleSNAPSetting();
1157 static bool IsLoadingFavoriteMenu();
1167 static bool IsLoadingMenuItemExpand();
1177 static bool IsLoadingExampleSNAPExpand();
1187 static bool IsLoadingFixedViewPlacement();
1199 static bool EnableMenuItemSNAPObject(
bool bEnable);
1209 static bool IsMenuItemSNAPObjectEnabled();
1221 static const CResult ReloadOpenedPanePropertiesAll();
1233 static CGUIMainFrame* GetMainFrame();
1250 static const CResult OpenURL(
const Base::CFLString<wchar_t>& strURL);
1267 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1284 static const CResult SetAppTitle(
const Base::CFLString<wchar_t>& strAppTitle);
1297 static Base::CFLString<wchar_t> GetAppTitle();
1312 static void SetMenuItemRootPath(
const Base::CFLString<wchar_t>& strRoot);
1325 static Base::CFLString<wchar_t> GetMenuItemRootName();
1340 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1355 static ETreeItemIcon GetMenuItemRootIcon();
1366 static void EnableWriteWorkingPanesOnTerminate(
bool bEnable);
1377 static bool IsWriteWorkingPanesOnTerminateEnabled();
1394 static const CResult EnsureDirectoryExists(
const Base::CFLString<wchar_t>& strDirPath);
1396 static void RunOnMainThread(
const std::function<
void(
void*)>& lmdFunction,
void* pVResult,
const void* pVCaller);
1397 static void RunOnMainThreadPostMessage(
const std::function<
void(
void*)>& lmdFunction,
void* pVResult,
const void* pVCaller);
1398 static DWORD GetMainThreadID();
1400 static bool EnterDllResource();
1401 static bool LeaveDllResource();
1403 static const Base::CFLString<wchar_t> GetModuleFileName();
1405 static bool IsSwitchingViewTab();
1406 static void SetSwitchingViewTab(
bool bSet);
1408 static HINSTANCE GetDllResource();
1410 static CGUIViewImageBase* GetCallerView(
const CFLBase* pCaller);
1412 static const CResult InitializeAfxInstanceHandle();
1414 DeclareGetClassType();
1417 virtual void OnReceiveBroadcast(
const Base::CBroadcastMessage* pMessage)
override;
1418 static bool PumpMessage();
1419 static bool OnIdle(LONG lCount);
1420 static const CResult InternalSetMenuItemName(CGUIMenuItemBase* pItem,
const Base::CFLString<wchar_t>& strName);
1421 static const CResult InternalSetMenuItemPath(CGUIMenuItemBase* pItem,
const Base::CFLString<wchar_t>& strPath);
1422 static const CResult InternalInitializeTreeContainerMenuItem();
1423 static const CResult InternalInitializeTreeContainerMenuItemExampleSNAP();
1426 static CGUIManager* GetObject();
1428 Base::CFLString<wchar_t> m_strConfigurationPath;
1429 Base::CFLString<wchar_t> m_strExamplesSNAPPath;
1430 Base::CFLString<wchar_t> m_strAppTitle;
1431 Base::CFLString<wchar_t> m_strRoot;
1432 ETreeItemIcon m_eRootIcon;
1434 bool m_bInitialized;
1435 bool m_bPreTerminate;
1437 bool m_bPreInitPaneMenuVisibility;
1438 bool m_bPreInitPaneLogVisibility;
1439 bool m_bPreInitPaneCodeVisibility;
1440 bool m_bPreInitPaneExampleSNAPVisibility;
1441 bool m_bPreInitPaneColorTableVisibility;
1442 bool m_bPreInitPaneViewGraphVisibility;
1443 bool m_bPreInitPaneSheetVisibility;
1444 bool m_bEnableMenuItemSNAPObject;
1446 bool m_bLoadFixedViewPlacementSetting;
1447 bool m_bLoadThemeSetting;
1448 bool m_bLoadWorkingPane;
1449 bool m_bLoadFavoriteMenuItemSetting;
1450 bool m_bLoadMenuItemExpandSetting;
1451 bool m_bLoadFavoriteExampleSNAPSetting;
1452 bool m_bLoadExampleSNAPExpandSetting;
1453 bool m_bLoadFontSetting;
1455 bool m_bEnableWriteWorkingPanes;
1457 bool m_bNowLoadingFavoriteMenu;
1458 bool m_bNowLoadingFavoriteExampleSNAP;
1459 bool m_bNowLoadingMenuItemExpand;
1460 bool m_bNowLoadingExampleSNAPExpand;
1461 bool m_bNowLoadingFixedViewPlacement;
1462 bool m_bNowSwitchingViewTab;
1464 std::stack<HINSTANCE>& m_stackResources;
1465 std::deque<CGUIMenuItemBase*>& m_deqMenuItems;
1466 std::unordered_map<uint32_t, CGUIMenuItemBase*>& m_mapFullPathHashAndMenuItems;
1467 std::map<uint32_t, bool>& m_mapResourceIdChargedStatus;
1468 std::vector<CGUIMenuItemFixedViewPlacementSet*>& m_vctMenuItemFvpSet;
1469 std::set<Base::CFLString<wchar_t>>& m_setPaneName;
1470 std::vector<SMenuItemPredefinedExpandSetting*>& m_vctMenuItemPredefinedExpandSetting;
1473 CRuntimeClass* m_pRtiOrg;
1474 DWORD m_dwMainThreadID;
1476 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