Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
AbstractComponentGUI.hpp
Go to the documentation of this file.
1#ifndef LIBS_GUI_ABSTRACTCOMPONENTGUI_HPP_
2#define LIBS_GUI_ABSTRACTCOMPONENTGUI_HPP_
3
4#include "core/defines.hpp"
5#include "core/memOps.hpp"
6#include "core/types.hpp"
15
16#include <bits/stdint-uintn.h>
17#include <functional>
18#include <memory>
19#include <optional>
20#include <string>
21#include <vector>
22
23class CAttrColorComp;
24class CDialog;
25class IComponentsGUI;
26class IListenerTimer;
27class IWidget;
28
30{
31public:
34 virtual ~AbstractComponentGUI();
35
37 void setDialogFatherOption(CDialog *dialogFatherRef);
38
39 [[nodiscard]] std::string getTooltip() const;
40 [[nodiscard]] bool getActive() const;
41 [[nodiscard]] bool getInactiveVisualFeedback() const;
42 void getSize(double *sizeX, double *sizeY) const;
43
44 IWidget *makeWidget(CDialog *dialogFatherRef, AbstractComponentGUI *componentFatherRef);
45 virtual void destroyWidget();
46
47 void addDataPanel(IDataPanel **dataPanel);
48
49 void addListenerAccept(IListenerAccept **listenerAccept);
50 void addListenerValidate(IListenerValidate **listenerValidate);
51 void addListenerChange(IListenerChange **listenerChange);
52 void addListenerClose(IListenerClose **listenerClose);
53 void addListenerIsAccept(IListenerIsAccept **listenerIsAccept);
54 void addListenerUpdate(IListenerUpdate **listenerUpdate);
55 void addListenerTimer(uint64_t timeout, IListenerTimer **timer);
56
57 void emplaceListenerAccept(std::function<void()> acceptFunctionCall);
58 void emplaceListenerClose(std::function<void()> closeFunctionCall);
59 void emplaceListenerChange(std::function<void(CDialog *, AbstractComponentGUI *)> changeFunctionCall);
60 void emplaceListenerIsAccept(std::function<bool(AbstractComponentGUI *, std::string *)> isAcceptFunctionCall);
61 void emplaceListenerTimer(uint64_t timeout, std::function<bool()> timerExecutionFunctionCall);
62
63 bool runValidate();
64 void runChange();
65 void runClose();
66 bool runListenersIsAccept(std::string *messageError);
67 void runListenersAccept();
68 void runListenersUpdate();
69
70 void displayPopOver(std::string_view message, iv::types::milliseconds timeout = 2000);
71
72 void grabFocus();
73 void setName(const std::string &name);
74 void setTooltip(std::string_view tooltip);
75 void setActive(bool isActive);
78 void setBlinking(bool isBlinking);
79 void setColorBlink(iv::types::color colorARGB);
84 [[maybe_unused]] void setDefaultColorForeground();
88 void setVisible(bool isVisible);
89 void setInactiveVisualFeedback(bool hasInactiveVisualFeedback);
90
91 IWidget *getWidget() const;
92 bool getBlinking();
93
94 void updateColor();
95
96protected:// inherited classes need access to their listeners to delete in method 'destroyWidget'
97 std::vector<IListenerIsAccept *> *m_listenersIsAccept;
98 std::vector<IListenerAccept *> *m_listenersAccept;
99 std::vector<IListenerValidate *> *m_listenersValidate;
100 std::vector<IListenerChange *> *m_listenersChange;
101 std::vector<IListenerClose *> *m_listenersClose;
102 std::vector<IListenerUpdate *> *m_listenersUpdate;
103
104 const std::weak_ptr<IComponentsGUI> &m_frameRef {m_mutableFrameRef};
105 std::weak_ptr<IComponentsGUI> m_mutableFrameRef;
106
107private:
109 {
110 SPrvTimerData(uint64_t timeout, IListenerTimer **timer);
112
113 uint64_t m_timeout;
115 };
116
117 virtual IWidget *createWidget(CDialog *dialogFatherRef) = 0;
118 void prvProcessChangeRecursive(uint64_t recursiveLevel);
119 virtual void prvProcessCloseChildren();
120
121 std::string m_name;
122 std::string m_tooltip;
126
129
131
135
136 std::optional<iv::types::width> m_sizeXMaximum;
137 std::optional<iv::types::height> m_sizeYMaximum;
138
139 std::vector<std::shared_ptr<SPrvTimerData>> m_rcpTimers;
140 std::vector<IDataPanel *> *m_dataPanels;
141
142protected:
144
146
148};
149
150#endif /* LIBS_GUI_ABSTRACTCOMPONENTGUI_HPP_ */
Definition AbstractComponentGUI.hpp:30
void setInactiveVisualFeedback(bool hasInactiveVisualFeedback)
Definition AbstractComponentGUI.cpp:808
std::vector< IListenerIsAccept * > * m_listenersIsAccept
Definition AbstractComponentGUI.hpp:97
void addListenerValidate(IListenerValidate **listenerValidate)
Definition AbstractComponentGUI.cpp:333
void runListenersAccept()
Definition AbstractComponentGUI.cpp:609
virtual IWidget * createWidget(CDialog *dialogFatherRef)=0
void getSize(double *sizeX, double *sizeY) const
Definition AbstractComponentGUI.cpp:219
bool runValidate()
Definition AbstractComponentGUI.cpp:559
void setDefaultWidthMaximum(iv::types::width sizeX)
Definition AbstractComponentGUI.cpp:774
IWidget * m_widget
Definition AbstractComponentGUI.hpp:145
void setVisible(bool isVisible)
Definition AbstractComponentGUI.cpp:798
void setDefaultMinimum(iv::types::width sizeX, iv::types::height sizeY)
Definition AbstractComponentGUI.cpp:759
IWidget * makeWidget(CDialog *dialogFatherRef, AbstractComponentGUI *componentFatherRef)
Definition AbstractComponentGUI.cpp:227
void setHAlignment(CEnumComponentsGUI::EAlignmentHorizontal alignment)
Definition AbstractComponentGUI.cpp:679
std::optional< iv::types::height > m_sizeYMaximum
Definition AbstractComponentGUI.hpp:137
void addListenerClose(IListenerClose **listenerClose)
Definition AbstractComponentGUI.cpp:354
void runChange()
Definition AbstractComponentGUI.cpp:574
void addListenerTimer(uint64_t timeout, IListenerTimer **timer)
Agrega un listener de tipo Timer.
Definition AbstractComponentGUI.cpp:393
void setColorForeground(iv::types::color colorARGB)
Definition AbstractComponentGUI.cpp:719
void emplaceListenerChange(std::function< void(CDialog *, AbstractComponentGUI *)> changeFunctionCall)
Agrega un IListenerChange formado mediante una función lambda.
Definition AbstractComponentGUI.cpp:519
std::string m_name
Definition AbstractComponentGUI.hpp:121
void addListenerIsAccept(IListenerIsAccept **listenerIsAccept)
Definition AbstractComponentGUI.cpp:365
std::vector< std::shared_ptr< SPrvTimerData > > m_rcpTimers
Definition AbstractComponentGUI.hpp:139
void runListenersUpdate()
Definition AbstractComponentGUI.cpp:619
void setTooltip(std::string_view tooltip)
Definition AbstractComponentGUI.cpp:658
CEnumComponentsGUI::EAlignmentHorizontal m_alignmentHorizontalComponent
Definition AbstractComponentGUI.hpp:127
void addDataPanel(IDataPanel **dataPanel)
Definition AbstractComponentGUI.cpp:313
std::string getTooltip() const
Definition AbstractComponentGUI.cpp:204
void displayPopOver(std::string_view message, iv::types::milliseconds timeout=2000)
Definition AbstractComponentGUI.cpp:631
void setName(const std::string &name)
Definition AbstractComponentGUI.cpp:647
void addListenerAccept(IListenerAccept **listenerAccept)
Definition AbstractComponentGUI.cpp:322
std::optional< iv::types::width > m_sizeXMaximum
Definition AbstractComponentGUI.hpp:136
void emplaceListenerTimer(uint64_t timeout, std::function< bool()> timerExecutionFunctionCall)
Agrega un IListenerTimer formado mediante una función lambda.
Definition AbstractComponentGUI.cpp:550
iv::types::height m_sizeYMinimum
Definition AbstractComponentGUI.hpp:134
bool m_isActive
Definition AbstractComponentGUI.hpp:124
CEnumComponentsGUI::EAlignmentVertical m_alignmentVerticalComponent
Definition AbstractComponentGUI.hpp:128
std::vector< IDataPanel * > * m_dataPanels
Definition AbstractComponentGUI.hpp:140
bool getBlinking()
Definition AbstractComponentGUI.cpp:818
std::vector< IListenerClose * > * m_listenersClose
Definition AbstractComponentGUI.hpp:101
bool m_isVisible
Definition AbstractComponentGUI.hpp:123
CAttrColorComp * m_attrColor
Definition AbstractComponentGUI.hpp:130
AbstractComponentGUI(const AbstractComponentGUI &)=delete
virtual void destroyWidget()
Definition AbstractComponentGUI.cpp:297
std::vector< IListenerChange * > * m_listenersChange
Definition AbstractComponentGUI.hpp:100
const std::weak_ptr< IComponentsGUI > & m_frameRef
Definition AbstractComponentGUI.hpp:104
void emplaceListenerIsAccept(std::function< bool(AbstractComponentGUI *, std::string *)> isAcceptFunctionCall)
Agrega un IListenerIsAccept formado mediante una función lambda.
Definition AbstractComponentGUI.cpp:534
void setColorBlink(iv::types::color colorARGB)
Definition AbstractComponentGUI.cpp:699
void addListenerUpdate(IListenerUpdate **listenerUpdate)
Definition AbstractComponentGUI.cpp:376
CDialog * m_dialogFatherRef
Definition AbstractComponentGUI.hpp:147
CDialog * getDialogFatherRef()
Definition AbstractComponentGUI.cpp:191
std::vector< IListenerValidate * > * m_listenersValidate
Definition AbstractComponentGUI.hpp:99
bool m_hasSizeMinimum
Definition AbstractComponentGUI.hpp:132
void setDefaultColorForeground()
Definition AbstractComponentGUI.cpp:749
std::weak_ptr< IComponentsGUI > m_mutableFrameRef
Definition AbstractComponentGUI.hpp:105
bool getActive() const
Definition AbstractComponentGUI.cpp:209
std::vector< IListenerUpdate * > * m_listenersUpdate
Definition AbstractComponentGUI.hpp:102
bool m_hasInactiveVisualFeedback
Definition AbstractComponentGUI.hpp:125
std::string m_tooltip
Definition AbstractComponentGUI.hpp:122
void updateColor()
Definition AbstractComponentGUI.cpp:823
void setDefaultColorBlink()
Definition AbstractComponentGUI.cpp:729
iv::types::width m_sizeXMinimum
Definition AbstractComponentGUI.hpp:133
void setActive(bool isActive)
Definition AbstractComponentGUI.cpp:669
void setDefaultHeightMaximum(iv::types::height sizeY)
Definition AbstractComponentGUI.cpp:786
void setBlinking(bool isBlinking)
Definition AbstractComponentGUI.cpp:689
bool getInactiveVisualFeedback() const
Definition AbstractComponentGUI.cpp:214
void addListenerChange(IListenerChange **listenerChange)
Definition AbstractComponentGUI.cpp:343
AbstractComponentGUI()
Definition AbstractComponentGUI.cpp:46
void setDefaultColorBackground()
Definition AbstractComponentGUI.cpp:739
void emplaceListenerAccept(std::function< void()> acceptFunctionCall)
Agrega un IListenerAccept formado mediante una función lambda.
Definition AbstractComponentGUI.cpp:491
void prvProcessChangeRecursive(uint64_t recursiveLevel)
Definition AbstractComponentGUI.cpp:25
void setVAlignment(CEnumComponentsGUI::EAlignmentVertical alignment)
Definition AbstractComponentGUI.cpp:684
void grabFocus()
Definition AbstractComponentGUI.cpp:639
void setColorBackground(iv::types::color colorARGB)
Definition AbstractComponentGUI.cpp:709
IWidget * getWidget() const
Definition AbstractComponentGUI.cpp:813
bool runListenersIsAccept(std::string *messageError)
Definition AbstractComponentGUI.cpp:594
virtual void prvProcessCloseChildren()
Definition AbstractComponentGUI.cpp:42
AbstractComponentGUI * m_componentFatherRef
Definition AbstractComponentGUI.hpp:143
std::vector< IListenerAccept * > * m_listenersAccept
Definition AbstractComponentGUI.hpp:98
void emplaceListenerClose(std::function< void()> closeFunctionCall)
Agrega un IListenerClose formado mediante una función lambda.
Definition AbstractComponentGUI.cpp:505
void runClose()
Definition AbstractComponentGUI.cpp:582
void setDialogFatherOption(CDialog *dialogFatherRef)
Definition AbstractComponentGUI.cpp:198
virtual ~AbstractComponentGUI()
Definition AbstractComponentGUI.cpp:81
Definition CAttrColorComp.hpp:10
Definition CDialog.hpp:21
EAlignmentHorizontal
Definition CEnumComponentsGUI.hpp:8
EAlignmentVertical
Definition CEnumComponentsGUI.hpp:16
Definition IComponentsGUI.hpp:37
Definition IDataPanel.hpp:5
Definition IListenerAccept.hpp:5
Definition IListenerChange.hpp:7
Definition IListenerClose.hpp:5
Definition IListenerIsAccept.hpp:7
Definition IListenerTimer.hpp:5
Definition IListenerUpdate.hpp:5
Definition IListenerValidate.hpp:5
Definition IWidget.hpp:5
double height
Definition types.hpp:14
uint64_t milliseconds
Definition types.hpp:22
double width
Definition types.hpp:23
uint32_t color
Definition types.hpp:12
Definition AbstractComponentGUI.hpp:109
SPrvTimerData(uint64_t timeout, IListenerTimer **timer)
Definition AbstractComponentGUI.cpp:10
~SPrvTimerData()
Definition AbstractComponentGUI.cpp:16
uint64_t m_timeout
Definition AbstractComponentGUI.hpp:113
IListenerTimer * m_timer
Definition AbstractComponentGUI.hpp:114