FLImaging 6.10.23.2
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
1296 static const CResult SetRegistrySubKeyName(const Base::CFLString<wchar_t>& strSubKeyName);
1297
1313 static const CResult SetAppTitle(const Base::CFLString<wchar_t>& strAppTitle);
1314
1326 static Base::CFLString<wchar_t> GetAppTitle();
1327
1343 static void SetMenuItemRootPath(const Base::CFLString<wchar_t>& strRoot);
1344
1356 static Base::CFLString<wchar_t> GetMenuItemRootName();
1357
1371 static void SetMenuItemRootIcon(ETreeItemIcon eRootIcon = ETreeItemIcon_FLImaging);
1372
1386 static ETreeItemIcon GetMenuItemRootIcon();
1387
1397 static void EnableWriteWorkingPanesOnTerminate(bool bEnable);
1398
1408 static bool IsWriteWorkingPanesOnTerminateEnabled();
1409
1425 static const CResult EnsureDirectoryExists(const Base::CFLString<wchar_t>& strDirPath);
1426
1427 static void RunOnMainThread(const std::function<void(void*)>& lmdFunction, void* pVResult, const void* pVCaller);
1428 static void RunOnMainThreadPostMessage(const std::function<void(void*)>& lmdFunction, void* pVResult, const void* pVCaller);
1429 static DWORD GetMainThreadID();
1430
1431 static bool EnterDllResource();
1432 static bool LeaveDllResource();
1433
1434 static const Base::CFLString<wchar_t> GetModuleFileName();
1435
1436 static bool IsSwitchingViewTab();
1437 static void SetSwitchingViewTab(bool bSet);
1438
1439 static HINSTANCE GetDllResource();
1440
1441 static CGUIViewImageBase* GetCallerView(const CFLBase* pCaller);
1442
1443 static const CResult InitializeAfxInstanceHandle();
1444
1445 DeclareGetClassType();
1446
1447 protected:
1448 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
1449 static bool PumpMessage();
1450 static bool OnIdle(LONG lCount);
1451 static const CResult InternalSetMenuItemName(CGUIMenuItemBase* pItem, const Base::CFLString<wchar_t>& strName);
1452 static const CResult InternalSetMenuItemPath(CGUIMenuItemBase* pItem, const Base::CFLString<wchar_t>& strPath);
1453 static const CResult InternalInitializeTreeContainerMenuItem();
1454 static const CResult InternalInitializeTreeContainerMenuItemExampleSNAP();
1455
1456 private:
1457 static CGUIManager* GetObject();
1458
1459 Base::CFLString<wchar_t> m_strConfigurationPath;
1460 Base::CFLString<wchar_t> m_strExamplesSNAPPath;
1461 Base::CFLString<wchar_t> m_strAppTitle;
1462 Base::CFLString<wchar_t> m_strRoot;
1463 ETreeItemIcon m_eRootIcon;
1464
1465 bool m_bInitialized;
1466 bool m_bPreTerminate;
1467
1468 bool m_bPreInitPaneMenuVisibility;
1469 bool m_bPreInitPaneLogVisibility;
1470 bool m_bPreInitPaneCodeVisibility;
1471 bool m_bPreInitPaneExampleSNAPVisibility;
1472 bool m_bPreInitPaneColorTableVisibility;
1473 bool m_bPreInitPaneViewGraphVisibility;
1474 bool m_bPreInitPaneSheetVisibility;
1475 bool m_bEnableMenuItemSNAPObject;
1476
1477 bool m_bLoadFixedViewPlacementSetting;
1478 bool m_bLoadThemeSetting;
1479 bool m_bLoadWorkingPane;
1480 bool m_bLoadFavoriteMenuItemSetting;
1481 bool m_bLoadMenuItemExpandSetting;
1482 bool m_bLoadFavoriteExampleSNAPSetting;
1483 bool m_bLoadExampleSNAPExpandSetting;
1484 bool m_bLoadFontSetting;
1485
1486 bool m_bEnableWriteWorkingPanes;
1487
1488 bool m_bNowLoadingFavoriteMenu;
1489 bool m_bNowLoadingFavoriteExampleSNAP;
1490 bool m_bNowLoadingMenuItemExpand;
1491 bool m_bNowLoadingExampleSNAPExpand;
1492 bool m_bNowLoadingFixedViewPlacement;
1493 bool m_bNowSwitchingViewTab;
1494
1495 std::stack<HINSTANCE>& m_stackResources;
1496 std::deque<CGUIMenuItemBase*>& m_deqMenuItems;
1497 std::unordered_map<uint32_t, CGUIMenuItemBase*>& m_mapFullPathHashAndMenuItems;
1498 std::map<uint32_t, bool>& m_mapResourceIdChargedStatus;
1499 std::vector<CGUIMenuItemFixedViewPlacementSet*>& m_vctMenuItemFvpSet;
1500 std::set<Base::CFLString<wchar_t>>& m_setPaneName;
1501 std::vector<SMenuItemPredefinedExpandSetting*>& m_vctMenuItemPredefinedExpandSetting;
1502
1503 EPaneType m_ePaneCreationOnInitialize;
1504 CRuntimeClass* m_pRtiOrg;
1505 DWORD m_dwMainThreadID;
1506
1507 friend class CGUIMenuItemBase;
1508 };
1509 }
1510}
다수의 고정 뷰 위치의 집합에 관한 클래스
Definition GUIFixedViewPlacementSet.h:30
프로퍼티 창에 연결된 메뉴 아이템 클래스
Definition GUIMenuItemProperty.h:48
뷰의 기반 클래스
Definition GUIViewImageBase.h:43
Definition D2DObject.h:12
EPaneType
Pane 타입
Definition DefinitionsGUI.h:9386