FLImaging 7.3.20.1
GUIMenuItemProperty.h
1#pragma once
2
10
11#include "GUIMenuItemBase.h"
12#include "GUIPropertyMessageBox.h"
13#include "GUIStaticText.h"
14#include "DefinitionsGUI.h"
15
17namespace FLImaging
18{
20 namespace GUI
21 {
22 class CGUIPaneProperties;
25 class CGUIPropertyButton;
26 class CGUIPropertyMessageBox;
27 class CGUIStaticText;
28 class CGUIDialogKernel;
29 class CGUIManager;
30 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
477 template<typename TPropertyItem>
478 TPropertyItem* AddItem(const wchar_t* pWcsName, const wchar_t* pWcsPath = nullptr, const wchar_t* pWcsValue = nullptr, const wchar_t* pWcsDefaultValue = nullptr, bool bAdjustLayout = false);
502 template<typename TPropertyItem>
503 TPropertyItem* AddItem(ESliderTemplateType eTemplateType, const wchar_t* pWcsName, const wchar_t* pWcsPath = nullptr, const wchar_t* pWcsValue = nullptr, const wchar_t* pWcsDefaultValue = nullptr, bool bAdjustLayout = false);
504
541 virtual bool InsertItem(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemBefore, bool bAdjustLayout = true);
542
558 virtual bool RemoveItem(CGUIPropertyItemBase* pItem, bool bAdjustLayout = true);
559
594 virtual bool MoveItem(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemNewParent, EAppendPosition eAppendPosition = EAppendPosition_Back, bool bAdjustLayout = true);
595
632 virtual bool MoveItem(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const CGUIPropertyItemBase* pItemInsertPosition, bool bAdjustLayout = true);
633
670 virtual bool MoveItem(CGUIPropertyItemBase* pItem, const Base::CFLString<wchar_t>& strParentItemFullPath, EAppendPosition eAppendPosition = EAppendPosition_Back, bool bAdjustLayout = true);
671
708 virtual bool MoveItem(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const Base::CFLString<wchar_t>& strInsertPositionItemFullPath, bool bAdjustLayout = true);
709
721 virtual const CResult UpdateProperty();
722
735
747 virtual bool BuildItems(CMFCPropertyGridCtrl* pCtrl);
748
758 virtual int64_t GetItemCount() const;
759
773 virtual int64_t GetItemCountByName(const Base::CFLString<wchar_t>& strName) const;
774
788 virtual CGUIPropertyItemBase* GetItem(int64_t i64Index) const;
789
809 virtual CGUIPropertyItemBase* FindItemByName(const Base::CFLString<wchar_t>& strName, bool bNocase = true, size_t stIndex = 0) const;
810
828 virtual CGUIPropertyItemBase* FindItemByFullPath(const Base::CFLString<wchar_t>& strFullPath, bool bNocase = true) const;
829
841 virtual CGUIPropertyItemBase* FindItemByHash(uint32_t u32Hash) const;
842
861 virtual std::vector<CGUIPropertyItemBase*> FindItemsByPath(const Base::CFLString<wchar_t>& strPath, bool bNocase = true) const;
862
885 virtual const CResult FindItemsByPath(const Base::CFLString<wchar_t>& strPath, std::vector<CGUIPropertyItemBase*>& vctItems, bool bNocase = true) const;
886
898 virtual int64_t GetPropertyItemFigureCount() const;
899
914
928 virtual bool AddButton(CGUIPropertyButton* pButton);
929
947 virtual bool SetShortcut(EKeyType eKeyType, CGUIPropertyButton* pButton);
948
960 std::vector<CGUIPropertyButton*>* GetPropertyButtons() const;
961
977 CGUIPropertyButton* FindPropertyButtonByName(const Base::CFLString<wchar_t>& strBtnName);
978
991 CGUIPropertyButton* FindPropertyButtonByIndex(int64_t i64Index);
992
1002 void EnableStatusMessageBox(bool bEnable);
1003
1014
1031
1044
1056 void SetMessageDisplayMode(EMessageDisplayMode eMessageDisplayMode = EMessageDisplayMode_NoScroll);
1057
1069 EMessageDisplayMode GetMessageDisplayMode() const;
1070
1082 virtual bool InitializePropertyPane(bool bLoad = true);
1083
1099 virtual bool InitializePropertyPaneStandalone(bool bLoad, CWnd* pParentWnd, CGUIDockablePaneHostFrame* pHostFrame = nullptr);
1100
1112 CGUIPaneProperties* GetPaneProperties() const;
1113
1129 virtual bool SetMenuItemRegistrationCallback(CGUIMenuItemRegistrationCallback* pFunc, bool bAutoDestroy = true);
1130
1142 virtual CGUIMenuItemRegistrationCallback* GetRegistrationCallback() const;
1143
1159 virtual bool SetMenuItemUnregistrationCallback(CGUIMenuItemUnregistrationCallback* pFunc, bool bAutoDestroy = true);
1160
1172 virtual CGUIMenuItemUnregistrationCallback* GetDestroyInstanceCallback() const;
1173
1183 virtual bool IsInitialized() const;
1184
1198 virtual bool DoesSameFullPathExist(const Base::CFLString<wchar_t>& flstrFullPath) const;
1199
1209 virtual bool CreateProperty();
1210
1223
1237 virtual CGUIMenuItemProperty* GetChildInstanceAsMenuItemProperty(int32_t i32InstanceIdx) const;
1238
1251
1253
1266 virtual CGUIMenuItemBase* CreateChildInstance(int32_t i32InstanceIdx = -1) override;
1267
1281 virtual const CResult DeleteChildInstance(int32_t i32InstanceIndex) override;
1283
1299 virtual Base::CFLString<wchar_t> GetItemValue(CGUIPropertyItemBase* pItem) const;
1300
1316 virtual const CResult SelectPopupMenuItem(EMenuItemPaneMenuTree eSelectedContextMenu);
1317
1327 void EnableOpenWindow(bool bEnable);
1328
1339
1349 virtual void SetGlobalModel(bool bSet);
1350
1360 virtual bool IsGlobalModel() const;
1361
1371 virtual void Enable(bool bEnable) override;
1372
1388 virtual void SetMinimalAuthorityLevelOnContextMenu(Base::EAuthorityLevel eAuthorityLevel, GUI::EMenuItemPaneMenuTree eMenuItemPaneMenuTree) override;
1389
1401 virtual const CResult DeletePane();
1402
1414 virtual const CResult ClosePane();
1415
1425 virtual bool IsTerminateAppRequested() const;
1426
1436 virtual void RequestTerminateApp(bool bTerminate = true);
1437
1438 virtual Base::CFLString<wchar_t> GetPaneName();
1439
1440 virtual CGUIPaneBase* GetPane() const override;
1441
1442 virtual void SetDockDone(bool bSet);
1443 virtual bool IsDockDone() const;
1444
1445 /* Create Instance*/
1446 virtual CGUIMenuItemProperty* CreateInstance(int32_t i32InstanceIdx = -1);
1447 virtual CGUIMenuItemProperty* LoadToCreateInstance(int32_t i32InstanceIdx = -1);
1448
1449 virtual void UpdateChildProperty();
1450 virtual bool OnShortKeyDown(UINT uKeyType);
1451 virtual const CResult ActivateSelectedViewOfFirstViewList();
1452
1453 CGUIPropertyMessageBox* GetMessageBox() const;
1454
1455 virtual std::vector<CGUIPropertyItemBase*>& GetItems() const;
1456 virtual std::unordered_map<uint32_t, CGUIPropertyItemBase*>& GetItemsHashMap() const;
1457 virtual std::vector<CGUIPropertyButton*>& GetButtons() const;
1458
1459 virtual bool DoesItemExistInVector(const CGUIPropertyItemBase* pItem, bool bLock = true) const;
1460
1461 protected:
1462 virtual bool InternalLoad();
1463 virtual bool InternalSave() const;
1464
1465 virtual bool IsSNAPNodeProperty() const;
1466
1467 protected:
1468 bool m_bDockDone;
1469 /* Property Items*/
1470 CGUIManagerPropertyItem* m_pMgrPI;
1471 std::map<EKeyType, CGUIPropertyButton*>& m_mapBtnShortcuts;
1472
1473 /* Buttons*/
1474 std::vector<CGUIPropertyButton*>& m_vctButtons;
1475
1476 /* Message box*/
1477 CGUIPropertyMessageBox* m_pStaticMessage;
1478 Base::CFLString<wchar_t> m_strMessage;
1479
1480 /* Property Pane*/
1481 CGUIPaneProperties* m_pProperties;
1482 bool m_bInitialized;
1483
1484 /* Create Window */
1485 bool m_bEnableWindowCreation;
1486
1487 CGUIMenuItemRegistrationCallback* m_pRegistrationCallback;
1488 bool m_bCreateCallbackAutoDestroy;
1489
1490 /* Destroy Instance*/
1491 CGUIMenuItemUnregistrationCallback* m_pDestroyInstanceCallback;
1492 bool m_bDestroyCallbackAutoDestroy;
1493
1494 bool m_bLoaded;
1495 bool m_bLoadingNow;
1496 bool m_bAutoLoad;
1497 bool m_bAutoSave;
1498 bool m_bActivateViewOnShowPane;
1499
1500 bool m_bEnableOpenWindow;
1501 bool m_bGlobalModel;
1502
1503 friend class CGUIPaneProperties;
1504 friend class CGUITabbedPane;
1505 friend class CGUIPropertyItemBase;
1506 friend class CGUIManager;
1507 friend class CGUIPaneMenu;
1508 friend class CGUIManagerPane;
1509 friend class CGUIMainFrame;
1510 friend class CGUIPaneFrameWnd;
1511 friend class CGUIPanePropertiesShell;
1512 friend class CGUIPropertyMenuSNAPView;
1513 friend class CGUIManagerModel;
1514 };
1515}
1516}
1517
Template type string class.
Definition FLString.h:34
FLImaging module execution result object.
Definition ResultsDef.h:1676
Definition GUIDialogKernel.h:51
GUIDockablePaneHostFrame class.
Definition GUIDockablePaneHostFrame.h:27
Manager class responsible for handling CGUIPropertyItemBase objects and synchronizing them with CGUIP...
Definition GUIManagerPropertyItem.h:46
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.
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.
TPropertyItem * AddItem(ESliderTemplateType eTemplateType, const wchar_t *pWcsName, const wchar_t *pWcsPath=nullptr, const wchar_t *pWcsValue=nullptr, const wchar_t *pWcsDefaultValue=nullptr, bool bAdjustLayout=false)
Function to add a slider-type property item.
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.
TPropertyItem * AddItem(const wchar_t *pWcsName, const wchar_t *pWcsPath=nullptr, const wchar_t *pWcsValue=nullptr, const wchar_t *pWcsDefaultValue=nullptr, bool bAdjustLayout=false)
Function to add a property item of a specific type.
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:318
A class of Figure property.
Definition GUIPropertyItemViewImageFigure.h:31
EAuthorityLevel
Authority level.
Definition AuthorityManager.h:29
Definition D2DObject.h:12
EInsertPosition
Definition DefinitionsGUI.h:11758
EKeyType
Keyboard input value.
Definition DefinitionsGUI.h:7829
ESliderTemplateType
Template type of slider.
Definition DefinitionsGUI.h:10890
EAppendPosition
Definition DefinitionsGUI.h:11778
@ EAppendPosition_Back
Definition DefinitionsGUI.h:11783
EMenuItemPaneMenuTree
Menu items in the menu tree.
Definition DefinitionsGUI.h:9624