FLImaging 7.3.19.2
GUIDialogProperty.h
1#pragma once
2
3#include "GUIDialog.h"
4#include "GUIPropertyItemBase.h"
5#include <set>
6
8namespace FLImaging
9{
11 namespace GUI
12 {
16 class CGUITreeCtrlBase;
17
25 class FL_EXPORT CGUIDialogProperty : public CGUIDialog
26 {
27 DECLARE_DYNAMIC(CGUIDialogProperty)
28 public:
38 CGUIDialogProperty(CWnd* pParent = nullptr);
39
50
59
69 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
70
82 static CGUIDialogProperty* CreateModelessDialog(CWnd* pParent = nullptr);
83
91 virtual void UpdateFont();
92
100 virtual void OnOK() override;
101
111 virtual BOOL OnInitDialog() override;
112
124 virtual void SetSize(int32_t i32W, int32_t i32H);
125
139 virtual const CResult AddItem(CGUIPropertyItemBase* pItem, bool bAdjustLayout = false);
140
160 template<typename TPropertyItem>
161 TPropertyItem* AddItem(const wchar_t* pWcsName, const wchar_t* pWcsPath = nullptr, const wchar_t* pWcsValue = nullptr, const wchar_t* pWcsDefaultValue = nullptr);
162
184 template<typename TPropertyItem>
185 TPropertyItem* AddItem(ESliderTemplateType eTemplateType, const wchar_t* pWcsName, const wchar_t* pWcsPath = nullptr, const wchar_t* pWcsValue = nullptr, const wchar_t* pWcsDefaultValue = nullptr);
186
206 virtual CGUIPropertyItemText* AddItem(const Base::CFLString<wchar_t>& flstrName, const Base::CFLString<wchar_t>& flstrPath, const Base::CFLString<wchar_t>& flstrValue, CGUIEditBase::EInputType eInputType, bool bReadOnly = false);
207
223 virtual const CResult InsertItem(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemBefore, bool bAdjustLayout = true);
224
238 virtual const CResult RemoveItem(CGUIPropertyItemBase* pItem, bool bAdjustLayout = true);
239
257 virtual const CResult MoveItem(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemNewParent, EAppendPosition eAppendPosition = EAppendPosition_Back, bool bAdjustLayout = true);
258
276 virtual const CResult MoveItem(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const CGUIPropertyItemBase* pItemInsertPosition, bool bAdjustLayout = true);
277
295 virtual const CResult MoveItem(CGUIPropertyItemBase* pItem, const Base::CFLString<wchar_t>& strParentItemFullPath, EAppendPosition eAppendPosition = EAppendPosition_Back, bool bAdjustLayout = true);
296
314 virtual const CResult MoveItem(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const Base::CFLString<wchar_t>& strInsertPositionItemFullPath, bool bAdjustLayout = true);
315
327 virtual CGUIPropertyItemBase* FindItemByHash(const uint32_t& u32Hash) const;
328
340 bool IsModified(const CGUIPropertyItemBase* pItem) const;
341
353 bool IsModifiedDouble(const CGUIPropertyItemBase* pItem) const;
354
364 virtual std::vector<CGUIPropertyItemBase*>& GetItems() const;
365
375 virtual std::unordered_map<uint32_t, CGUIPropertyItemBase*>& GetItemsHashMap() const;
376
386 void EnableTree(bool bEnable = false);
387
397 bool IsTreeEnabled() const;
398
408 void SetTreeWidth(int32_t i32Width = 200);
409
419 int32_t GetTreeWidth() const;
420
433
446
459
472
482 virtual const CResult ClearTreeItems();
483
493 virtual std::vector<FLImaging::GUI::CGUIPropertyItemCategory*>& GetTreeItems() const;
494
504 virtual void SetPropertyGridLeftColumnWidth(int32_t i32LeftColumnWidth);
505
516
517 DeclareGetClassType();
518
519 virtual bool AdjustLayoutButton(int32_t i32BtnW, int32_t i32BtnH, int32_t i32BtnMargin, int32_t i32BtnSpace, int32_t i32BtnTop);
520 virtual bool AdjustLayoutProperty(int32_t i32L, int32_t i32T, int32_t& i32PropertyW, int32_t& i32PropertyH);
521
522 protected:
523 virtual bool CreateTree();
524 virtual bool CreateProperty();
525
526 protected:
527 int32_t m_i32PropertyGridLeftColumnWidth;
528 uint32_t m_u32IdWndPropList;
529 CGUIManagerPropertyItem* m_pMgrPI;
530 std::unordered_map<int32_t, Base::CFLString<wchar_t>>& m_mapChangedItems;
531 std::vector<CMFCPropertyGridProperty*>& m_vctProperties;
532 std::set<int32_t> m_setResetItemIdx;
533 CGUIPropertyGridCtrl& m_wndPropList;
534
535 Base::CFLString<wchar_t> m_strTreeRoot;
536 CGUITreeCtrlBase* m_pTree;
537 bool m_bCreateTree;
538 int32_t m_i32TreeWidth;
539 std::vector<CGUIPropertyItemCategory*>& m_vctCatInTree;
540
541 public:
542 DECLARE_MESSAGE_MAP()
543 afx_msg LRESULT OnPropertyChanged(WPARAM wparam, LPARAM lparam);
544 afx_msg void OnDestroy();
545 afx_msg void OnSize(UINT nType, int cx, int cy);
546 afx_msg void OnNMClick(NMHDR* pNMHDR, LRESULT* pResult);
547 virtual BOOL PreTranslateMessage(MSG* pMsg);
548 };
549 }
550}
브로드캐스트 메시지 클래스
Definition BroadcastMessage.h:27
Template type 의 문자열 클래스
Definition FLString.h:34
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1676
CGUIDialog(CWnd *pParent=nullptr)
기본 생성자
virtual void OnOK() override
OK 버튼 클릭 시 호출되는 이벤트 핸들러입니다.
virtual ~CGUIDialogProperty()
CGUIDialogProperty의 소멸자입니다.
virtual const CResult MoveItem(CGUIPropertyItemBase *pItem, const Base::CFLString< wchar_t > &strParentItemFullPath, EAppendPosition eAppendPosition=EAppendPosition_Back, bool bAdjustLayout=true)
부모의 전체 경로를 사용하여 프로퍼티 아이템을 이동합니다.
virtual CGUIPropertyItemBase * FindItemByHash(const uint32_t &u32Hash) const
해시 값을 사용하여 프로퍼티 아이템을 찾습니다.
virtual const CResult MoveItem(CGUIPropertyItemBase *pItem, EInsertPosition eInsertPosition, const CGUIPropertyItemBase *pItemInsertPosition, bool bAdjustLayout=true)
프로퍼티 아이템을 기준 아이템을 기준으로 이동합니다.
CGUIPropertyGridCtrl * GetPropertyGridCtrl()
프로퍼티 그리드 컨트롤을 반환합니다.
virtual const CResult ClearTreeItems()
트리 내비게이션의 모든 아이템을 클리어합니다.
bool IsTreeEnabled() const
트리 내비게이션 기능이 활성화되어 있는지 확인합니다.
CGUIDialogProperty(CWnd *pParent=nullptr)
CGUIDialogProperty의 기본 생성자입니다.
virtual BOOL OnInitDialog() override
다이얼로그와 컨트롤들을 초기화합니다.
virtual std::vector< CGUIPropertyItemBase * > & GetItems() const
모든 프로퍼티 아이템 목록을 가져옵니다.
CGUIDialogProperty(const CGUIDialogProperty &rhs)
CGUIDialogProperty의 복사 생성자입니다.
virtual std::vector< FLImaging::GUI::CGUIPropertyItemCategory * > & GetTreeItems() const
트리에 추가된 카테고리 아이템 목록을 가져옵니다.
int32_t GetTreeWidth() const
트리 내비게이션 창의 너비를 가져옵니다.
bool IsModified(const CGUIPropertyItemBase *pItem) const
프로퍼티 아이템의 값이 변경되었는지 확인합니다.
void SetTreeRootItemText(const Base::CFLString< wchar_t > &strRoot)
트리의 루트 아이템 텍스트 설정. 기본값은 다이얼로그 타이틀입니다.
virtual void SetSize(int32_t i32W, int32_t i32H)
다이얼로그의 크기를 설정합니다.
virtual const CResult InsertItem(CGUIPropertyItemBase *pItem, const CGUIPropertyItemBase *pItemBefore, bool bAdjustLayout=true)
특정 아이템 이전에 프로퍼티 아이템을 삽입합니다.
const CResult AddCategoryToTree(CGUIPropertyItemCategory *pCategory)
트리 내비게이션에 표시할 프로퍼티 카테고리 아이템을 추가합니다.
TPropertyItem * AddItem(const wchar_t *pWcsName, const wchar_t *pWcsPath=nullptr, const wchar_t *pWcsValue=nullptr, const wchar_t *pWcsDefaultValue=nullptr)
특정 타입의 프로퍼티 아이템을 추가하는 함수입니다.
virtual void UpdateFont()
다이얼로그와 하위 컨트롤들의 폰트를 업데이트합니다.
virtual const CResult AddItem(CGUIPropertyItemBase *pItem, bool bAdjustLayout=false)
프로퍼티 아이템을 추가합니다.
virtual void SetPropertyGridLeftColumnWidth(int32_t i32LeftColumnWidth)
프로퍼티 그리드의 왼쪽 컬럼(이름 영역) 너비를 설정합니다.
virtual const CResult RemoveItem(CGUIPropertyItemBase *pItem, bool bAdjustLayout=true)
프로퍼티 아이템을 제거합니다.
virtual void OnReceiveBroadcast(const Base::CBroadcastMessage *pMessage) override
브로드캐스트 메시지를 수신하고 처리합니다.
virtual const CResult RemoveTreeItem(CGUIPropertyItemCategory *pCategory)
트리 내비게이션에서 카테고리 아이템을 제거합니다.
virtual std::unordered_map< uint32_t, CGUIPropertyItemBase * > & GetItemsHashMap() const
프로퍼티 아이템들의 해시 맵을 가져옵니다.
virtual CGUIPropertyItemText * AddItem(const Base::CFLString< wchar_t > &flstrName, const Base::CFLString< wchar_t > &flstrPath, const Base::CFLString< wchar_t > &flstrValue, CGUIEditBase::EInputType eInputType, bool bReadOnly=false)
텍스트 형태의 프로퍼티 아이템을 추가하는 함수입니다.
Base::CFLString< wchar_t > GetTreeRootItemText()
트리의 루트 아이템 텍스트 리턴
static CGUIDialogProperty * CreateModelessDialog(CWnd *pParent=nullptr)
모달리스 다이얼로그 인스턴스를 생성합니다.
void SetTreeWidth(int32_t i32Width=200)
트리 내비게이션 창의 너비를 설정합니다.
virtual const CResult MoveItem(CGUIPropertyItemBase *pItem, EInsertPosition eInsertPosition, const Base::CFLString< wchar_t > &strInsertPositionItemFullPath, bool bAdjustLayout=true)
기준 아이템의 전체 경로를 사용하여 프로퍼티 아이템을 이동합니다.
virtual const CResult MoveItem(CGUIPropertyItemBase *pItem, const CGUIPropertyItemBase *pItemNewParent, EAppendPosition eAppendPosition=EAppendPosition_Back, bool bAdjustLayout=true)
프로퍼티 아이템을 새로운 부모 아이템 하위로 이동합니다.
void EnableTree(bool bEnable=false)
트리 내비게이션 기능의 활성화 여부를 설정합니다.
TPropertyItem * AddItem(ESliderTemplateType eTemplateType, const wchar_t *pWcsName, const wchar_t *pWcsPath=nullptr, const wchar_t *pWcsValue=nullptr, const wchar_t *pWcsDefaultValue=nullptr)
슬라이더 형태의 프로퍼티 아이템을 추가하는 함수입니다.
bool IsModifiedDouble(const CGUIPropertyItemBase *pItem) const
프로퍼티 아이템의 값이 변경되었는지 확인합니다(double 타입 정밀도 비교용).
EInputType
입력 값의 형식
Definition GUIEditBase.h:40
CGUIPropertyItemBase 객체들을 관리하고 CGUIPropertyGridCtrl 과의 동기화를 수행하는 매니저 클래스입니다.
Definition GUIManagerPropertyItem.h:46
속성 그리드 컨트롤 클래스
Definition GUIPropertyGridCtrl.h:52
프로퍼티 아이템 베이스 클래스
Definition GUIPropertyItemBase.h:318
하위 아이템을 포함할 수 있으며, 선택적으로 값 목록(Value List)처럼 동작하는 카테고리 프로퍼티 아이템입니다.
Definition GUIPropertyItemCategory.h:26
단일 행 텍스트 입력(검증/툴팁/실시간 콜백 지원)을 위한 프로퍼티 그리드 아이템입니다.
Definition GUIPropertyItemText.h:40
Definition D2DObject.h:12
EInsertPosition
Definition DefinitionsGUI.h:11493
ESliderTemplateType
슬라이더 자료형
Definition DefinitionsGUI.h:10625
EAppendPosition
Definition DefinitionsGUI.h:11513
@ EAppendPosition_Back
Definition DefinitionsGUI.h:11518