Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
AbstractMimicElement.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_MIMICS_ABSTRACTMIMICELEMENT_HPP_
2#define IV_SRC_MIMICS_ABSTRACTMIMICELEMENT_HPP_
3
7#include "mimics/structs.hpp"
12
13#include <memory>
14#include <optional>
15#include <unordered_set>
16
17namespace iv::mimics
18{
19
21{
22public:
24
25 virtual bool load(const iv::file::xml::node &nodeControlMimic);
26 virtual bool save(iv::file::xml::node &nodeControlMimic) const;
27
28 [[nodiscard]] const iv::mimics::TitleSettings &getTitleSettings() const
29 {
30 return m_titleSettings;
31 }
32
33 [[nodiscard]] virtual std::shared_ptr<iv::mimics::AbstractMimicElement> clone() const = 0;
34 [[nodiscard]] std::weak_ptr<iv::mimics::OnlineVariables> getOnlineVariables() const;
35 virtual void updateEnabledLanguages(const std::set<iv::eLanguage> &enabledLanguages);
36
37 //Controller
41
46 virtual void mapChannels(const std::function<void(std::weak_ptr<iv::channels::AbstractChannel> &)> &mapFunction);
47
53 virtual void getChannels(
54 const std::shared_ptr<std::vector<std::weak_ptr<iv::channels::AbstractChannel>>> &channelsInControl) const;
55
56 virtual void addOptionsMenu(const std::shared_ptr<iv::mimics::MimicControlMenu> &menu);
57
58 [[nodiscard]] bool isPointInMimic(iv::types::coord x, iv::types::coord y) const;
59
60 [[nodiscard]] virtual std::optional<iv::types::color> getColorWorkingState() const;
61 [[nodiscard]] virtual std::optional<iv::types::color> getColorControlState() const;
62 [[nodiscard]] virtual std::optional<std::string> getStringWorkingState() const;
63 [[nodiscard]] virtual std::optional<std::string> getStringControlState() const;
64 [[nodiscard]] virtual std::optional<iv::mimics::eAlarmState> getAlarmState() const;
65 [[nodiscard]] virtual iv::math::geometry::Point2d
66 getAlarmIconPosition(const iv::math::geometry::Area &elementSize) const;
67
71
72 [[nodiscard]] virtual bool canShowCircularMenu() const;
73
74 [[nodiscard]] virtual bool hasAlternativeAction() const;
75
79
84 virtual void executeCommand(const std::string &strAction) const = 0;
85
89 virtual void runCommandControlWithoutMenu();
90
96 virtual void runAlternativeAction(CDialog *dlgFatherRef);
97
101 virtual void runEvaluation();
102
106
109
114
117
122 virtual void postProcess();
123
126
132 void draw(IGraphics *graphics, iv::eLanguage drawingLanguage,
133 const std::optional<std::unordered_set<iv::types::channelId>> &channelsRepeatedOpt = std::nullopt,
134 const std::optional<std::set<std::shared_ptr<AbstractMimicElement>>> &otherMimicElements = std::nullopt);
135 void setRedrawFlag(bool reDrawFlag = true);
136
141 void removeGraphicsObjects(IGraphics *graphics);
142
145 virtual void move(double dx, double dy);
146
147 bool rotate(double angle);
148
149 void handleEvent(CEventMotion *evtMotion);
150
154 eZDepth m_depth;// TODO: [IV_MODEL] No se escribe en el xml y no se asigna en ningun sitio?
155
158
161
164 std::shared_ptr<OnlineVariables> m_onlineVariables;
165
166 std::shared_ptr<std::vector<std::weak_ptr<iv::channels::AbstractChannel>>> m_addedAlarms;
167
168protected:
171
172 std::vector<iv::math::geometry::Point2d> calculateLimits(IGraphics *graphics, iv::eLanguage drawingLanguage);
173 [[nodiscard]] virtual bool checkIntegrity() const;
174 virtual bool hasRepeatedChannels(const std::unordered_set<iv::types::channelId> &channelsRepeatedOpt) const;
175 virtual bool
176 isRepeatedMimicElement(const std::set<std::shared_ptr<AbstractMimicElement>> &otherMimicsElements) const;
177
185 virtual void drawSpecific(IGraphics *graphics, std::optional<iv::types::color> colorWorkingState,
186 std::optional<iv::types::color> colorControlState, iv::eLanguage drawingLanguage) = 0;
187
190 [[nodiscard]] AbstractComponentGUI *panelEditOnlineVariables() const;
191 [[nodiscard]] AbstractComponentGUI *panelEditAddedAlarms() const;
192
196 bool m_redrawFlag {false};
197
198private:
199 // Draw
200 [[nodiscard]] std::unique_ptr<CDrawText> prvCreateTextTitle(iv::eLanguage language) const;
201 static bool
202 checkHasRepeated(const std::unordered_set<iv::types::channelId> &repeatedChannels,
203 const std::shared_ptr<std::vector<std::weak_ptr<iv::channels::AbstractChannel>>> &elementChannels);
204
205 void applyPosition(IGraphics *graphics) const;
206 void applyRotation(IGraphics *graphics) const;
207
208 [[nodiscard]] std::optional<iv::mimics::eAlarmState> getAddedAlarmsMimicAlarmState() const;
209
210 std::unique_ptr<CDrawText> m_textTitleOpt;
211 std::shared_ptr<std::vector<iv::math::geometry::Point2d>> m_polylinesLimits;
212
215
218
219 bool m_isMarked {false};
220
222 {
223 static constexpr double offlineCrossLineWidthProportion {0.02};
226 };
227 struct Keys
228 {
229 static constexpr std::string_view width {"Width"};
230 static constexpr std::string_view height {"Height"};
231 static constexpr std::string_view addedChannelId {"AddedChannelId"};
232 };
233 struct Sections
234 {
235 static constexpr std::string_view titleSettings {"TitleSettings"};
236 static constexpr std::string_view location {"Location"};
237 static constexpr std::string_view onlineVariables {"OnlineVariables"};
238 static constexpr std::string_view addedAlarms {"AddedAlarms"};
239 static constexpr std::string_view addedChannel {"AddedChannel"};
240 };
242 {
243 static constexpr std::string string {};
244 static constexpr std::string mimicElementType = {"Line"};
245 static constexpr iv::types::width width {50};
246 static constexpr iv::types::height height {50};
247 };
248};
249
250}// namespace iv::mimics
251
252#endif//IV_SRC_MIMICS_ABSTRACTMIMICELEMENT_HPP_
Definition AbstractComponentGUI.hpp:30
Definition CDialog.hpp:21
Definition CEventMotion.hpp:15
Definition IGraphics.hpp:20
Definition xmlFile.hpp:15
Definition AbstractMimicElement.hpp:21
bool isPointInMimic(iv::types::coord x, iv::types::coord y) const
Definition AbstractMimicElement.cpp:210
std::weak_ptr< iv::mimics::OnlineVariables > getOnlineVariables() const
Definition AbstractMimicElement.cpp:136
virtual void move(double dx, double dy)
MOVEMENTS.
Definition AbstractMimicElement.cpp:585
bool m_redrawFlag
Definition AbstractMimicElement.hpp:196
std::unique_ptr< CDrawText > prvCreateTextTitle(iv::eLanguage language) const
Definition AbstractMimicElement.cpp:812
std::shared_ptr< std::vector< iv::math::geometry::Point2d > > m_polylinesLimits
Definition AbstractMimicElement.hpp:211
bool m_isMarked
Definition AbstractMimicElement.hpp:219
void removeGraphicsObjects(IGraphics *graphics)
Elimina el elemento gráfico.
Definition AbstractMimicElement.cpp:729
iv::types::width m_width
Definition AbstractMimicElement.hpp:159
virtual bool save(iv::file::xml::node &nodeControlMimic) const
Definition AbstractMimicElement.cpp:104
AbstractComponentGUI * panelEditSize()
Definition AbstractMimicElement.cpp:940
iv::mimics::Background m_background
Definition AbstractMimicElement.hpp:163
virtual bool hasAlternativeAction() const
Definition AbstractMimicElement.cpp:317
bool m_isCreatedBackground
Definition AbstractMimicElement.hpp:217
virtual iv::math::geometry::Point2d getAlarmIconPosition(const iv::math::geometry::Area &elementSize) const
Definition AbstractMimicElement.cpp:307
void applyRotation(IGraphics *graphics) const
Definition AbstractMimicElement.cpp:870
std::shared_ptr< std::vector< std::weak_ptr< iv::channels::AbstractChannel > > > m_addedAlarms
Definition AbstractMimicElement.hpp:166
std::shared_ptr< OnlineVariables > m_onlineVariables
Definition AbstractMimicElement.hpp:164
void setRedrawFlag(bool reDrawFlag=true)
Definition AbstractMimicElement.cpp:580
virtual void drawSpecific(IGraphics *graphics, std::optional< iv::types::color > colorWorkingState, std::optional< iv::types::color > colorControlState, iv::eLanguage drawingLanguage)=0
Draws the specific abstract element shape.
virtual void getChannels(const std::shared_ptr< std::vector< std::weak_ptr< iv::channels::AbstractChannel > > > &channelsInControl) const
Añade los canales que el MimicElement tiene enlazado.
Definition AbstractMimicElement.cpp:165
void draw(IGraphics *graphics, iv::eLanguage drawingLanguage, const std::optional< std::unordered_set< iv::types::channelId > > &channelsRepeatedOpt=std::nullopt, const std::optional< std::set< std::shared_ptr< AbstractMimicElement > > > &otherMimicElements=std::nullopt)
DRAWS.
Definition AbstractMimicElement.cpp:337
virtual void updateEnabledLanguages(const std::set< iv::eLanguage > &enabledLanguages)
Definition AbstractMimicElement.cpp:141
void handleEvent(CEventMotion *evtMotion)
Definition AbstractMimicElement.cpp:657
virtual bool load(const iv::file::xml::node &nodeControlMimic)
Definition AbstractMimicElement.cpp:62
std::vector< iv::math::geometry::Point2d > calculateLimits(IGraphics *graphics, iv::eLanguage drawingLanguage)
Definition AbstractMimicElement.cpp:756
eZDepth m_depth
Definition AbstractMimicElement.hpp:154
virtual void runAlternativeAction(CDialog *dlgFatherRef)
Ejecuta código específico del control.
Definition AbstractMimicElement.cpp:328
virtual void runEvaluation()
Ejecuta la evaluación del control.
Definition AbstractMimicElement.cpp:332
virtual bool checkIntegrity() const
Definition AbstractMimicElement.cpp:882
virtual void runCommandControlWithoutMenu()
Ejecuta un comando accionado sin el menu de opciones (caso de un botón)
Definition AbstractMimicElement.cpp:322
virtual std::optional< iv::types::color > getColorWorkingState() const
Retrieves the color representing the current working state of the element.
Definition AbstractMimicElement.cpp:247
uint32_t m_idBlockBackground
Definition AbstractMimicElement.hpp:213
virtual bool isRepeatedMimicElement(const std::set< std::shared_ptr< AbstractMimicElement > > &otherMimicsElements) const
Determines whether the current mimic element shares significant similarities with others.
Definition AbstractMimicElement.cpp:916
const iv::mimics::TitleSettings & getTitleSettings() const
Definition AbstractMimicElement.hpp:28
virtual AbstractComponentGUI * panelEditControl()=0
UI methods ///.
iv::mimics::TitleSettings m_titleSettings
Definition AbstractMimicElement.hpp:162
AbstractComponentGUI * panelEditOnlineVariables() const
Definition AbstractMimicElement.cpp:992
virtual void addOptionsMenu(const std::shared_ptr< iv::mimics::MimicControlMenu > &menu)
Definition AbstractMimicElement.cpp:192
iv::types::height m_height
Definition AbstractMimicElement.hpp:160
bool rotate(double angle)
Definition AbstractMimicElement.cpp:593
iv::mimics::eMimicElementType m_mimicElementType
Definition AbstractMimicElement.hpp:156
iv::mimics::Location m_location
Definition AbstractMimicElement.hpp:157
AbstractComponentGUI * panelEditAddedAlarms() const
Definition AbstractMimicElement.cpp:998
virtual bool hasRepeatedChannels(const std::unordered_set< iv::types::channelId > &channelsRepeatedOpt) const
Checks if the current mimic element contains any repeated channels.
Definition AbstractMimicElement.cpp:897
AbstractMimicElement(iv::mimics::eMimicElementType elementType)
Definition AbstractMimicElement.cpp:31
virtual void executeCommand(const std::string &strAction) const =0
Run actions ///.
virtual std::optional< iv::types::color > getColorControlState() const
Retrieves the color representing the current control state of the element.
Definition AbstractMimicElement.cpp:261
virtual std::shared_ptr< iv::mimics::AbstractMimicElement > clone() const =0
AbstractComponentGUI * buttonEditTitle()
Definition AbstractMimicElement.cpp:922
virtual void postProcess()
PROCESSES.
Definition AbstractMimicElement.cpp:1003
virtual void mapChannels(const std::function< void(std::weak_ptr< iv::channels::AbstractChannel > &)> &mapFunction)
Processed gets ///.
Definition AbstractMimicElement.cpp:160
std::unique_ptr< CDrawText > m_textTitleOpt
Definition AbstractMimicElement.hpp:210
void applyPosition(IGraphics *graphics) const
Definition AbstractMimicElement.cpp:858
bool m_isCreatedForeground
Definition AbstractMimicElement.hpp:216
virtual std::optional< iv::mimics::eAlarmState > getAlarmState() const
Definition AbstractMimicElement.cpp:276
virtual std::optional< std::string > getStringControlState() const
Definition AbstractMimicElement.cpp:271
virtual std::optional< std::string > getStringWorkingState() const
Definition AbstractMimicElement.cpp:266
uint32_t m_idBlockForegorund
Definition AbstractMimicElement.hpp:214
static bool checkHasRepeated(const std::unordered_set< iv::types::channelId > &repeatedChannels, const std::shared_ptr< std::vector< std::weak_ptr< iv::channels::AbstractChannel > > > &elementChannels)
Definition AbstractMimicElement.cpp:795
virtual bool canShowCircularMenu() const
Behaviours gets ///.
Definition AbstractMimicElement.cpp:312
std::optional< iv::mimics::eAlarmState > getAddedAlarmsMimicAlarmState() const
Definition AbstractMimicElement.cpp:281
Definition GeneratorPmsBuilders.cpp:9
eMimicElementType
Definition enums.hpp:8
eZDepth
Definition enums.hpp:50
double height
Definition types.hpp:14
double width
Definition types.hpp:23
double coord
Definition types.hpp:13
eLanguage
Definition enums.hpp:37
Definition structs.hpp:123
Definition structs.hpp:16
Definition AbstractMimicElement.hpp:222
static constexpr iv::types::width offlineCrossLineMaxWidth
Definition AbstractMimicElement.hpp:225
static constexpr double offlineCrossLineWidthProportion
Definition AbstractMimicElement.hpp:223
static constexpr iv::types::width offlineCrossLineMinWidth
Definition AbstractMimicElement.hpp:224
Definition AbstractMimicElement.hpp:242
static constexpr iv::types::width width
Definition AbstractMimicElement.hpp:245
static constexpr iv::types::height height
Definition AbstractMimicElement.hpp:246
static constexpr std::string mimicElementType
Definition AbstractMimicElement.hpp:244
Definition AbstractMimicElement.hpp:228
static constexpr std::string_view height
Definition AbstractMimicElement.hpp:230
static constexpr std::string_view addedChannelId
Definition AbstractMimicElement.hpp:231
static constexpr std::string_view width
Definition AbstractMimicElement.hpp:229
Definition AbstractMimicElement.hpp:234
static constexpr std::string_view onlineVariables
Definition AbstractMimicElement.hpp:237
static constexpr std::string_view addedAlarms
Definition AbstractMimicElement.hpp:238
static constexpr std::string_view titleSettings
Definition AbstractMimicElement.hpp:235
static constexpr std::string_view addedChannel
Definition AbstractMimicElement.hpp:239
static constexpr std::string_view location
Definition AbstractMimicElement.hpp:236
Definition structs.hpp:176
Definition structs.hpp:15
Definition structs.hpp:67