Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CComboBox.hpp
Go to the documentation of this file.
1#ifndef LIBS_GUI_CCOMBOBOX_HPP_
2#define LIBS_GUI_CCOMBOBOX_HPP_
3
4#include "core/assert.hpp"
5#include "core/concepts.hpp"
6#include "third_party/magic_enum/magic_enum.hpp"
8
9#include <bits/stdint-uintn.h>
10#include <set>
11#include <string>
12#include <vector>
13
14enum class EComboBoxType
15{
16 Numeric,
17 Text
18};
19
21{
22public:
23 SOptionComboBox(uint32_t id, std::string_view option);
24 ~SOptionComboBox() = default;
25
26 uint32_t m_id;
27 std::string m_txtOption;
28};
29
31{
32public:
33 SComboBox(EComboBoxType type, uint32_t *idSelectedRef, const std::string &strValueRef,
34 std::vector<SOptionComboBox *> **options);
35 ~SComboBox();
36
37 [[nodiscard]] size_t size() const;
38
40
41 std::vector<SOptionComboBox *> *m_options;
42 uint32_t *m_idSelectedRef;
43 std::string m_strValue;
45};
46
48{
49public:
50 explicit CComboBox(bool hasEntry = false);
51 explicit CComboBox(uint32_t *idSelected);
52 ~CComboBox() override;
53
54 void addOption(uint32_t idOption, std::string_view textOption);
55
56 [[nodiscard]] uint32_t getId(int32_t index) const;
57 [[nodiscard]] int32_t getIndex(int32_t idOption) const;
58 uint64_t getIdOptionSelection();
59 uint32_t getIdFirstOption();
60
61 void destroyWidget() override;
62
63 size_t size();
64
66
67 void removeAllOptions();
68 void removeOptionByIdOption(uint32_t idOption);
69 void removeOptionByIndex(uint32_t index);
70
71 void setId(uint32_t option);
72 void setOption(uint32_t option);
73 void setHasEntry(bool hasEntry);
74
75private:
76 uint32_t idToOption(uint32_t id);
77 IWidget *createWidget(CDialog *dialogFather) override;
78
82};
83
85{
86public:
87 CComboBoxString(const std::string &strValue, const std::set<std::string> &values, bool hasEntry = false);
88 CComboBoxString(std::string *strValueRef, const std::set<std::string> &values, bool hasEntry = false);
89 ~CComboBoxString() override;
90
91 void addOption(std::string_view textOption);
92 void removeAllOptions();
93
94 void destroyWidget() override;
95
96 size_t size();
97
98 [[nodiscard]] bool hasStringSelected() const;
99 [[nodiscard]] std::string getStringSelected() const;
100 void setStringSelected(std::string_view strSelected);
101
102private:
103 IWidget *createWidget(CDialog *dialogFather) override;
104
107};
108
109template<typename TypeEnum>
111{
112public:
113 template<iv::concepts::EnumType E>
114 static CComboBoxEnum<E> *createFillComboEnum(E &enumSelected)
115 {
116 CComboBoxEnum<E> *comboBoxEnum = new CComboBoxEnum(&enumSelected);
117 for (E enumValue: magic_enum::enum_values<E>())
118 {
119 comboBoxEnum->addOption(enumValue, magic_enum::enum_name(enumValue));
120 }
121 return comboBoxEnum;
122 }
123
124 explicit CComboBoxEnum(TypeEnum *enumSelected) : CComboBox((uint32_t *) enumSelected)
125 {
126 uint32_t sizeTemplate;
127
128 sizeTemplate = sizeof(TypeEnum);
129 IV_ASSERT_NOMSG(sizeTemplate == sizeof(uint32_t));
130 }
131 void addOption(TypeEnum idEnum, std::string_view textOption)
132 {
133 CComboBox::addOption((uint32_t) idEnum, textOption);
134 }
135
137 {
138 return (TypeEnum) getIdOptionSelection();
139 }
140
141 void setOptionSelected(TypeEnum option)
142 {
143 setOption((uint32_t) option);
144 }
145};
146
147#endif /* LIBS_GUI_CCOMBOBOX_HPP_ */
EComboBoxType
Definition CComboBox.hpp:15
#define IV_ASSERT_NOMSG(expr,...)
Definition assert.hpp:108
Definition AbstractSelectionComponent.hpp:10
Definition CComboBox.hpp:111
void setOptionSelected(TypeEnum option)
Definition CComboBox.hpp:141
TypeEnum getOptionSelected()
Definition CComboBox.hpp:136
void addOption(TypeEnum idEnum, std::string_view textOption)
Definition CComboBox.hpp:131
static CComboBoxEnum< E > * createFillComboEnum(E &enumSelected)
Definition CComboBox.hpp:114
CComboBoxEnum(TypeEnum *enumSelected)
Definition CComboBox.hpp:124
Definition CComboBox.hpp:85
size_t size()
Definition CComboBox.cpp:594
IWidget * createWidget(CDialog *dialogFather) override
Definition CComboBox.cpp:478
void removeAllOptions()
Definition CComboBox.cpp:575
void setStringSelected(std::string_view strSelected)
Definition CComboBox.cpp:652
CComboBoxString(const std::string &strValue, const std::set< std::string > &values, bool hasEntry=false)
Definition CComboBox.cpp:533
std::string getStringSelected() const
Definition CComboBox.cpp:625
void destroyWidget() override
Definition CComboBox.cpp:587
SComboBox * m_sComboBox
Definition CComboBox.hpp:105
bool hasStringSelected() const
Definition CComboBox.cpp:600
void addOption(std::string_view textOption)
Definition CComboBox.cpp:560
bool m_hasEntry
Definition CComboBox.hpp:106
~CComboBoxString() override
Definition CComboBox.hpp:48
void destroyWidget() override
Definition CComboBox.cpp:178
uint32_t idToOption(uint32_t id)
Definition CComboBox.cpp:412
IWidget * createWidget(CDialog *dialogFather) override
Definition CComboBox.cpp:432
size_t size()
Definition CComboBox.cpp:185
uint32_t m_defaultOption
Definition CComboBox.hpp:81
void addOption(uint32_t idOption, std::string_view textOption)
Definition CComboBox.cpp:191
void setOption(uint32_t option)
Definition CComboBox.cpp:329
void clearNotDrawnComboBox()
Definition CComboBox.cpp:206
void removeOptionByIndex(uint32_t index)
Definition CComboBox.cpp:248
int32_t getIndex(int32_t idOption) const
Definition CComboBox.cpp:281
void setHasEntry(bool hasEntry)
Definition CComboBox.cpp:528
bool m_hasEntry
Definition CComboBox.hpp:80
uint64_t getIdOptionSelection()
Definition CComboBox.cpp:344
void removeAllOptions()
Definition CComboBox.cpp:217
SComboBox * m_sComboBox
Definition CComboBox.hpp:79
void setId(uint32_t option)
Definition CComboBox.cpp:306
uint32_t getIdFirstOption()
Definition CComboBox.cpp:364
void removeOptionByIdOption(uint32_t idOption)
Definition CComboBox.cpp:229
uint32_t getId(int32_t index) const
Definition CComboBox.cpp:262
CComboBox(bool hasEntry=false)
Definition CComboBox.cpp:457
~CComboBox() override
Definition CComboBox.cpp:171
Definition CDialog.hpp:21
Definition IWidget.hpp:5
Definition CComboBox.hpp:31
EComboBoxType m_type
Definition CComboBox.hpp:39
std::string m_strValue
Definition CComboBox.hpp:43
IWidget * m_compBox
Definition CComboBox.hpp:44
std::vector< SOptionComboBox * > * m_options
Definition CComboBox.hpp:41
SComboBox(EComboBoxType type, uint32_t *idSelectedRef, const std::string &strValueRef, std::vector< SOptionComboBox * > **options)
Definition CComboBox.cpp:386
uint32_t * m_idSelectedRef
Definition CComboBox.hpp:42
~SComboBox()
Definition CComboBox.cpp:399
size_t size() const
Definition CComboBox.cpp:405
Definition CComboBox.hpp:21
SOptionComboBox(uint32_t id, std::string_view option)
Definition CComboBox.cpp:380
uint32_t m_id
Definition CComboBox.hpp:26
~SOptionComboBox()=default
std::string m_txtOption
Definition CComboBox.hpp:27