FLImaging 6.12.24.4
GUIMenuItemProperty.h
1#pragma once
2
10
11#include "GUIMenuItemBase.h"
12#include "GUIPropertyMessageBox.h"
13#include "GUIStaticText.h"
14#include "DefinitionsGUI.h"
15#include <map>
16
18namespace FLImaging
19{
21 namespace GUI
22 {
23 class CGUIPaneProperties;
26 class CGUIPropertyButton;
27 class CGUIPropertyMessageBox;
28 class CGUIStaticText;
29 class CGUIDialogKernel;
30 class CGUIManager;
31 class CGUIPaneFrameWnd;
33
34 typedef std::function<const CResult(int32_t)> CGUIMenuItemRegistrationCallback;
35 #define MakeMenuItemRegistrationCallback [=](int32_t i32Index) -> const CResult
36
37 typedef std::function<const CResult(int32_t)> CGUIMenuItemUnregistrationCallback;
38 #define MakeMenuItemUnregistrationCallback [=](int32_t i32Index) -> const CResult
39
47 class FL_EXPORT CGUIMenuItemProperty : public CGUIMenuItemBase
48 {
49 public:
58
69
80
89
101 virtual const CResult PreDestroy() override;
102
110 virtual void Clear();
111
125 virtual const CResult Assign(const CGUIMenuItemProperty& rhs);
126
140 virtual const CResult Assign(const CGUIMenuItemProperty* pRhs);
141
176
211
221 virtual bool DoesFileExist() const;
222
232 virtual const CResult RemoveSettingFile() const;
233
243 virtual bool Load() override;
244
254 virtual bool IsLoaded() const;
255
269 virtual bool Load(CGUIDialogKernel* pKernel);
270
279 virtual bool Save() const override;
280
294 virtual bool Save(CGUIDialogKernel* pKernel) const;
295
305 virtual bool IsLoading() const;
306
316 virtual void EnableAutoLoad(bool bAutoLoad);
317
327 virtual bool IsAutoLoadEnabled() const;
328
338 virtual void EnableAutoSave(bool bAutoSave);
339
349 virtual bool IsAutoSaveEnabled() const;
350
360 virtual void EnableWindowCreation(bool bSet = true);
361
371 virtual bool IsWindowCreationEnabled() const;
372
382 virtual void SetActivateViewOnShowPane(bool bActivate);
383
393 virtual bool DoesActivateViewOnShowPane() const;
394
404 virtual bool OnLButtonDoubleClick();
405
415 virtual bool OnRButtonClick();
416
426 virtual bool ShowPaneWindow();
427
437 virtual bool InitialDockPaneWindow();
438
454 virtual bool AddItem(CGUIPropertyItemBase* pItem, bool bAdjustLayout = true);
455
492 virtual bool InsertItem(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemBefore, bool bAdjustLayout = true);
493
509 virtual bool RemoveItem(CGUIPropertyItemBase* pItem, bool bAdjustLayout = true);
510
545 virtual bool MoveItem(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemNewParent, EAppendPosition eAppendPosition = EAppendPosition_Back, bool bAdjustLayout = true);
546
583 virtual bool MoveItem(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const CGUIPropertyItemBase* pItemInsertPosition, bool bAdjustLayout = true);
584
621 virtual bool MoveItem(CGUIPropertyItemBase* pItem, const Base::CFLString<wchar_t>& strParentItemFullPath, EAppendPosition eAppendPosition = EAppendPosition_Back, bool bAdjustLayout = true);
622
659 virtual bool MoveItem(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const Base::CFLString<wchar_t>& strInsertPositionItemFullPath, bool bAdjustLayout = true);
660
672 virtual const CResult UpdateProperty();
673
686
698 virtual bool BuildItems(CMFCPropertyGridCtrl* pCtrl);
699
709 virtual int64_t GetItemCount() const;
710
724 virtual int64_t GetItemCountByName(const Base::CFLString<wchar_t>& strName) const;
725
739 virtual CGUIPropertyItemBase* GetItem(int64_t i64Index) const;
740
760 virtual CGUIPropertyItemBase* FindItemByName(const Base::CFLString<wchar_t>& strName, bool bNocase = true, size_t stIndex = 0) const;
761
779 virtual CGUIPropertyItemBase* FindItemByFullPath(const Base::CFLString<wchar_t>& strFullPath, bool bNocase = true) const;
780
792 virtual CGUIPropertyItemBase* FindItemByHash(uint32_t u32Hash) const;
793
812 virtual std::vector<CGUIPropertyItemBase*> FindItemsByPath(const Base::CFLString<wchar_t>& strPath, bool bNocase = true) const;
813
836 virtual const CResult FindItemsByPath(const Base::CFLString<wchar_t>& strPath, std::vector<CGUIPropertyItemBase*>& vctItems, bool bNocase = true) const;
837
849 virtual int64_t GetPropertyItemFigureCount() const;
850
865
879 virtual bool AddButton(CGUIPropertyButton* pButton);
880
898 virtual bool SetShortcut(EKeyType eKeyType, CGUIPropertyButton* pButton);
899
911 std::vector<CGUIPropertyButton*>* GetPropertyButtons() const;
912
928 CGUIPropertyButton* FindPropertyButtonByName(const Base::CFLString<wchar_t>& strBtnName);
929
942 CGUIPropertyButton* FindPropertyButtonByIndex(int64_t i64Index);
943
953 void EnableStatusMessageBox(bool bEnable);
954
965
982
995
1007 void SetMessageDisplayMode(EMessageDisplayMode eMessageDisplayMode = EMessageDisplayMode_NoScroll);
1008
1020 EMessageDisplayMode GetMessageDisplayMode() const;
1021
1033 virtual bool InitializePropertyPane(bool bLoad = true);
1034
1050 virtual bool InitializePropertyPaneStandalone(bool bLoad, CWnd* pParentWnd, CGUIDockablePaneHostFrame* pHostFrame = nullptr);
1051
1063 CGUIPaneProperties* GetPaneProperties() const;
1064
1080 virtual bool SetMenuItemRegistrationCallback(CGUIMenuItemRegistrationCallback* pFunc, bool bAutoDestroy = true);
1081
1093 virtual CGUIMenuItemRegistrationCallback* GetRegistrationCallback() const;
1094
1110 virtual bool SetMenuItemUnregistrationCallback(CGUIMenuItemUnregistrationCallback* pFunc, bool bAutoDestroy = true);
1111
1123 virtual CGUIMenuItemUnregistrationCallback* GetDestroyInstanceCallback() const;
1124
1134 virtual bool IsInitialized() const;
1135
1149 virtual bool DoesSameFullPathExist(const Base::CFLString<wchar_t>& flstrFullPath) const;
1150
1160 virtual bool CreateProperty();
1161
1174
1188 virtual CGUIMenuItemProperty* GetChildInstanceAsMenuItemProperty(int32_t i32InstanceIdx) const;
1189
1202
1204
1217 virtual CGUIMenuItemBase* CreateChildInstance(int32_t i32InstanceIdx = -1) override;
1218
1232 virtual const CResult DeleteChildInstance(int32_t i32InstanceIndex) override;
1234
1250 virtual Base::CFLString<wchar_t> GetItemValue(CGUIPropertyItemBase* pItem) const;
1251
1267 virtual const CResult SelectPopupMenuItem(EMenuItemPaneMenuTree eSelectedContextMenu);
1268
1278 void EnableOpenWindow(bool bEnable);
1279
1290
1300 virtual void SetGlobalModel(bool bSet);
1301
1311 virtual bool IsGlobalModel() const;
1312
1322 virtual void Enable(bool bEnable) override;
1323
1339 virtual void SetMinimalAuthorityLevelOnContextMenu(Base::EAuthorityLevel eAuthorityLevel, GUI::EMenuItemPaneMenuTree eMenuItemPaneMenuTree) override;
1340
1352 virtual const CResult DeletePane();
1353
1365 virtual const CResult ClosePane();
1366
1376 virtual bool IsTerminateAppRequested() const;
1377
1387 virtual void RequestTerminateApp(bool bTerminate = true);
1388
1389 virtual Base::CFLString<wchar_t> GetPaneName();
1390
1391 virtual CGUIPaneBase* GetPane() const override;
1392
1393 virtual void SetDockDone(bool bSet);
1394 virtual bool IsDockDone() const;
1395
1396 /* Create Instance*/
1397 virtual CGUIMenuItemProperty* CreateInstance(int32_t i32InstanceIdx = -1);
1398 virtual CGUIMenuItemProperty* LoadToCreateInstance(int32_t i32InstanceIdx = -1);
1399
1400 virtual void UpdateChildProperty();
1401 virtual bool OnShortKeyDown(UINT uKeyType);
1402 virtual const CResult ActivateSelectedViewOfFirstViewList();
1403
1404 CGUIPropertyMessageBox* GetMessageBox() const;
1405
1406 virtual std::vector<CGUIPropertyItemBase*>& GetItems() const;
1407 virtual std::vector<CGUIPropertyButton*>& GetButtons() const;
1408
1409 virtual bool DoesItemExistInVector(const CGUIPropertyItemBase* pItem, bool bLock = true) const;
1410
1411 protected:
1412 virtual bool InternalLoad();
1413 virtual bool InternalSave() const;
1414 virtual bool InternalRemoveItemFromHashMap(const CGUIPropertyItemBase* pItem, bool bLock);
1415 virtual bool InternalInsertItemToVector(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemNewParent, EAppendPosition eAppendPosition, bool bLock);
1416 virtual bool InternalInsertItemToVector(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const CGUIPropertyItemBase* pItemInsertPosition, bool bLock);
1417
1418 virtual bool IsSNAPNodeProperty() const;
1419
1420 protected:
1421 bool m_bDockDone;
1422 /* Property Items*/
1423 std::vector<CGUIPropertyItemBase*>& m_vctItems;
1424 std::vector<CGUIPropertyItemViewImageFigure*>& m_vctPIViewImageFigure;
1425 std::map<uint32_t, CGUIPropertyItemBase*>& m_mapItems;
1426 std::map<EKeyType, CGUIPropertyButton*>& m_mapBtnShortcuts;
1427
1428 /* Buttons*/
1429 std::vector<CGUIPropertyButton*>& m_vctButtons;
1430
1431 /* Message box*/
1432 CGUIPropertyMessageBox* m_pStaticMessage;
1433 Base::CFLString<wchar_t> m_strMessage;
1434
1435 /* Property Pane*/
1436 CGUIPaneProperties* m_pProperties;
1437 bool m_bInitialized;
1438
1439 /* Create Window */
1440 bool m_bEnableWindowCreation;
1441
1442 CGUIMenuItemRegistrationCallback* m_pRegistrationCallback;
1443 bool m_bCreateCallbackAutoDestroy;
1444
1445 /* Destroy Instance*/
1446 CGUIMenuItemUnregistrationCallback* m_pDestroyInstanceCallback;
1447 bool m_bDestroyCallbackAutoDestroy;
1448
1449 bool m_bLoaded;
1450 bool m_bLoadingNow;
1451 bool m_bAutoLoad;
1452 bool m_bAutoSave;
1453 bool m_bActivateViewOnShowPane;
1454
1455 bool m_bEnableOpenWindow;
1456 bool m_bGlobalModel;
1457
1458 friend class CGUIPaneProperties;
1459 friend class CGUITabbedPane;
1460 friend class CGUIPropertyItemBase;
1461 friend class CGUIManager;
1462 friend class CGUIPaneMenu;
1463 friend class CGUIManagerPane;
1464 friend class CGUIMainFrame;
1465 friend class CGUIPaneFrameWnd;
1466 friend class CGUIPanePropertiesShell;
1467 friend class CGUIPropertyMenuSNAPView;
1468 friend class CGUIManagerModel;
1469 };
1470 }
1471}
1472
Template type string class.
Definition FLString.h:34
FLImaging module execution result object.
Definition ResultsDef.h:1640
Definition GUIDialogKernel.h:51
GUIDockablePaneHostFrame class.
Definition GUIDockablePaneHostFrame.h:27
virtual Base::CFLString< wchar_t > GetItemValue(CGUIPropertyItemBase *pItem) const
Retrieves the value of an item.
virtual CGUIPropertyItemBase * GetItem(int64_t i64Index) const
Retrieves the item at the specified index.
virtual int64_t GetPropertyItemFigureCount() const
Retrieves the count of CGUIPropertyItemViewImageFigure items.
virtual bool IsAutoLoadEnabled() const
Checks if auto-load is enabled for the property items.
bool IsEnabledOpenWindow() const
Checks if the open window functionality is enabled.
virtual void Clear()
Clears all the added property items.
virtual const CResult Assign(const CGUIMenuItemProperty *pRhs)
Assigns properties from another CGUIMenuItemProperty object using a pointer.
EMessageDisplayMode GetMessageDisplayMode() const
Retrieves the current message display mode.
virtual bool AddItem(CGUIPropertyItemBase *pItem, bool bAdjustLayout=true)
Function to add a property item to the end of the CGUIPropertyGridCtrl.
virtual bool IsTerminateAppRequested() const
Returns whether a program termination request has been received.
virtual CGUIPropertyItemBase * FindItemByHash(uint32_t u32Hash) const
Finds an item by its hash value.
virtual void EnableAutoLoad(bool bAutoLoad)
Enables or disables the auto-load feature for property items.
CGUIPropertyButton * FindPropertyButtonByName(const Base::CFLString< wchar_t > &strBtnName)
Retrieves a pointer to the CGUIPropertyButton object that matches the given button name.
virtual const CResult UpdateProperty()
Refreshes the property grid screen. It performs the same action as calling GetPaneProperties()->GetPr...
virtual bool OnRButtonClick()
Handles the right button click event.
virtual bool Load() override
Loads the value of property items from a file.
virtual bool MoveItem(CGUIPropertyItemBase *pItem, const Base::CFLString< wchar_t > &strParentItemFullPath, EAppendPosition eAppendPosition=EAppendPosition_Back, bool bAdjustLayout=true)
Moves an existing property item under a new parent item using the parent's full path....
virtual const CResult SelectPopupMenuItem(EMenuItemPaneMenuTree eSelectedContextMenu)
Selects a popup menu item.
void EnableStatusMessageBox(bool bEnable)
Enables or disables the status message box.
virtual int64_t GetItemCount() const
Retrieves the number of property items.
virtual const CResult Assign(const CGUIMenuItemProperty &rhs)
Assigns properties from another CGUIMenuItemProperty object.
virtual const CResult DeletePane()
Deletes the property pane.
virtual bool InitializePropertyPane(bool bLoad=true)
Initializes the property pane.
virtual void EnableWindowCreation(bool bSet=true)
Sets whether the property window associated with this object should be created.
virtual bool RemoveItem(CGUIPropertyItemBase *pItem, bool bAdjustLayout=true)
Function to remove a property item from CGUIPropertyGridCtrl.
virtual bool AddButton(CGUIPropertyButton *pButton)
Adds a CGUIPropertyButton object.
virtual bool Load(CGUIDialogKernel *pKernel)
Loads kernel values into the specified kernel dialog.
virtual CGUIPropertyItemViewImageFigure * GetPropertyItemFigure(int32_t i32Index) const
Retrieves the pointer to the CGUIPropertyItemViewImageFigure at the specified index.
virtual bool IsWindowCreationEnabled() const
Returns whether the property window associated with this object should be created.
void EnableOpenWindow(bool bEnable)
Enables or disables the open window functionality.
virtual bool IsAutoSaveEnabled() const
Checks if auto-save is enabled for the property items.
CGUIMenuItemProperty()
Default constructor for CGUIMenuItemProperty.
virtual void Enable(bool bEnable) override
Enables or disables the menu item.
bool IsStatusMessageBoxEnabled() const
Checks if the status message box is enabled.
virtual CGUIMenuItemProperty * GetParentMultiInstanceMenuItemProperty() const
Returns the pointer to the parent object if the current object is a child instance.
virtual bool Save(CGUIDialogKernel *pKernel) const
Saves the values of the kernel dialog.
virtual void SetGlobalModel(bool bSet)
Sets the global model flag.
virtual std::vector< CGUIPropertyItemBase * > FindItemsByPath(const Base::CFLString< wchar_t > &strPath, bool bNocase=true) const
Retrieves items that match the specified path.
virtual const CResult DeleteChildInstance(int32_t i32InstanceIndex) override
Deletes a child instance. This function works only if this is a multi-instance parent.
virtual void SetActivateViewOnShowPane(bool bActivate)
Sets the flag to activate the view when showing the pane.
virtual int64_t GetItemCountByName(const Base::CFLString< wchar_t > &strName) const
Retrieves the count of items by name.
virtual const CResult FindItemsByPath(const Base::CFLString< wchar_t > &strPath, std::vector< CGUIPropertyItemBase * > &vctItems, bool bNocase=true) const
Retrieves items that match the specified path.
virtual bool BuildItems(CMFCPropertyGridCtrl *pCtrl)
Function to initialize the property window and add items to the property pane.
const CResult SetStatusMessage(const Base::CFLString< wchar_t > &strMessage)
Sets the status message to be displayed.
virtual const CResult UpdatePropertyAsync()
Refreshes the property grid screen. It performs the same action as calling GetPaneProperties()->GetPr...
virtual bool SetShortcut(EKeyType eKeyType, CGUIPropertyButton *pButton)
Assigns a shortcut key to perform the click action of a CGUIPropertyButton.
virtual Base::CFLString< wchar_t > GetFileName() const
Returns the INI file path associated with this object.
virtual CGUIMenuItemBase * CreateChildInstance(int32_t i32InstanceIdx=-1) override
Creates a child instance. This function works only if this is a multi-instance parent....
CGUIMenuItemProperty(const CGUIMenuItemProperty *pRhs)
Pointer-based copy constructor for CGUIMenuItemProperty.
virtual bool ShowPaneWindow()
Shows the pane window.
virtual Base::CFLString< wchar_t > GetChildInstanceIndexAsString() const
Retrieves the child instance numbers as a comma-separated string. For example, if the child instance ...
virtual ~CGUIMenuItemProperty()
Destructor for CGUIMenuItemProperty.
virtual bool DoesSameFullPathExist(const Base::CFLString< wchar_t > &flstrFullPath) const
Checks if an item with the same full path exists.
CGUIPropertyButton * FindPropertyButtonByIndex(int64_t i64Index)
Retrieves a pointer to the CGUIPropertyButton object at the specified index.
virtual bool IsInitialized() const
Checks if the menu item is initialized.
virtual bool MoveItem(CGUIPropertyItemBase *pItem, EInsertPosition eInsertPosition, const CGUIPropertyItemBase *pItemInsertPosition, bool bAdjustLayout=true)
Moves an existing property item relative to a reference item. The item's parent becomes the same as t...
virtual CGUIPropertyItemBase * FindItemByName(const Base::CFLString< wchar_t > &strName, bool bNocase=true, size_t stIndex=0) const
Finds an item by name.
virtual Base::CFLString< wchar_t > GetDirPath() const
Retrieves the directory path associated with this object.
virtual bool OnLButtonDoubleClick()
Handles the left button double-click event.
virtual const CResult RemoveSettingFile() const
Removes the configuration file (e.g., .ini file) associated with this object. The file path for the c...
void SetMessageDisplayMode(EMessageDisplayMode eMessageDisplayMode=EMessageDisplayMode_NoScroll)
Sets the message display mode.
virtual void RequestTerminateApp(bool bTerminate=true)
Requests or cancels a program termination.
virtual bool DoesFileExist() const
Checks if the settings file associated with this exists. The file path for the configuration can be o...
CGUIPaneProperties * GetPaneProperties() const
Retrieves the pane properties.
virtual bool IsGlobalModel() const
Returns whether it is a global model.
virtual const CResult ClosePane()
Closes the property pane.
std::vector< CGUIPropertyButton * > * GetPropertyButtons() const
Retrieves a pointer to the vector containing the added CGUIPropertyButton objects.
virtual void SetMinimalAuthorityLevelOnContextMenu(Base::EAuthorityLevel eAuthorityLevel, GUI::EMenuItemPaneMenuTree eMenuItemPaneMenuTree) override
Sets the minimal authority level for the context menu.
virtual bool DoesActivateViewOnShowPane() const
Checks if the view is activated when showing the pane.
virtual CGUIMenuItemProperty * GetChildInstanceAsMenuItemProperty(int32_t i32InstanceIdx) const
Retrieves a child instance by its index.
virtual bool SetMenuItemRegistrationCallback(CGUIMenuItemRegistrationCallback *pFunc, bool bAutoDestroy=true)
Sets the menu item registration callback.
virtual bool IsLoaded() const
Checks if the value of property items are loaded.
virtual bool IsLoading() const
Checks if the property is currently being loaded.
virtual CGUIPropertyItemBase * FindItemByFullPath(const Base::CFLString< wchar_t > &strFullPath, bool bNocase=true) const
Finds an item by its full path.
CGUIMenuItemProperty(const CGUIMenuItemProperty &rhs)
Copy constructor for CGUIMenuItemProperty.
virtual bool Save() const override
Saves the properties to a file.
virtual bool CreateProperty()
Creates a property.
virtual bool SetMenuItemUnregistrationCallback(CGUIMenuItemUnregistrationCallback *pFunc, bool bAutoDestroy=true)
Sets the menu item unregistration callback.
virtual bool InitializePropertyPaneStandalone(bool bLoad, CWnd *pParentWnd, CGUIDockablePaneHostFrame *pHostFrame=nullptr)
Initializes the standalone property pane (for execution in a standalone DLL environment).
virtual CGUIMenuItemUnregistrationCallback * GetDestroyInstanceCallback() const
Retrieves the destroy instance callback function.
virtual bool InsertItem(CGUIPropertyItemBase *pItem, const CGUIPropertyItemBase *pItemBefore, bool bAdjustLayout=true)
Inserts an item at the specified position. If pItem already exists, the item is not inserted; in this...
Base::CFLString< wchar_t > GetStatusMessage() const
Retrieves the current status message.
virtual bool MoveItem(CGUIPropertyItemBase *pItem, EInsertPosition eInsertPosition, const Base::CFLString< wchar_t > &strInsertPositionItemFullPath, bool bAdjustLayout=true)
Moves an existing property item relative to a reference item specified by full path....
virtual const CResult PreDestroy() override
Performs cleanup operations before the object is destroyed.
virtual bool MoveItem(CGUIPropertyItemBase *pItem, const CGUIPropertyItemBase *pItemNewParent, EAppendPosition eAppendPosition=EAppendPosition_Back, bool bAdjustLayout=true)
Moves an existing property item under a new parent item. The item is placed at the front or back amon...
virtual bool InitialDockPaneWindow()
Initializes the dock pane window.
virtual void EnableAutoSave(bool bAutoSave)
Enables or disables the auto-save feature for property items. When enabled, changes to the values of ...
virtual CGUIMenuItemRegistrationCallback * GetRegistrationCallback() const
Retrieves the registration callback function.
Property item base class.
Definition GUIPropertyItemBase.h:345
A class of Figure property.
Definition GUIPropertyItemViewImageFigure.h:31
EAuthorityLevel
Authority level.
Definition AuthorityManager.h:29
Definition D2DObject.h:12
EInsertPosition
Definition DefinitionsGUI.h:11120
EKeyType
Keyboard input value.
Definition DefinitionsGUI.h:7311
EAppendPosition
Definition DefinitionsGUI.h:11140
@ EAppendPosition_Back
Definition DefinitionsGUI.h:11145
EMenuItemPaneMenuTree
Menu items in the menu tree.
Definition DefinitionsGUI.h:9106