FLImaging 6.8.12.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 Terminate();
72
73 static bool PeekAndPump();
74
89 static const CResult SetConfigurationPath(const Base::CFLString<wchar_t>& strPath);
90
101 static Base::CFLString<wchar_t> GetConfigurationPath();
102
117 static const CResult SetExamplesSNAPPath(const Base::CFLString<wchar_t>& strPath);
118
129 static Base::CFLString<wchar_t> GetExamplesSNAPPath();
130
139 static uint32_t GetValidResourceId();
140
153 static const CResult AddChargedResourceId(uint32_t u32ResourceID);
154
167 static const CResult ReleaseChargedResourceId(uint32_t i32ResourceID);
168
177 static int64_t GetMenuItemCount();
178
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);
201
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);
226
242 static const CResult UnregisterMenu(const Base::CFLString<wchar_t>& flsFullPath);
243
257 static bool AddMenuItem(CGUIMenuItemBase* pItem);
258
276 static bool AddMenuItem(CGUIMenuItemBase* pMI, bool bAllowMultiInstance, bool bSetGlobalModel = false);
277
297 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt = EInsertPosition_After);
298
322 static bool InsertMenuItem(CGUIMenuItemBase* pItem, CGUIMenuItemBase* pItemPosition, EInsertPosition eInsertAt, bool bAllowMultiInstance, bool bSetGlobalModel = false);
323
335 static bool DeleteMenuItem(CGUIMenuItemBase* pItem);
336
348 static bool DeleteMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
349
363 static CGUIMenuItemBase* GetMenuItem(int64_t i64Index);
364
382 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsName, const Base::CFLString<wchar_t>& flsPath);
383
399 static CGUIMenuItemBase* GetMenuItem(const Base::CFLString<wchar_t>& flsFullPath);
400
416 static const CResult GetMenuItemChildren(CGUIMenuItemBase* pItem, std::vector<CGUIMenuItemBase*>& vctChildItems);
417
433 static const CResult GetMenuItemChildren(const Base::CFLString<wchar_t>& flsPath, std::vector<CGUIMenuItemBase*>& vctChildItems);
434
447 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(Base::CFLString<wchar_t> flstrName);
448
461 static CGUIMenuItemFixedViewPlacementSet* GetMenuItemFixedViewPlacementSet(int64_t i64FvpSetIndex);
462
473 static void PushBackFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
474
485 static void EraseFixedViewPlacementSet(CGUIMenuItemFixedViewPlacementSet* pFvpSet);
486
507 static bool RegisterTreeItem(const wchar_t* pWcsName, const wchar_t* pWcsPath, void* pData, ETreeItemIcon eIcon = ETreeItemIcon_DocEmpty);
508
519 static bool UnregisterTreeItem(const wchar_t* pWcsFullPath);
520
531 static bool UnregisterTreeItem(void* pData);
532
545 static bool RenameTreeItem(void* pData, const wchar_t* pWcsNewName);
546
557 static bool IsThereTreeItem(void* pData);
558
571 static bool SortTreeItem(ESortOrder eSortOrder = ESortOrder_Ascending);
572
589 static bool SortTreeItem(CGUIMenuItemBase* pItem, ESortOrder eSortOrder = ESortOrder_Ascending);
590
603 static bool CancelSortTreeItem(CGUIMenuItemBase* pItem = nullptr);
604
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);
638
669 static void GetPreInitializedPaneVisibility(bool& bShowPaneMenu, bool& bShowPaneLog, bool& bShowPaneCode, bool& bShowPaneExampleSNAP, bool& bShowPaneColorTable, bool& bShowPaneViewGraph, bool& bShowPaneSheet);
670
683 static void ModifyPaneCreationOnInitialize(EPaneType ePaneTypeRemove, EPaneType ePaneTypeAdd = EPaneType_MainPane);
684
697 static void SetPaneCreationOnInitialize(EPaneType ePaneType, bool bCreate);
698
709 static EPaneType GetPaneCreationSetting();
710
717 static void BeginWaitCursor();
718
725 static void EndWaitCursor();
726
741 static const CResult AddFontSetting(Base::CFLString<wchar_t> strPaneClassName);
742
755 static const CResult LoadFontSetting();
756
773 static const CResult WriteFontSetting(Base::CFLString<wchar_t> strPaneClassName, CFont* pFont);
774
788 static const CResult LoadFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
789
807 static const CResult ImportFixedViewPlacementSet(const wchar_t* pWcsFileNameWithPath = nullptr, bool bOverwrite = true, bool bApply = false);
808
821 static const CResult WriteFixedViewPlacementSetting(const wchar_t* pWcsFileNameWithPath = nullptr);
822
833 static const CResult LoadThemeSetting();
834
847 static const CResult WriteThemeSetting(int nValue);
848
869 static const CResult AddPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand, bool bRecursive, bool bAllowToLoad);
870
891 static const CResult GetPredefinedMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand, bool& bRecursive, bool& bAllowToLoad);
892
905 static const CResult LoadMenuItemExpandSetting();
906
923 static const CResult LoadMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool& bExpand);
924
941 static const CResult WriteMenuItemExpandSetting(const Base::CFLString<wchar_t>& strMenuItemFullPath, bool bExpand);
942
955 static const CResult LoadExampleSNAPExpandSetting();
956
973 static const CResult LoadExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool& bExpand);
974
991 static const CResult WriteExampleSNAPExpandSetting(const Base::CFLString<wchar_t>& strExampleSNAPFullPath, bool bExpand);
992
1005 static const CResult LoadWorkingPane();
1006
1024 static const CResult WriteWorkingPane(const CGUIMenuItemBase* pMenuItem, bool bExist);
1025
1037 static const CResult WriteWorkingPanes();
1038
1051 static const CResult WriteLastFocusedWorkingPane();
1052
1065 static const CResult LoadFavoriteMenuItemSetting();
1066
1085 static const CResult WriteFavoriteMenuItemSetting(CGUIMenuItemBase* pMenuItem, bool bDelete, bool bDeleteProfile = false);
1086
1099 static const CResult WriteFavoriteMenuItemSetting();
1100
1113 static const CResult LoadFavoriteExampleSNAPSetting();
1114
1133 static const CResult WriteFavoriteExampleSNAPSetting(CGUIMenuItemBase* pExampleSNAP, bool bDelete, bool bDeleteProfile = false);
1134
1147 static const CResult WriteFavoriteExampleSNAPSetting();
1148
1157 static bool IsLoadingFavoriteMenu();
1158
1167 static bool IsLoadingMenuItemExpand();
1168
1177 static bool IsLoadingExampleSNAPExpand();
1178
1187 static bool IsLoadingFixedViewPlacement();
1188
1199 static bool EnableMenuItemSNAPObject(bool bEnable);
1200
1209 static bool IsMenuItemSNAPObjectEnabled();
1210
1221 static const CResult ReloadOpenedPanePropertiesAll();
1222
1233 static CGUIMainFrame* GetMainFrame();
1234
1250 static const CResult OpenURL(const Base::CFLString<wchar_t>& strURL);
1251
1267 static const CResult GetMenuItemPropertyOfVisiblePane(std::set<CGUIMenuItemProperty*>& setPMenuItemProperty);
1268
1284 static const CResult SetAppTitle(const Base::CFLString<wchar_t>& strAppTitle);
1285
1297 static Base::CFLString<wchar_t> GetAppTitle();
1298
1312 static void SetMenuItemRootPath(const Base::CFLString<wchar_t>& strRoot);
1313
1325 static Base::CFLString<wchar_t> GetMenuItemRootName();
1326
1340 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1341
1355 static ETreeItemIcon GetMenuItemRootIcon();
1356
1366 static void EnableWriteWorkingPanesOnTerminate(bool bEnable);
1367
1377 static bool IsWriteWorkingPanesOnTerminateEnabled();
1378
1394 static const CResult EnsureDirectoryExists(const Base::CFLString<wchar_t>& strDirPath);
1395
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();
1399
1400 static bool EnterDllResource();
1401 static bool LeaveDllResource();
1402
1403 static const Base::CFLString<wchar_t> GetModuleFileName();
1404
1405 static bool IsSwitchingViewTab();
1406 static void SetSwitchingViewTab(bool bSet);
1407
1408 static HINSTANCE GetDllResource();
1409
1410 static CGUIViewImageBase* GetCallerView(const CFLBase* pCaller);
1411
1412 static const CResult InitializeAfxInstanceHandle();
1413
1414 DeclareGetClassType();
1415
1416 protected:
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();
1424
1425 private:
1426 static CGUIManager* GetObject();
1427
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;
1433
1434 bool m_bInitialized;
1435 bool m_bPreTerminate;
1436
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;
1445
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;
1454
1455 bool m_bEnableWriteWorkingPanes;
1456
1457 bool m_bNowLoadingFavoriteMenu;
1458 bool m_bNowLoadingFavoriteExampleSNAP;
1459 bool m_bNowLoadingMenuItemExpand;
1460 bool m_bNowLoadingExampleSNAPExpand;
1461 bool m_bNowLoadingFixedViewPlacement;
1462 bool m_bNowSwitchingViewTab;
1463
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;
1471
1472 EPaneType m_ePaneCreationOnInitialize;
1473 CRuntimeClass* m_pRtiOrg;
1474 DWORD m_dwMainThreadID;
1475
1476 friend class CGUIMenuItemBase;
1477 };
1478 }
1479}
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