FLImaging 7.10.21.1
GUISheetInterface.h
1#pragma once
2#include "DefinitionsGUI.h"
3
4namespace FLImaging
5{
6 namespace GUI
7 {
8 class CFLSheet;
9
10 typedef std::function<void(int32_t, int32_t)> CFLSheetProcedure;
11 #define MakeFLSheetProcedure [=](int32_t i32RowIndex, int32_t i32ColumnIndex) -> void
12
13 typedef std::function<void(int32_t, int32_t)> CFLSheetButtonClickProcedure;
14 #define MakeFLSheetButtonClickProcedure [=](int32_t i32RowIndex, int32_t i32ColumnIndex) -> void
15
16 class FL_EXPORT CGUISheetInterface
17 {
18 public:
19 enum
20 {
21 ETextAlignMask_Left = 0x00000000,
22 ETextAlignMask_Top = 0x00000000,
23 ETextAlignMask_HCenter = 0x00000001,
24 ETextAlignMask_Right = 0x00000002,
25 ETextAlignMask_VCenter = 0x00000004,
26 ETextAlignMask_Bottom = 0x00000008,
27 };
28
29 enum ETextAlign
30 {
31 ETextAlign_Left_Top = ETextAlignMask_Left | ETextAlignMask_Top,
32 ETextAlign_Left_Center = ETextAlignMask_Left | ETextAlignMask_VCenter,
33 ETextAlign_Left_Bottom = ETextAlignMask_Left | ETextAlignMask_Bottom,
34
35 ETextAlign_Center_Top = ETextAlignMask_HCenter | ETextAlignMask_Top,
36 ETextAlign_Center_Center = ETextAlignMask_HCenter | ETextAlignMask_VCenter,
37 ETextAlign_Center_Bottom = ETextAlignMask_HCenter | ETextAlignMask_Bottom,
38
39 ETextAlign_Right_Top = ETextAlignMask_Right | ETextAlignMask_Top,
40 ETextAlign_Right_Center = ETextAlignMask_Right | ETextAlignMask_VCenter,
41 ETextAlign_Right_Bottom = ETextAlignMask_Right | ETextAlignMask_Bottom,
42 };
43
44 public:
45 CGUISheetInterface();
46 virtual ~CGUISheetInterface();
47
48 virtual const CResult CreateSheet(CRect rect, CWnd* pParent);
49 virtual const CResult Clear();
50
51 virtual void MoveSheet(CRect rect);
52 virtual void Show(bool bShow);
53 virtual bool IsVisible() const;
54
55 virtual void EnableSortByHeaderClick(bool bEnable);
56 virtual bool IsSortByHeaderClickEnabled() const;
57
58 virtual const CResult SetHeader(const Base::CFLArray<Base::CFLString<wchar_t>>& flaHeader);
59 virtual Base::CFLArray<Base::CFLString<wchar_t>> GetHeader() const;
60
61 virtual const CResult ClearData();
62 virtual const CResult SetData(const Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>& flaData);
63
64 virtual const CResult AppendData(const Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>& flaData);
65 virtual const CResult AppendData(const Base::CFLArray<Base::CFLString<wchar_t>>& flaData);
66 virtual const CResult SetDataAt(int32_t i32Row, const Base::CFLArray<Base::CFLString<wchar_t>>& flaData);
67
68 virtual Base::CFLString<wchar_t> GetData(int64_t i64Row, int64_t i64Col) const;
69
70 virtual const CResult ClearSelectedCell();
71 virtual const CResult SelectCell(int64_t i64Row, int64_t i64Col);
72 virtual const CResult SelectRows(Base::CFLArray<int64_t> flaRows);
73 virtual Base::CFLArray<int64_t> GetSelectedRows();
74
75 virtual void SetSingleRowSelection(bool bSet);
76 virtual bool GetSingleRowSelection() const;
77
78 virtual void SetEditable(bool bEditable = true);
79 virtual bool IsEditable() const;
80
81 virtual void SetEditableOnlyFocusedCell(bool bSet = false);
82 virtual bool IsEditableOnlyFocusedCell() const;
83
84 virtual CFLSheet* GetSheetPtr() const;
85 virtual const Base::CFLBase* GetSheetBasePtr() const;
86 virtual Base::CFLArray<Base::CFLString<wchar_t>>* GetHeaderPtr();
87 virtual Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>* GetDataPtr();
88 // Sheet 에 보이는 값을 가져오는 함수
89 virtual void GetDataFromSheet(Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>& flaData) const;
90
91 // GetDataPtr() 및 GetHeaderPtr() 함수 호출로 얻은 데이터를 수정한 경우
92 // 아래 함수를 호출하여 Sheet 에 업데이트
93 virtual void UpdateSheetData();
94
95 virtual int32_t GetRowHeight(int32_t i32Row) const;
96 virtual bool SetRowHeight(int32_t i32Row, int32_t i32Height);
97 virtual int32_t GetColumnWidth(int32_t i32Col) const;
98 virtual bool SetColumnWidth(int32_t i32Col, int32_t i32Width);
99
100 virtual float GetRowHeightRatio(int32_t i32Row) const;
101 virtual bool SetRowHeightRatio(int32_t i32Row, float f32Height, bool bUpdate = false);
102 virtual float GetColumnWidthRatio(int32_t i32Col) const;
103 virtual bool SetColumnWidthRatio(int32_t i32Col, float f32Width, bool bUpdate = false);
104
105 virtual void AddNumericSortColumn(int64_t i64Column);
106 virtual void RemoveNumericSortColumn(int64_t i64Column);
107 virtual void ClearNumericSortColumn();
108
109 virtual void SetListMode(bool bListMode = false);
110 virtual bool IsListMode() const;
111
112 virtual bool SetFixedRowCount(int32_t i32FixedRow = 1);
113 virtual int32_t GetFixedRowCount() const;
114 virtual bool SetFixedColumnCount(int32_t i32FixedColumn = 1);
115 virtual int32_t GetFixedColumnCount() const;
116
117 virtual ETextAlign GetCellTextAlign(int32_t i32Row, int32_t i32Col) const;
118 virtual const CResult SetCellTextAlign(int32_t i32Row, int32_t i32Col, ETextAlign eAlign);
119 virtual const CResult SetRowTextAlign(int32_t i32Row, ETextAlign eAlign);
120 virtual const CResult SetColumnTextAlign(int32_t i32Col, ETextAlign eAlign);
121 virtual const CResult SetTextAlign(ETextAlign eAlign);
122
123 virtual EFLSheetCellStatus GetCellStatus(int32_t i32Row, int32_t i32Col) const;
124 virtual const CResult SetCellStatus(int32_t i32Row, int32_t i32Col, EFLSheetCellStatus eStatus);
125 virtual const CResult SetRowCellStatus(int32_t i32Row, EFLSheetCellStatus eStatus);
126 virtual const CResult SetColumnCellStatus(int32_t i32Col, EFLSheetCellStatus eStatus);
127
128 virtual const CResult SetCellEditable(int32_t i32Row, int32_t i32Col, bool bEditable);
129 virtual bool IsCellEditable(int32_t i32Row, int32_t i32Col) const;
130
131 virtual EFLSheetCellType GetCellType(int32_t i32Row, int32_t i32Col) const;
132 virtual const CResult SetCellType(int32_t i32Row, int32_t i32Col, EFLSheetCellType eType);
133 virtual const CResult SetRowCellType(int32_t i32Row, EFLSheetCellType eType);
134 virtual const CResult SetColumnCellType(int32_t i32Col, EFLSheetCellType eType);
135
136 virtual const CResult CopyRange(int32_t i32StartRow, int32_t i32StartCol, int32_t i32EndRow, int32_t i32EndCol);
137 virtual const CResult CopyRow(int32_t i32StartRow, int32_t i32EndRow);
138 virtual const CResult CopyColumn(int32_t i32StartCol, int32_t i32EndCol);
139 virtual const CResult CopyAll();
140
141 virtual const CResult SetCellControlTypeEdit(int32_t i32Row, int32_t i32Col);
142 virtual const CResult SetCellControlTypeCheckBox(int32_t i32Row, int32_t i32Col, bool bDisplayValue = true, Base::CFLString<wchar_t> flsTrueValue = L"", Base::CFLString<wchar_t> flsFalseValue = L"");
143
144 virtual const CResult SetCellText(int32_t i32Row, int32_t i32Col, const Base::CFLString<wchar_t>& flsText);
145 virtual Base::CFLString<wchar_t> GetCellText(int32_t i32Row, int32_t i32Col);
146 virtual const CResult SetCellCheck(int32_t i32Row, int32_t i32Col, bool bCheck);
147 virtual bool GetCellCheck(int32_t i32Row, int32_t i32Col);
148 virtual const CResult SetCellCheckTrueFalseValue(int32_t i32Row, int32_t i32Col, const Base::CFLString<wchar_t>& strTrue, const Base::CFLString<wchar_t>& strFalse);
149
150 virtual const CResult AddComboBoxString(int32_t i32Row, int32_t i32Col, const Base::CFLString<wchar_t>& str);
151
152 virtual const CResult ClearSpan();
153 virtual const CResult AddSpan(int32_t i32StartRow, int32_t i32StartCol, int32_t i32EndRow, int32_t i32EndCol);
154 virtual const CResult DeleteSpan(int32_t i32Row, int32_t i32Col);
155
156 virtual int32_t GetRowCount() const;
157 virtual int32_t GetColumnCount() const;
158 virtual void SetBreakRButtonUp(bool bSet);
159 virtual void Refresh();
160 virtual BOOL DeleteRow(int32_t i32Row);
161
162 virtual const CResult ClearCellChangedProcedure();
163 virtual const CResult AddCellChangedProcedure(CFLSheetProcedure procCellChanged);
164 virtual CFLSheetProcedure GetCellChangedProcedure(int32_t i32Index) const;
165 virtual const CResult RemoveCellChangedProcedure(int32_t i32Index);
166
167 virtual const CResult ClearButtonCellClickProcedure();
168 virtual const CResult SetButtonCellClickProcedure(int32_t i32Row, int32_t i32Col, const CFLSheetButtonClickProcedure& procButtonClick);
169 virtual const CResult SetButtonCellClickProcedure(int32_t i32Row, int32_t i32Col, const CFLSheetButtonClickProcedure* pProcButtonClick, bool bAutoDestroy = true);
170 virtual const CFLSheetButtonClickProcedure* GetButtonCellClickProcedure(int32_t i32Row, int32_t i32Col) const;
171 virtual const CResult RemoveButtonCellClickProcedure(int32_t i32Row, int32_t i32Col);
172
173 virtual const CResult ClearSortPriority();
174 virtual const CResult SetSortPriority(const Base::CFLArray<int32_t>& flaSortPriorityRowIndex);
175 virtual const Base::CFLArray<int32_t> GetSortPriority() const;
176
177 virtual const CResult EnableColumnHeaderIfHeaderDataExists(bool bEnable);
178 virtual bool IsColumnHeaderIfHeaderDataExistsEnabled() const;
179
180 virtual const CResult EnableColumnHeaderIfHeaderDataEmpty(bool bEnable);
181 virtual bool IsColumnHeaderIfHeaderDataEmptyEnabled() const;
182
183 virtual const CResult SetExtraData(int32_t i32Row, int32_t i32Col, void* pExtraData);
184 virtual void* GetExtraData(int32_t i32Row, int32_t i32Col) const;
185
186 virtual void InvalidateSheet();
187
188 virtual bool AutoSizeRow(int32_t i32Row, bool bResetScroll = true);
189 virtual bool AutoSizeColumn(int32_t i32Col, ESheetAutoSizeMode eAutoSizeStyle = ESheetAutoSizeMode_Default, bool bResetScroll = true);
190 virtual void AutoSizeRows();
191 virtual void AutoSizeColumns(ESheetAutoSizeMode eAutoSizeStyle = ESheetAutoSizeMode_Default);
192 virtual void AutoSizeRowsAndColumns(ESheetAutoSizeMode eAutoSizeStyle = ESheetAutoSizeMode_Default);
193 virtual void ExpandColumnsToFit(bool bExpandFixed = true);
194 virtual void ExpandLastColumn();
195 virtual void ExpandRowsToFit(bool bExpandFixed = true);
196 virtual void ExpandRowsAndColumnsToFit(bool bExpandFixed = true);
197
198 protected:
199 virtual const CResult InternalClearSheet();
200 virtual const CResult InternalSetData(const Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>& flaData);
201 virtual const CResult InternalInsertData(const Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>& flaData, int32_t i32Row);
202 virtual const CResult InternalAppendData(const Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>& flaData);
203 virtual const CResult InternalAppendData(const Base::CFLArray<Base::CFLString<wchar_t>>& flaData);
204
205 virtual const CResult InternalSetDataAt(int32_t i32Row, const Base::CFLArray<Base::CFLString<wchar_t>>& flaData);
206
207 virtual const CResult InternalAssignData(const Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>>& flaData);
208
209 virtual const CResult InternalAlignData();
210
211 virtual const CResult InternalSetData(int32_t i32Row, int32_t i32Col, const Base::CFLString<wchar_t>& flsData);
212
213 protected:
214 CFLSheet* m_pFlSheet;
215 Base::CFLArray<Base::CFLString<wchar_t>> m_flaHeader;
216 Base::CFLArray<Base::CFLArray<Base::CFLString<wchar_t>>> m_flaData;
217 std::map<int32_t, int32_t>& m_mapColWidth;
218 std::map<int32_t, int32_t>& m_mapRowHeight;
219 std::map<int32_t, float>& m_mapColWidthRatio;
220 std::map<int32_t, float>& m_mapRowHeightRatio;
221 ESizeMode m_eColWidthSizeMode;
222 ESizeMode m_eRowHeightSizeMode;
223 bool m_bShow;
224 bool m_bSortByHeaderClick;
225 mutable bool m_bEditable;
226 mutable bool m_bEditableOnlyFocusedCell;
227 mutable bool m_bListMode;
228
229 bool m_bColumnHeaderIfHeaderDataExists = true;
230 bool m_bColumnHeaderIfHeaderDataEmpty = false;
231
232 friend class CGUILayoutBase;
233 friend class CFLSheet;
234 };
235 }
236}
Definition D2DObject.h:12
ESizeMode
Specifies how a UI element's size is determined.
Definition FLImagingGUI/DefinitionsGUI.h:16476
EFLSheetCellStatus
Definition FLImagingGUI/DefinitionsGUI.h:15600
EFLSheetCellType
Definition FLImagingGUI/DefinitionsGUI.h:15707
@ Show
Show figure.
Definition FLImagingGUICLR/DefinitionsGUIView3D.h:3571
@ Clear
Clear all the figure objects.
Definition FLImagingGUICLR/DefinitionsGUI.h:5069
@ CopyAll
Menu item that copies all of the figures stored in the image.
Definition FLImagingGUICLR/DefinitionsGUI.h:4323