FLImaging 6.5.8.1
GUIManager.h
1#pragma once
2
3#include "GUIDefinitions.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;
22 class CGUIFixedViewPlacementSet;
23 class CGUIMenuItemFixedViewPlacementSet;
24 class CGUIMenuItemProperty;
25 class CGUIMenuItemBase;
26 class CGUIViewImageBase;
27 class CGUIMainFrame;
28 class CGUITreeContainer;
29
30 typedef struct sMenuItemPredefinedExpandSetting
31 {
32 sMenuItemPredefinedExpandSetting() :
33 m_strMenuItemFullPath(L""),
34 m_bExpand(false),
35 m_bRecursive(false),
36 m_bAllowToLoad(true) {}
37
38 sMenuItemPredefinedExpandSetting(
39 const Base::CFLString<wchar_t>& strMenuItemFullPath,
40 bool bExpand, bool bRecursive, bool bAllowToLoad) :
41 m_strMenuItemFullPath(strMenuItemFullPath),
42 m_bExpand(bExpand),
43 m_bRecursive(bRecursive),
44 m_bAllowToLoad(bAllowToLoad) {}
45
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) {}
51
52 ~sMenuItemPredefinedExpandSetting() {}
53 Base::CFLString<wchar_t> m_strMenuItemFullPath;
54 bool m_bExpand;
55 bool m_bRecursive;
56 bool m_bAllowToLoad;
57 }
58 SMenuItemPredefinedExpandSetting;
59
60 class FL_EXPORT CGUIManager : public Base::CFLBase
61 {
62 CGUIManager();
63 CGUIManager(const CGUIManager& rh);
64
65 public:
66 virtual ~CGUIManager();
67
68 static bool PreInitialize();
69 static bool Initialize();
70 static bool IsInitialized();
71 static bool PreTerminate();
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
1311 static void SetMenuItemRootPath(const Base::CFLString<wchar_t>& strRoot);
1312
1324 static Base::CFLString<wchar_t> GetMenuItemRootName();
1325
1339 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1340
1354 static ETreeItemIcon GetMenuItemRootIcon();
1355
1365 static void EnableWriteWorkingPanesOnTerminate(bool bEnable);
1366
1376 static bool IsWriteWorkingPanesOnTerminateEnabled();
1377
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();
1381
1382 static bool EnterDllResource();
1383 static bool LeaveDllResource();
1384
1385 static const Base::CFLString<wchar_t> GetModuleFileName();
1386
1387 static bool IsSwitchingViewTab();
1388 static void SetSwitchingViewTab(bool bSet);
1389
1390 static HINSTANCE GetDllResource();
1391
1392 static CGUIViewImageBase* GetCallerView(const CFLBase* pCaller);
1393
1394 static const CResult InitializeAfxInstanceHandle();
1395
1396 static CGUITreeContainer* GetTreeContainerMenuItem();
1397
1398 DeclareGetClassType();
1399
1400 protected:
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();
1408
1409 private:
1410 static CGUIManager* GetObject();
1411
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;
1417
1418 bool m_bInitialized;
1419 bool m_bPreTerminate;
1420
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;
1429
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;
1438
1439 bool m_bEnableWriteWorkingPanes;
1440
1441 bool m_bNowLoadingFavoriteMenu;
1442 bool m_bNowLoadingFavoriteExampleSNAP;
1443 bool m_bNowLoadingMenuItemExpand;
1444 bool m_bNowLoadingExampleSNAPExpand;
1445 bool m_bNowLoadingFixedViewPlacement;
1446 bool m_bNowSwitchingViewTab;
1447
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;
1454
1455 EPaneType m_ePaneCreationOnInitialize;
1456 CRuntimeClass* m_pRtiOrg;
1457 DWORD m_dwMainThreadID;
1458
1459 CGUITreeContainer* m_pTreeContainerMenuItem;
1460
1461 friend class CGUIMenuItemBase;
1462 };
1463 }
1464}
EPaneType
Pane 타입
Definition GUIDefinitions.h:9006