FLImaging 6.10.1.1
GUIManager.h
1#pragma once
2
3#include "DefinitionsGUI.h"
4
5#include <deque>
6#include <stack>
7#include <queue>
8#include <map>
9#include <set>
10
11namespace FLImaging
12{
13 namespace GUI
14 {
15 class CGUIPropertyMenuBase;
16 class CGUIPaneBase;
17 class CGUIPaneMenu;
18 class CGUIPaneLog;
19 class CGUIPaneCode;
20 class CGUIPaneExampleSNAP;
21 class CGUIPaneViewGraph;
23 class CGUIMenuItemFixedViewPlacementSet;
25 class CGUIMenuItemBase;
27 class CGUIMainFrame;
28
29 typedef struct sMenuItemPredefinedExpandSetting
30 {
31 sMenuItemPredefinedExpandSetting() :
32 m_strMenuItemFullPath(L""),
33 m_bExpand(false),
34 m_bRecursive(false),
35 m_bAllowToLoad(true) {}
36
37 sMenuItemPredefinedExpandSetting(
38 const Base::CFLString<wchar_t>& strMenuItemFullPath,
39 bool bExpand, bool bRecursive, bool bAllowToLoad) :
40 m_strMenuItemFullPath(strMenuItemFullPath),
41 m_bExpand(bExpand),
42 m_bRecursive(bRecursive),
43 m_bAllowToLoad(bAllowToLoad) {}
44
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) {}
50
51 ~sMenuItemPredefinedExpandSetting() {}
52 Base::CFLString<wchar_t> m_strMenuItemFullPath;
53 bool m_bExpand;
54 bool m_bRecursive;
55 bool m_bAllowToLoad;
56 }
57 SMenuItemPredefinedExpandSetting;
58
59 class FL_EXPORT CGUIManager : public Base::CFLBase
60 {
61 CGUIManager();
62 CGUIManager(const CGUIManager& rh);
63
64 public:
65 virtual ~CGUIManager();
66
67 static bool PreInitialize();
68 static bool Initialize();
69 static bool IsInitialized();
70 static bool PreTerminate();
71 static bool IsPreTerminated();
72 static bool Terminate();
73
74 static bool PeekAndPump();
75
90 static const CResult SetConfigurationPath(const Base::CFLString<wchar_t>& strPath);
91
102 static Base::CFLString<wchar_t> GetConfigurationPath();
103
118 static const CResult SetExamplesSNAPPath(const Base::CFLString<wchar_t>& strPath);
119
130 static Base::CFLString<wchar_t> GetExamplesSNAPPath();
131
140 static uint32_t GetValidResourceId();
141
154 static const CResult AddChargedResourceId(uint32_t u32ResourceID);
155
168 static const CResult ReleaseChargedResourceId(uint32_t i32ResourceID);
169
178 static int64_t GetMenuItemCount();
179
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);
202
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);
227
243 static const CResult UnregisterMenu(const Base::CFLString<wchar_t>& flsFullPath);
244
258 static bool AddMenuItem(CGUIMenuItemBase* pItem);
259
277 static bool AddMenuItem(CGUIMenuItemBase* pMI, bool bAllowMultiInstance, bool bSetGlobalModel = false);
278
298 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt = EInsertPosition_After);
299
323 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt, bool bAllowMultiInstance, bool bSetGlobalModel = false);
324
336 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
337
349 static bool DeleteMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
350
364 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
365
383 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsName, const Base::CFLString<wchar_t>& flsPath);
384
400 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
401
417 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
418
434 static const CResult GetMenuItemChildren(const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
435
448 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
449
462 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
463
474 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
475
486 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
487
508 static bool RegisterTreeItem(const wchar_t* pWcsName, const wchar_t* pWcsPath, void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
509
520 static bool UnregisterTreeItem(const wchar_t* pWcsFullPath);
521
532 static bool UnregisterTreeItem(void* pData);
533
546 static bool RenameTreeItem(void* pData, const wchar_t* pWcsNewName);
547
558 static bool IsThereTreeItem(void* pData);
559
572 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
573
590 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
591
604 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem = nullptr);
605
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);
639
670 static void GetPreInitializedPaneVisibility(bool& bShowPaneMenu, bool& bShowPaneLog, bool& bShowPaneCode, bool& bShowPaneExampleSNAP, bool& bShowPaneColorTable, bool& bShowPaneViewGraph, bool& bShowPaneSheet);
671
684 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
685
698 static void SetPaneCreationOnInitialize(EPaneType ePaneType, bool bCreate);
699
710 static EPaneType GetPaneCreationSetting();
711
718 static void BeginWaitCursor();
719
726 static void EndWaitCursor();
727
742 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
743
756 static const CResult LoadFontSetting();
757
774 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
775
789 static const CResult LoadFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
790
808 static const CResult ImportFixedViewPlacementSet(const wchar_t* pWcsFileNameWithPath = nullptr, bool bOverwrite = true, bool bApply = false);
809
822 static const CResult WriteFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
823
834 static const CResult LoadThemeSetting();
835
848 static const CResult WriteThemeSetting(int nValue);
849
870 static const CResult AddPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand, bool bRecursive, bool bAllowToLoad);
871
892 static const CResult GetPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand, bool& bRecursive, bool& bAllowToLoad);
893
906 static const CResult LoadMenuItemExpandSetting();
907
924 static const CResult LoadMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand);
925
942 static const CResult WriteMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand);
943
956 static const CResult LoadExampleSNAPExpandSetting();
957
974 static const CResult LoadExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool& bExpand);
975
992 static const CResult WriteExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool bExpand);
993
1006 static const CResult LoadWorkingPane();
1007
1025 static const CResult WriteWorkingPane(const CGUIMenuItemBase* pMenuItem, bool bExist);
1026
1038 static const CResult WriteWorkingPanes();
1039
1052 static const CResult WriteLastFocusedWorkingPane();
1053
1066 static const CResult LoadFavoriteMenuItemSetting();
1067
1086 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem, bool bDelete, bool bDeleteProfile = false);
1087
1100 static const CResult WriteFavoriteMenuItemSetting();
1101
1114 static const CResult LoadFavoriteExampleSNAPSetting();
1115
1134 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP, bool bDelete, bool bDeleteProfile = false);
1135
1148 static const CResult WriteFavoriteExampleSNAPSetting();
1149
1158 static bool IsLoadingFavoriteMenu();
1159
1168 static bool IsLoadingMenuItemExpand();
1169
1178 static bool IsLoadingExampleSNAPExpand();
1179
1188 static bool IsLoadingFixedViewPlacement();
1189
1200 static bool EnableMenuItemSNAPObject(bool bEnable);
1201
1210 static bool IsMenuItemSNAPObjectEnabled();
1211
1222 static const CResult ReloadOpenedPanePropertiesAll();
1223
1234 static CGUIMainFrame* GetMainFrame();
1235
1251 static const CResult OpenURL(const Base::CFLString<wchar_t>& strURL);
1252
1268 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1269
1285 static const CResult SetAppTitle(const Base::CFLString<wchar_t>& strAppTitle);
1286
1298 static Base::CFLString<wchar_t> GetAppTitle();
1299
1315 static void SetMenuItemRootPath(const Base::CFLString<wchar_t>& strRoot);
1316
1328 static Base::CFLString<wchar_t> GetMenuItemRootName();
1329
1343 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1344
1358 static ETreeItemIcon GetMenuItemRootIcon();
1359
1369 static void EnableWriteWorkingPanesOnTerminate(bool bEnable);
1370
1380 static bool IsWriteWorkingPanesOnTerminateEnabled();
1381
1397 static const CResult EnsureDirectoryExists(const Base::CFLString<wchar_t>& strDirPath);
1398
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();
1402
1403 static bool EnterDllResource();
1404 static bool LeaveDllResource();
1405
1406 static const Base::CFLString<wchar_t> GetModuleFileName();
1407
1408 static bool IsSwitchingViewTab();
1409 static void SetSwitchingViewTab(bool bSet);
1410
1411 static HINSTANCE GetDllResource();
1412
1413 static CGUIViewImageBase* GetCallerView(const CFLBase* pCaller);
1414
1415 static const CResult InitializeAfxInstanceHandle();
1416
1417 DeclareGetClassType();
1418
1419 protected:
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();
1427
1428 private:
1429 static CGUIManager* GetObject();
1430
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;
1436
1437 bool m_bInitialized;
1438 bool m_bPreTerminate;
1439
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;
1448
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;
1457
1458 bool m_bEnableWriteWorkingPanes;
1459
1460 bool m_bNowLoadingFavoriteMenu;
1461 bool m_bNowLoadingFavoriteExampleSNAP;
1462 bool m_bNowLoadingMenuItemExpand;
1463 bool m_bNowLoadingExampleSNAPExpand;
1464 bool m_bNowLoadingFixedViewPlacement;
1465 bool m_bNowSwitchingViewTab;
1466
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;
1474
1475 EPaneType m_ePaneCreationOnInitialize;
1476 CRuntimeClass* m_pRtiOrg;
1477 DWORD m_dwMainThreadID;
1478
1479 friend class CGUIMenuItemBase;
1480 };
1481 }
1482}
A class on a set of fixed view positions.
Definition GUIFixedViewPlacementSet.h:30
The menu item class associated with the property pane.
Definition GUIMenuItemProperty.h:48
A class of view base.
Definition GUIViewImageBase.h:43
Definition D2DObject.h:12
EPaneType
Pane type.
Definition DefinitionsGUI.h:9377