FLImaging 7.8.25.3
GUIManagerMainFrameMenuBar.h
1#pragma once
2#include "DefinitionsGUI.h"
3#include "DefinitionsGUIResource.h"
4#include "GUIPopupMenuItemUserDefined.h"
5#include <unordered_map>
6
15
17namespace FLImaging
18{
20 namespace GUI
21 {
24 class CGUIMenuBar;
25
34 class FL_EXPORT CGUIManagerMainFrameMenuBar : public Base::CFLBase
35 {
36 public:
37 CGUIManagerMainFrameMenuBar();
38 virtual ~CGUIManagerMainFrameMenuBar();
39
40 public:
53
71 static const CResult GetValidCommandIdOfUserDefinedMenuItem(uint32_t& u32CommandId);
72
99 const Base::CFLString<wchar_t>& strName,
100 const Base::CFLString<wchar_t>& strParentPath,
101 CPopupMenuItemUserDefinedCallback* pCallback,
102 bool bAutoDestroyCallback = true,
103 bool bEnabled = true,
104 bool bChecked = false,
105 int32_t i32InsertPos = -1);
106
123 const Base::CFLString<wchar_t>& strParentPath,
124 int32_t i32InsertPos = -1);
125
126
141
155 static const CResult RemoveMenuItem(const Base::CFLString<wchar_t>& flsMenuName);
156
169
182
197
209 static CPopupMenuItemUserDefinedCallback* GetUserDefinedMenuItemCallback(uint32_t u32CommandId);
210
231 COLORREF clrBackground = RGB(80, 80, 80),
232 COLORREF clrText = RGB(255, 255, 255),
233 bool bShow = true,
236
247
268 COLORREF clrBackground = RGB(80, 80, 80),
269 COLORREF clrText = RGB(255, 255, 255),
270 bool bShow = true,
273
284
295
306
319
332
342 static int32_t GetUserDefinedInfoCount();
343
354
365
390 int32_t i32Index,
391 const Base::CFLString<wchar_t>& strInfo,
392 COLORREF clrBackground,
393 COLORREF clrText,
394 bool bShow,
395 EGUIAlignment eAlign,
396 EGUIStringTrimming eStringTrimming);
397
411 static const CResult SetUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo& refUDI);
412
437 int32_t i32Index,
438 const Base::CFLString<wchar_t>& strInfo,
439 COLORREF clrBackground,
440 COLORREF clrText,
441 bool bShow,
442 EGUIAlignment eAlign,
443 EGUIStringTrimming eStringTrimming);
444
458 static const CResult InsertUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo& refUDI);
459
471 static const CResult RemoveUserDefinedInfoAt(int32_t i32Index);
472
483
493 static void SetCurrentModelNameBkColor(COLORREF clrBk);
494
504 static COLORREF GetCurrentModelNameBkColor();
505
515 static void SetCurrentModelNameTextColor(COLORREF clrText);
516
527
537 static void ShowCurrentModelName(bool bShow);
538
549
561 static void SetUserIdBkColor(Base::EAuthorityLevel eLevel, COLORREF clrBk);
562
575
587 static void SetUserIdTextColor(Base::EAuthorityLevel eLevel, COLORREF clrText);
588
601
611 static void ShowCurrentUserId(bool bShow);
612
623
633 static void SetLogoImage(const wchar_t* pWcsLogoImagePath);
634
648 static void SetLogoImage(UINT nIDResource, EImageResourceType eLogoResType = EImageResourceType_PNG, HINSTANCE hInst = NULL);
649
659 static void ShowLogoImage(bool bShow);
660
670 static bool IsLogoImageVisible();
671
672 static bool ApplyLogoImage();
673
674 static const wchar_t* GetLogoImagePath();
675 static void SetLogoImageDirty(bool bSet = true);
676 static bool IsLogoImageDirty();
677 static void SetCurrentModelNameDirty(bool bSet = true);
678 static bool IsCurrentModelNameDirty();
679 static void SetCurrentUserIdDirty(bool bSet = true);
680 static bool IsCurrentUserIdDirty();
681 static void SetUserDefinedInfoDirty(bool bSet = true);
682 static bool IsUserDefinedInfoDirty();
683 static std::unordered_map<uint32_t, CGUIPopupMenuItemUserDefined*>* GetContainerUserDefinedMenuItem();
684 static std::deque<CGUIPopupMenuItemUserDefined*>* GetContainerUserDefinedMenuItemByPath(const Base::CFLString<wchar_t>& strPath);
685 static std::deque<CGUIMenuBarUserDefinedInfo*>* GetContainerUserDefinedInfo();
686 static std::vector<Base::CFLString<wchar_t>>* GetContainerRemovedMenuName();
687
688 DeclareGetClassType();
689
690 private:
691 static CGUIManagerMainFrameMenuBar* GetInstance();
692
693 protected:
694 enum ELogoSourceType
695 {
696 ELogoSourceType_None = 0,
697 ELogoSourceType_Path,
698 ELogoSourceType_Resource
699 };
700
701 protected:
702 static const CResult GetValidCommandIdOfSystemDefinedMenuItem(uint32_t& u32CommandId);
703
704 static CGUIPopupMenuItemUserDefined* AddSystemDefinedMenuItem(const CGUIPopupMenuItemUserDefined& udmi);
705 static CGUIPopupMenuItemUserDefined* InternalAddUserDefinedMenuItem(const CGUIPopupMenuItemUserDefined& udmi, bool bSystemMenuItem);
706
707 friend class CGUIMainFrame;
708
709 protected:
710 COLORREF m_clrBackgroundCurrentModel;
711 COLORREF m_clrTextCurrentModel;
712 COLORREF m_clrBackgroundCurrentUserId;
713 COLORREF m_clrTextCurrentUserId;
714
715 bool m_bInit;
716 bool m_bDirtyCurrentModelName;
717 bool m_bShowCurrentModelName;
718 bool m_bDirtyCurrentUserId;
719 bool m_bShowCurrentUserId;
720 mutable bool m_bDirtyUserDefinedInfo;
721
722 ELogoSourceType m_eLogoSourceType;
723 Base::CFLString<wchar_t> m_strLogoImagePath;
724 bool m_bLogoImageDirty;
725 bool m_bShowLogo;
726 bool m_bLogoVisibilityDirty;
727 UINT m_nLogoResID;
728 EImageResourceType m_eLogoResType;
729 HINSTANCE m_hLogoResInst;
730
731 std::unordered_map<Base::EAuthorityLevel, COLORREF>& m_mapBkColorUserId;
732 std::unordered_map<Base::EAuthorityLevel, COLORREF>& m_mapFgColorUserId;
733 std::deque<CGUIMenuBarUserDefinedInfo*>& m_deqCGUIMenuBarUserDefinedInfo;
734 std::unordered_map<uint32_t, CGUIPopupMenuItemUserDefined*>& m_mapCmdIdAndUserDefinedMenuItem;
735 std::unordered_map<std::wstring, std::deque<CGUIPopupMenuItemUserDefined*>>& m_mapPathNameAndUserDefinedMenuItem;
736 std::vector<Base::CFLString<wchar_t>>& m_vctRemovedMenuName;
737 };
738 }
739}
Top-level base class of FLImaging.
Definition FLBase.h:36
Template type string class.
Definition FLString.h:34
FLImaging module execution result object.
Definition ResultsDef.h:1704
static const CResult RemoveUserDefinedInfoAt(int32_t i32Index)
Removes the user-defined info at the specified index.
static bool IsLogoImageVisible()
Returns whether the logo image on the top menu bar is currently visible.
static void SetCurrentModelNameTextColor(COLORREF clrText)
Sets the text color for the current model name.
static CGUIPopupMenuItemUserDefined * AddUserDefinedMenuItem(const Base::CFLString< wchar_t > &strName, const Base::CFLString< wchar_t > &strParentPath, CPopupMenuItemUserDefinedCallback *pCallback, bool bAutoDestroyCallback=true, bool bEnabled=true, bool bChecked=false, int32_t i32InsertPos=-1)
Adds a user-defined menu item under the specified parent path.
static CGUIMenuBarUserDefinedInfo * GetFrontUserDefinedInfo()
Retrieves a pointer to the first user-defined info item without removing it.
static const CResult InsertUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo &refUDI)
Inserts user-defined info at the specified index.
static bool IsCurrentUserIdVisible()
Checks if the current user ID is visible.
static CGUIPopupMenuItemUserDefined * GetUserDefinedMenuItem(uint32_t u32CommandId)
Retrieves the user-defined menu item.
static void ShowCurrentUserId(bool bShow)
Sets the visibility of the current user ID.
static CGUIMenuBarUserDefinedInfo * PopBackUserDefinedInfo()
Removes and returns the last user-defined info item.
static void SetUserIdTextColor(Base::EAuthorityLevel eLevel, COLORREF clrText)
Sets the text color for the specified user authority level.
static int32_t GetUserDefinedInfoIndex(const CGUIMenuBarUserDefinedInfo *pUDI)
Returns the index of a specified user-defined info item.
static void PushBackUserDefinedInfo(const Base::CFLString< wchar_t > &strInfo, COLORREF clrBackground=RGB(80, 80, 80), COLORREF clrText=RGB(255, 255, 255), bool bShow=true, EGUIAlignment eAlign=EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming=EGUIStringTrimming_EllipsisCharacter)
Adds a user-defined info rectangle to the left of the current model name.
static const CResult InsertUserDefinedInfoAt(int32_t i32Index, const Base::CFLString< wchar_t > &strInfo, COLORREF clrBackground, COLORREF clrText, bool bShow, EGUIAlignment eAlign, EGUIStringTrimming eStringTrimming)
Inserts user-defined info at the specified index.
static void ShowLogoImage(bool bShow)
Shows or hides the logo image on the top menu bar.
static bool IsCurrentModelNameVisible()
Checks if the current model name is visible.
static void SetLogoImage(const wchar_t *pWcsLogoImagePath)
Sets the logo image displayed on the top menu bar.
static COLORREF GetCurrentModelNameTextColor()
Gets the text color of the current model name.
static void PushFrontUserDefinedInfo(const Base::CFLString< wchar_t > &strInfo, COLORREF clrBackground=RGB(80, 80, 80), COLORREF clrText=RGB(255, 255, 255), bool bShow=true, EGUIAlignment eAlign=EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming=EGUIStringTrimming_EllipsisCharacter)
Adds a user-defined info rectangle to the right of the current model name.
static CGUIMenuBar * GetMenuBar()
Returns the menu bar of the main frame.
static COLORREF GetUserIdBkColor(Base::EAuthorityLevel eLevel)
Gets the background color for the specified user authority level.
static const CResult RemoveUserDefinedMenuItem(CGUIPopupMenuItemUserDefined *pItem)
Removes a user-defined menu item.
static CGUIPopupMenuItemUserDefined * AddUserDefinedMenuItemSeparator(const Base::CFLString< wchar_t > &strParentPath, int32_t i32InsertPos=-1)
Adds a separator under the specified parent path.
static void SetCurrentModelNameBkColor(COLORREF clrBk)
Sets the background color for the current model name.
static COLORREF GetUserIdTextColor(Base::EAuthorityLevel eLevel)
Gets the text color for the specified user authority level.
static void SetLogoImage(UINT nIDResource, EImageResourceType eLogoResType=EImageResourceType_PNG, HINSTANCE hInst=NULL)
Sets the logo image displayed on the top menu bar.
static CGUIMenuBarUserDefinedInfo * GetBackUserDefinedInfo()
Returns a pointer to the last user-defined info item without removing it.
static const CResult SetUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo &refUDI)
Sets the user-defined info at the specified index.
static void ShowCurrentModelName(bool bShow)
Sets the visibility of the current model name.
static CPopupMenuItemUserDefinedCallback * GetUserDefinedMenuItemCallback(uint32_t u32CommandId)
Retrieves the callback associated with a user-defined menu item.
static void PushBackUserDefinedInfo(const CGUIMenuBarUserDefinedInfo &refUDI)
Adds a user-defined info object to the left of the current model name.
static CGUIMenuBarUserDefinedInfo * PopFrontUserDefinedInfo()
Removes and returns the first user-defined info item.
static CGUIPopupMenuItemUserDefined * GetUserDefinedMenuItem(const Base::CFLString< wchar_t > &strName, const Base::CFLString< wchar_t > &strParentPath)
Retrieves the user-defined menu item.
static const CResult RemoveMenuItem(const Base::CFLString< wchar_t > &flsMenuName)
Removes a specific menu item or sub-menu item by its hierarchical name path.
static COLORREF GetCurrentModelNameBkColor()
Gets the background color of the current model name.
static int32_t GetUserDefinedInfoCount()
Returns the number of user-defined info items.
static const CResult ClearUserDefinedInfo()
Clears all user-defined info items.
static const CResult GetValidCommandIdOfUserDefinedMenuItem(uint32_t &u32CommandId)
Returns a command ID that does not overlap with any existing command IDs. The valid range is from EMa...
static void PushFrontUserDefinedInfo(const CGUIMenuBarUserDefinedInfo &refUDI)
Adds a user-defined info rectangle to the right of the current model name.
static const CResult SetUserDefinedInfoAt(int32_t i32Index, const Base::CFLString< wchar_t > &strInfo, COLORREF clrBackground, COLORREF clrText, bool bShow, EGUIAlignment eAlign, EGUIStringTrimming eStringTrimming)
Sets the user-defined info at the specified index.
static CGUIPopupMenuItemUserDefined * AddUserDefinedMenuItem(const CGUIPopupMenuItemUserDefined &udmi)
Adds a user-defined menu item under the specified parent path.
static CGUIMenuBarUserDefinedInfo * GetUserDefinedInfoAt(int32_t i32Index)
Retrieves a user-defined info item at the specified index.
static void SetUserIdBkColor(Base::EAuthorityLevel eLevel, COLORREF clrBk)
Sets the background color for the specified user authority level.
A custom menu bar class for managing backgrounds, logos, system buttons, current model names,...
Definition GUIMenuBar.h:37
Represents a single user-defined info item displayed in the menu bar. Each item renders as a text box...
Definition GUIMenuBarUserDefinedInfo.h:36
Represents a user-defined popup menu item.
Definition GUIPopupMenuItemUserDefined.h:31
EAuthorityLevel
Authority level.
Definition AuthorityManager.h:29
Definition D2DObject.h:12
EGUIStringTrimming
Cut option if string is out of layout square.
Definition DefinitionsGUI.h:14020
@ EGUIStringTrimming_EllipsisCharacter
Specifies that the string is broken at the boundary of the last character within the layout rectangle...
Definition DefinitionsGUI.h:14051
EImageResourceType
Image resource type enumeration.
Definition DefinitionsGUIResource.h:43
EGUIAlignment
Alignment information.
Definition DefinitionsGUI.h:13858
@ EGUIAlignment_CENTER_CENTER
Center alignment.
Definition DefinitionsGUI.h:13961