Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CLogicsDrawingAreaModel.hpp
Go to the documentation of this file.
1#ifndef LIBS_GUI_CLOGICSDRAWINGAREAMODEL_HPP_
2#define LIBS_GUI_CLOGICSDRAWINGAREAMODEL_HPP_
3
21#include "logic/structs.hpp"
24
25#include <bits/stdint-uintn.h>
26#include <map>
27#include <memory>
28#include <set>
29#include <string>
30#include <unordered_map>
31
33{
34public:
57
58 // NOTE: 2020/07/29. "CMap::add()" can't manage unique_ptr (probably because it should call std::move inside)
59 typedef std::map<AbstractCanvasItem::TId, std::shared_ptr<AbstractLogicsElement>> TMapIdElement;
60 typedef std::unordered_map<std::string, AbstractCanvasItem::TId> TMapLabelId;
61 typedef std::unordered_map<std::string, AbstractCanvasItem::TId> TMapLibraryIOBlockId;
62
63 static std::shared_ptr<CLogicsDrawingAreaModel>
64 ledFileToCLogicsDrawingAreaModel(const std::string &file,
65 std::optional<iv::types::unitId> logicUnitId = std::nullopt,
66 std::optional<iv::types::logic::customBlockId> customBlockId = std::nullopt);
67
68 explicit CLogicsDrawingAreaModel(std::optional<iv::types::unitId> logicUnitId = std::nullopt,
69 std::optional<iv::types::logic::customBlockId> customBlockId = std::nullopt);
75
76 void addLogicsElement(AbstractCanvasItem::TId id, const std::shared_ptr<AbstractLogicsElement> &logicsElement);
80
81 std::shared_ptr<CLogicFile> generateCLogicFileObject(uint32_t logicId) const;
82 std::shared_ptr<iv::logic::UnitParamsOnline> generateUnitParamsOnline(uint32_t logicId) const;
83
85
88
89 void read(const iv::file::xml::File &fileXml);
90 void readInfoLogic(const iv::file::xml::File &fileXml);
91
92 void save(iv::file::xml::File &fileXml) const;
93 bool saveLogicLedFiles(const std::string &projectFolder, uint16_t logicUnitId) const;
94
95 void checkIntegrity(AbstractLog *logger) const;
96
99
100 void setFlagProjectJustLoaded(bool flag);
101
102 bool getFlagProjectJustLoaded() const;
104 void setInfoLogic(const iv::logic::InfoLogicTxt &infoLogicTxt);
105 std::shared_ptr<const AbstractLogicsElement> getLogicsElement(AbstractCanvasItem::TId id) const;
106 std::shared_ptr<AbstractLogicsElement> getLogicsElement(AbstractCanvasItem::TId id);
107 std::set<AbstractCanvasItem::TId> getLogicsElementsIds() const;
108 AbstractCanvasItem::TId getNextIdInc();// gets next and increments 1
109
111
112 std::map<iv::types::logic::libraryIOId, std::shared_ptr<iv::logic::LogicLibraryIOInfo>>
113 getCustomBlockInInfos() const;
114 std::weak_ptr<iv::logic::LogicLibraryIOInfo> getCustomBlockInInfo(const iv::types::logic::libraryIOId &id) const;
116 const iv::logic::LogicLibraryIOInfo &info) const;
118
119 std::map<iv::types::logic::libraryIOId, std::shared_ptr<iv::logic::LogicLibraryIOInfo>>
121 std::weak_ptr<iv::logic::LogicLibraryIOInfo> getCustomBlockOutInfo(const iv::types::logic::libraryIOId &id) const;
123 const iv::logic::LogicLibraryIOInfo &info) const;
125
129
130 void addUniqueLabel(const std::string &labelName, AbstractCanvasItem::TId lEId);
131 void deleteUniqueLabel(const std::string &labelName, CLogicsComponentLabel::ELabelIOType labelIOType);
132 bool existUniqueLabel(const std::string &labelName) const;
133 std::set<AbstractCanvasItem::TId> findChannelsLabelsAndIOBlocks() const;
134 std::string getUniqueLabelDescription(const std::string &labelName);
135 std::string getFirstUniqueCreatedLabelName() const;
136 std::string getNextDefaultUniqueLabelNameInc();// gets next and increments 1
137 void updateUniqueLabel(const std::string &oldLabelName, const std::string &newLabelName,
138 const std::string &newDescription);
139 void updateUnsetLabels(const std::string &newLabelName);
142
143 std::shared_ptr<AbstractLogicsElement> getAbstractLogicElement(AbstractCanvasItem::TId id) const;
144
145 std::shared_ptr<iv::logic::component::LogicText> getLogicsText(AbstractCanvasItem::TId id) const;
146 static std::shared_ptr<iv::logic::component::LogicText>
147 getLogicsText(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
148
149 std::shared_ptr<iv::logic::component::LogicRectangle> getLogicsRectangle(AbstractCanvasItem::TId id) const;
150 static std::shared_ptr<iv::logic::component::LogicRectangle>
151 getLogicsRectangle(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
152
153 std::shared_ptr<CLogicsComponent> getLogicsComponent(AbstractCanvasItem::TId id) const;
154 static std::shared_ptr<CLogicsComponent>
155 getLogicsComponent(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
156
157 std::shared_ptr<CLogicsComponentOthers> getLogicsComponentOthers(AbstractCanvasItem::TId id) const;
158 static std::shared_ptr<CLogicsComponentOthers>
159 getLogicsComponentOthers(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
160
161 std::shared_ptr<CLogicsComponentConstant> getLogicsComponentConstant(AbstractCanvasItem::TId id) const;
162 static std::shared_ptr<CLogicsComponentConstant>
163 getLogicsComponentConstant(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
164
165 std::shared_ptr<CLogicsComponentChannel> getLogicsComponentChannel(AbstractCanvasItem::TId id) const;
166 static std::shared_ptr<CLogicsComponentChannel>
167 getLogicsComponentChannel(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
168
169 std::shared_ptr<LogicComponentBroadCastChannel>
171 static std::shared_ptr<LogicComponentBroadCastChannel>
172 getLogicsComponentBroadCastChannel(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
173
174 std::shared_ptr<CLogicsComponentLabel> getLogicsComponentLabel(AbstractCanvasItem::TId id) const;
175 static std::shared_ptr<CLogicsComponentLabel>
176 getLogicsComponentLabel(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
177
178 std::shared_ptr<CLogicsConnection> getLogicsComponentConnection(AbstractCanvasItem::TId id) const;
179 static std::shared_ptr<CLogicsConnection>
180 getLogicsComponentConnection(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
181
182 std::shared_ptr<CLogicsConnectionPoint> getLogicsComponentConnectionPoint(AbstractCanvasItem::TId id) const;
183 static std::shared_ptr<CLogicsConnectionPoint>
184 getLogicsComponentConnectionPoint(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
185
186 std::shared_ptr<CLogicsComponentLibraryInOutBlock>
188 static std::shared_ptr<CLogicsComponentLibraryInOutBlock>
189 getLogicsComponentLibraryIOBlock(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
190
191 std::shared_ptr<CLogicsComponentExec> getLogicsComponentExec(AbstractCanvasItem::TId id) const;
192 static std::shared_ptr<CLogicsComponentExec>
193 getLogicsComponentExec(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
194
195 std::shared_ptr<CLogicsComponentLibrary> getLogicsComponentLibraryBlock(AbstractCanvasItem::TId id) const;
196 static std::shared_ptr<CLogicsComponentLibrary>
197 getLogicsComponentLibraryBlock(const std::shared_ptr<AbstractLogicsElement> &logicsElement);
198
200
202 static bool isItemLogicText(const std::shared_ptr<const AbstractLogicsElement> &component);
203
205 static bool isItemLogicRectangle(const std::shared_ptr<const AbstractLogicsElement> &component);
206
208 static bool isItemLogicComponent(const std::shared_ptr<const AbstractLogicsElement> &component);
209
212 static bool isItemIOBlock(const std::shared_ptr<const AbstractLogicsElement> &component);
213
215 static bool isItemBasicBlock(const std::shared_ptr<const AbstractLogicsElement> &component);
216
218 static bool isItemLibraryBlock(const std::shared_ptr<const AbstractLogicsElement> &component);
219
221 static bool isItemExecBlock(const std::shared_ptr<const AbstractLogicsElement> &component);
222
224 static bool isItemBasicOrLibraryBlock(const std::shared_ptr<const AbstractLogicsElement> &component);
225
227 static bool isItemChannel(const std::shared_ptr<const AbstractLogicsElement> &component);
228
230 static bool isItemConstant(const std::shared_ptr<const AbstractLogicsElement> &component);
231
233 static bool isItemBroadCastChannel(const std::shared_ptr<const AbstractLogicsElement> &component);
234
236 static bool isItemLabel(const std::shared_ptr<const AbstractLogicsElement> &component);
237
239 static bool isItemLibraryIOBlock(const std::shared_ptr<const AbstractLogicsElement> &component);
240
242
243 bool isLogicEmpty() const;
244 bool isLogicCompletelyConnected() const;
245
246 void setCustomBlockId(std::optional<iv::types::logic::customBlockId> customBlockId);
247 void setInfoLogicTxtDataFileAndDate(const std::string &fileName);
249 const TMapIdElement *getElementsMap() const;
250 void checkAllConnections(const std::shared_ptr<CFormulaLogic> &formulaOptRef);
251 void checkAllStationConnections(const std::vector<std::shared_ptr<iv::logic::formulaLogic::SBlock>> &logicBlocks);
253 const std::shared_ptr<CLogicsComponent> &component);
254 std::string getLibraryFilePath() const;
255 std::set<iv::types::logic::libraryTagName> getAllLibraryBlockTagnames() const;
256 std::set<std::string> getLabelsNames() const;
257
258 std::optional<iv::types::unitId> getLogicUnitId() const;
259 std::optional<iv::types::logic::customBlockId> getCustomBlockId() const;
260 std::shared_ptr<iv::logic::CustomBlockIOInfos> getCustomBlockIOInfos() const;
261
262 std::vector<std::weak_ptr<iv::channels::AbstractChannel>> getChannels() const;
263
264private:
268 void checkRepeatedOrderOfExecution(AbstractLog *logger) const;
274
278 static std::map<iv::types::logic::libraryIOId, iv::logic::LogicLibraryIOInfo>
279 prvReadLibraryInputs(const iv::file::xml::node &nodeDataLogic);
280 static std::map<iv::types::logic::libraryIOId, iv::logic::LogicLibraryIOInfo>
281 prvReadLibraryOutputs(const iv::file::xml::node &nodeDataLogic);
282
283 void prvSaveLibraryInputs(iv::file::xml::node &nodeDataLogic) const;
284 void prvSaveLibraryOutputs(iv::file::xml::node &nodeDataLogic) const;
285
286 void prvClearConnectionPointParameter(std::shared_ptr<CLogicsConnectionPoint> connectionPoint) const;
287
289 const std::shared_ptr<CLogicsComponentLibrary> &componentLibraryRef, iv::logic::ParamId paramId) const;
290 void prvUpdateLibraryBlockExternalParams(const std::shared_ptr<CLogicsComponentLibrary> &componentLibraryRef) const;
291
292 CFormulaLogic *prvGenerateCLogicFileObjectLomData(uint32_t unitId, const CLogicsAllowed &logicsAllowed) const;
293
295 uint32_t unitId, const std::shared_ptr<CLogicsComponentExec> &currentLogicComponentExec,
296 const CLogicsAllowed &logicsAllowed, iv::logic::formulaLogic::SBlock &blockRef, std::string &error,
297 uint16_t &blockWrittenIndex) const;
298
299 bool prvGenerateCLogicFileObjectLomDataLibrary(uint32_t unitId, const LogicLibraryInfo &currentLibraryInfo,
300 const CLogicsAllowed &logicsAllowed,
301 iv::logic::formulaLogic::SBlock &libraryBlocksRef,
302 std::string &error, uint16_t &blockWrittenIndex) const;
303
304 bool prvGenerateCLogicFileObjectLomDataLibraryBlockParams(uint32_t unitId, const SLibraryLogicBlock &currentBlock,
305 const CLogicsAllowed &logicsAllowed,
307 std::string &error, uint16_t &blockWrittenIndex) const;
308
309 std::shared_ptr<iv::logic::UnitParamsOnline> prvGenerateCParamOnLineListObject(uint32_t unitId,
310 CFormulaLogic *formulaLogic) const;
311
313 const iv::logic::formulaLogic::SBlock &logicBlock, uint32_t unitId, const std::string &libraryBlockTagName,
314 uint32_t &onlineParamOrderInLogicOut,
315 const std::shared_ptr<iv::logic::LibraryParamsOnline> &libraryParamsOnlineOut) const;
317 const iv::logic::formulaLogic::SBlock &logicBlock, uint32_t unitId, const std::string &libraryBlockTagName,
318 uint32_t &onlineParamOrderInLogicOut,
319 const std::shared_ptr<iv::logic::LibraryParamsOnline> &libraryParamsOnlineOut);
320
322 void prvSetConnectionValues(const std::shared_ptr<CLogicsConnectionPoint> &basicBlockConnectionPoint,
323 const std::shared_ptr<CLogicsConnectionPoint> &connectedConnectionPoint);
324 void prvSetConnectionValues(const std::shared_ptr<CLogicsConnection> &connection);
326 void prvPostReadProcessingConnection(const std::shared_ptr<AbstractLogicsElement> &lE);
327 void prvPostReadProcessingConnectionPoint(const std::shared_ptr<AbstractLogicsElement> &lE) const;
329 void prvSetConnectionComponentMI(const std::shared_ptr<CLogicsConnectionPoint> &connectionPoint,
330 uint32_t currentMI) const;
331 bool prvSetIdOutputPins() const;
332
337 const std::shared_ptr<AbstractLogicsElement> &logicComponent,
338 uint32_t globalIdOrValueParameter) const;
339 std::string
341 const std::shared_ptr<AbstractLogicsElement> &logicComponent,
342 uint32_t globalIdOrValueParameter) const;
343
348 const SLibraryLogicBlockParam &libraryLogicBlockParam,
349 uint32_t globalIdOrValueParameter) const;
351 uint32_t globalIdOrValueParameter, uint32_t blockOrder) const;
352 std::string
354 const SLibraryLogicBlockParam &libraryLogicBlockParam,
355 uint32_t globalIdOrValueParameter) const;
356 void prvUpdateComponent(const std::shared_ptr<CLogicsComponent> &lComponent);
357 void prvUpdateLabels(const std::string &oldLabelName, const std::string &newLabelName,
358 const std::string &newLabelDescription);
362
363 uint32_t prvFindParameterValue(const std::shared_ptr<CLogicsComponentExec> &lcExec,
364 iv::logic::eDBBlockParamType blockParamType,
365 iv::types::logic::paramNumber parameterNumber, const std::string &paramDescription,
366 std::string &paramValueText, uint32_t &channelUnitId, uint16_t &channelId,
367 std::string &channelType, std::string &description, std::string &error) const;
368 std::string prvFindSParameterValue(const std::shared_ptr<CLogicsComponentExec> &lcExec,
369 iv::logic::eDBBlockParamType blockParamType,
370 iv::types::logic::paramNumber paramNum, bool isLibrary,
371 const std::string &paramValue, std::string &error) const;
372
373 uint32_t prvFindParameterValueInLib(const SLibraryLogicBlockParam &blockParam, const SLibraryLogicBlock &blockRef,
374 std::string &paramValueText, uint32_t &channelUnitId, uint16_t &channelId,
375 std::string &channelType, std::string &description, std::string &error) const;
376
377 static uint32_t prvGetComponentIdOfOppositeConnectionPoint(const std::shared_ptr<CLogicsComponentExec> &pExec,
380 std::shared_ptr<CLogicsConnectionPoint> prvGetOppositeConnectionPointFromPoint(AbstractCanvasItem::TId tId) const;
381
382 std::string prvGetBlockDescription(const std::shared_ptr<AbstractLogicsElement> &block,
383 const std::shared_ptr<CLogicsConnectionPoint> &connectionPoint);
384
385 // all the elements in the canvas
387 // names and ids of the unique label elements in the canvas. No upper/lowercase distinction
389
390 // upper/lowercase distinction
391 std::shared_ptr<iv::logic::CustomBlockIOInfos> m_libraryIOInfos;
392
397
398 std::optional<iv::types::unitId> m_logicUnitId;
399 std::optional<iv::types::logic::customBlockId> m_customBlockId;
400 bool m_flagProjectJustLoaded;// true after having read a project
401 void deleteLogicElementFromCanvas(std::vector<std::string> logicChannelsToDelete, IGraphics *graphics);
402};
403
404#endif /* LIBS_GUI_CLOGICSDRAWINGAREAMODEL_HPP_ */
ELibraryLogicBlockParamConnectedType
Definition LogicLibraryInfo.hpp:13
static const TId kInvalidCanvasItemId
Definition AbstractCanvasItem.hpp:52
uint32_t TId
Definition AbstractCanvasItem.hpp:47
Definition AbstractLog.hpp:9
Definition CFormulaLogic.hpp:16
Definition CLogicsAllowed.hpp:22
std::map< iv::logic::ParamId, std::string > TMapDBBlockParamNStr
Definition CLogicsAllowed.hpp:25
Definition CLogicsComponentConstant.hpp:15
ELabelIOType
Definition CLogicsComponentLabel.hpp:19
uint16_t TUniqueLabelDefaultIdNumber
Definition CLogicsComponentLabel.hpp:26
Definition CLogicsDrawingAreaModel.hpp:33
CLogicsComponentConstant * prvGetCLogicsComponentConstant(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:3640
std::weak_ptr< iv::logic::LogicLibraryIOInfo > getCustomBlockInInfo(const iv::types::logic::libraryIOId &id) const
Definition CLogicsDrawingAreaModel.cpp:848
std::map< iv::types::logic::libraryIOId, std::shared_ptr< iv::logic::LogicLibraryIOInfo > > getCustomBlockInInfos() const
Definition CLogicsDrawingAreaModel.cpp:842
static bool prvGenerateCParamOnlineListObjectBlockParams(const iv::logic::formulaLogic::SBlock &logicBlock, uint32_t unitId, const std::string &libraryBlockTagName, uint32_t &onlineParamOrderInLogicOut, const std::shared_ptr< iv::logic::LibraryParamsOnline > &libraryParamsOnlineOut)
Definition CLogicsDrawingAreaModel.cpp:3593
void readInfoLogic(const iv::file::xml::File &fileXml)
Definition CLogicsDrawingAreaModel.cpp:611
CLogicsDrawingAreaModel & operator=(CLogicsDrawingAreaModel &&other)=delete
void checkInvertedOrderOfExecutions(AbstractLog *logger) const
Definition CLogicsDrawingAreaModel.cpp:1893
bool isLogicEmpty() const
Definition CLogicsDrawingAreaModel.cpp:1533
TMapIdElement m_mapIdElement
Definition CLogicsDrawingAreaModel.hpp:388
std::string getUniqueLabelDescription(const std::string &labelName)
Definition CLogicsDrawingAreaModel.cpp:1051
iv::types::logic::logicExecutionOrder m_nextOrderOfExecution
Definition CLogicsDrawingAreaModel.hpp:394
std::shared_ptr< CLogicsComponentLibrary > getLogicsComponentLibraryBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1617
std::map< AbstractCanvasItem::TId, std::shared_ptr< AbstractLogicsElement > > TMapIdElement
Definition CLogicsDrawingAreaModel.hpp:59
void prvSaveLibraryInputs(iv::file::xml::node &nodeDataLogic) const
Definition CLogicsDrawingAreaModel.cpp:2407
static std::shared_ptr< CLogicsDrawingAreaModel > ledFileToCLogicsDrawingAreaModel(const std::string &file, std::optional< iv::types::unitId > logicUnitId=std::nullopt, std::optional< iv::types::logic::customBlockId > customBlockId=std::nullopt)
Definition CLogicsDrawingAreaModel.cpp:54
void prvClearConnectionPointParameter(std::shared_ptr< CLogicsConnectionPoint > connectionPoint) const
Definition CLogicsDrawingAreaModel.cpp:1117
void updateLogicsChannels()
Definition CLogicsDrawingAreaModel.cpp:4682
TMapLabelId m_mapUniqueLabelId
Definition CLogicsDrawingAreaModel.hpp:386
void setCustomBlockId(std::optional< iv::types::logic::customBlockId > customBlockId)
Definition CLogicsDrawingAreaModel.cpp:4651
std::shared_ptr< iv::logic::UnitParamsOnline > generateUnitParamsOnline(uint32_t logicId) const
Definition CLogicsDrawingAreaModel.cpp:166
void updateBasicBlockValues(AbstractCanvasItem::TId itemId)
Definition CLogicsDrawingAreaModel.cpp:1194
std::string prvFormatParameterLogicLibraryInfo(const iv::logic::formulaLogic::SBlockParam &pPar, const SLibraryLogicBlockParam &libraryLogicBlockParam, uint32_t globalIdOrValueParameter) const
Definition CLogicsDrawingAreaModel.cpp:2951
void prvSetConnectionComponentMI(const std::shared_ptr< CLogicsConnectionPoint > &connectionPoint, uint32_t currentMI) const
Definition CLogicsDrawingAreaModel.cpp:2540
void prvPostReadProcessingConnection(const std::shared_ptr< AbstractLogicsElement > &lE)
Definition CLogicsDrawingAreaModel.cpp:3793
CLogicsDrawingAreaModel(std::optional< iv::types::unitId > logicUnitId=std::nullopt, std::optional< iv::types::logic::customBlockId > customBlockId=std::nullopt)
Definition CLogicsDrawingAreaModel.cpp:76
bool isItemBasicOrLibraryBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1359
void setFlagProjectJustLoaded(bool flag)
Definition CLogicsDrawingAreaModel.cpp:781
std::set< std::string > getLabelsNames() const
Definition CLogicsDrawingAreaModel.cpp:1805
bool m_flagProjectJustLoaded
Definition CLogicsDrawingAreaModel.hpp:400
static void checkConnections(iv::logic::formulaLogic::SBlock &block, const std::shared_ptr< CLogicsComponent > &component)
Definition CLogicsDrawingAreaModel.cpp:1734
bool prvGenerateCLogicFileObjectLomDataParams(uint32_t unitId, const std::shared_ptr< CLogicsComponentExec > &currentLogicComponentExec, const CLogicsAllowed &logicsAllowed, iv::logic::formulaLogic::SBlock &blockRef, std::string &error, uint16_t &blockWrittenIndex) const
Definition CLogicsDrawingAreaModel.cpp:3220
bool isItemCopyable(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1250
void addLogicsElement(AbstractCanvasItem::TId id, const std::shared_ptr< AbstractLogicsElement > &logicsElement)
Definition CLogicsDrawingAreaModel.cpp:90
std::shared_ptr< const AbstractLogicsElement > getLogicsElement(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:792
iv::logic::InfoLogicTxt * getInfoLogicPtr()
Definition CLogicsDrawingAreaModel.cpp:4019
bool prvGenerateCParamOnlineListObjectBlockLibrary(const iv::logic::formulaLogic::SBlock &logicBlock, uint32_t unitId, const std::string &libraryBlockTagName, uint32_t &onlineParamOrderInLogicOut, const std::shared_ptr< iv::logic::LibraryParamsOnline > &libraryParamsOnlineOut) const
Definition CLogicsDrawingAreaModel.cpp:3567
CLogicsComponentLabel::TUniqueLabelDefaultIdNumber m_nextUniqueLabelDefaultIdNumber
Definition CLogicsDrawingAreaModel.hpp:395
CLogicsDrawingAreaModel(const CLogicsDrawingAreaModel &other)=delete
CLogicsDrawingAreaModel(CLogicsDrawingAreaModel &&other)=delete
std::unordered_map< std::string, AbstractCanvasItem::TId > TMapLibraryIOBlockId
Definition CLogicsDrawingAreaModel.hpp:61
std::shared_ptr< CLogicsComponentExec > getLogicsComponentExec(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1605
LogicLibraryInfo generateLogicLibraryInfo(const CLogicsAllowed::TMapDBBlockParamNStr &mapBlockParamsDesc) const
Definition CLogicsDrawingAreaModel.cpp:179
std::shared_ptr< CLogicsComponentLabel > getLogicsComponentLabel(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1558
bool isItemChannel(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1468
AbstractCanvasItem::TId m_nextIdToUse
Definition CLogicsDrawingAreaModel.hpp:393
void clearBasicBlocksParamValue(AbstractCanvasItem::TId itemRemovingId)
Definition CLogicsDrawingAreaModel.cpp:1143
std::set< iv::types::logic::libraryTagName > getAllLibraryBlockTagnames() const
Definition CLogicsDrawingAreaModel.cpp:1790
std::set< AbstractCanvasItem::TId > findChannelsLabelsAndIOBlocks() const
Definition CLogicsDrawingAreaModel.cpp:1036
const TMapIdElement * getElementsMap() const
Definition CLogicsDrawingAreaModel.cpp:4751
std::shared_ptr< CLogicsComponentLibraryInOutBlock > getLogicsComponentLibraryIOBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1593
std::string prvFormatExternalParameterBlocksInLibraryLogicsDrawing(const iv::logic::formulaLogic::SBlockParam &pPar, const std::shared_ptr< AbstractLogicsElement > &logicComponent, uint32_t globalIdOrValueParameter) const
Definition CLogicsDrawingAreaModel.cpp:2882
std::optional< iv::types::unitId > m_logicUnitId
Definition CLogicsDrawingAreaModel.hpp:398
void prvUpdateLabels(const std::string &oldLabelName, const std::string &newLabelName, const std::string &newLabelDescription)
Definition CLogicsDrawingAreaModel.cpp:3892
std::map< iv::types::logic::libraryIOId, std::shared_ptr< iv::logic::LogicLibraryIOInfo > > getCustomBlockOutInfos() const
Definition CLogicsDrawingAreaModel.cpp:887
std::shared_ptr< CLogicsConnection > getLogicsComponentConnection(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1570
std::optional< iv::types::logic::customBlockId > getCustomBlockId() const
Definition CLogicsDrawingAreaModel.cpp:1816
std::shared_ptr< CLogicsComponent > getLogicsComponent(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1404
std::shared_ptr< iv::logic::CustomBlockIOInfos > getCustomBlockIOInfos() const
Definition CLogicsDrawingAreaModel.cpp:1821
std::string getFirstUniqueCreatedLabelName() const
Definition CLogicsDrawingAreaModel.cpp:1069
void checkRepeatedOrderOfExecution(AbstractLog *logger) const
Definition CLogicsDrawingAreaModel.cpp:1844
iv::types::logic::logicExecutionOrder getNextOrderOfExecutionInc()
Definition CLogicsDrawingAreaModel.cpp:967
bool isItemLibraryBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1336
CLogicsAllowed::TMapDBBlockParamNStr getLibraryExternalParametersValues() const
Definition CLogicsDrawingAreaModel.cpp:449
std::shared_ptr< AbstractLogicsElement > getAbstractLogicElement(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1370
void save(iv::file::xml::File &fileXml) const
Definition CLogicsDrawingAreaModel.cpp:627
void prvSetComponentExecBlockParams(AbstractCanvasItem::TId itemId)
Definition CLogicsDrawingAreaModel.cpp:1668
void checkAllStationConnections(const std::vector< std::shared_ptr< iv::logic::formulaLogic::SBlock > > &logicBlocks)
Definition CLogicsDrawingAreaModel.cpp:1713
bool existUniqueLabel(const std::string &labelName) const
Definition CLogicsDrawingAreaModel.cpp:1027
iv::types::logic::logicExecutionOrder getOrderOfExecution(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:973
AbstractCanvasItem::TId getNextIdInc()
Definition CLogicsDrawingAreaModel.cpp:836
CFormulaLogic * prvGenerateCLogicFileObjectLomData(uint32_t unitId, const CLogicsAllowed &logicsAllowed) const
Definition CLogicsDrawingAreaModel.cpp:2435
void prvPostReadProcessingConnectionPoint(const std::shared_ptr< AbstractLogicsElement > &lE) const
Definition CLogicsDrawingAreaModel.cpp:3827
bool isItemLogicRectangle(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1281
void prvUpdateComponent(const std::shared_ptr< CLogicsComponent > &lComponent)
Definition CLogicsDrawingAreaModel.cpp:3847
std::shared_ptr< CLogicsComponentOthers > getLogicsComponentOthers(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1416
void prvUpdateLibraryBlockExternalParams(const std::shared_ptr< CLogicsComponentLibrary > &componentLibraryRef) const
Definition CLogicsDrawingAreaModel.cpp:3134
std::optional< iv::types::unitId > getLogicUnitId() const
Definition CLogicsDrawingAreaModel.cpp:1811
std::unordered_map< std::string, AbstractCanvasItem::TId > TMapLabelId
Definition CLogicsDrawingAreaModel.hpp:60
bool isItemLogicText(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1271
void prvUpdateOrdersOfExecution(EActionOnLogicsComponent lastAction, iv::types::logic::logicExecutionOrder oldOrder, iv::types::logic::logicExecutionOrder newOrder=AbstractCanvasItem::kInvalidCanvasItemId)
Definition CLogicsDrawingAreaModel.cpp:3930
void setInfoLogicTxtDataFileAndDate(const std::string &fileName)
Definition CLogicsDrawingAreaModel.cpp:4656
void prvSetConnectionValues(const std::shared_ptr< CLogicsConnectionPoint > &basicBlockConnectionPoint, const std::shared_ptr< CLogicsConnectionPoint > &connectedConnectionPoint)
Definition CLogicsDrawingAreaModel.cpp:3725
bool isItemIOBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1310
std::set< AbstractCanvasItem::TId > getLogicsElementsIds() const
Definition CLogicsDrawingAreaModel.cpp:824
std::shared_ptr< iv::logic::component::LogicRectangle > getLogicsRectangle(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1393
std::shared_ptr< iv::logic::CustomBlockIOInfos > m_libraryIOInfos
Definition CLogicsDrawingAreaModel.hpp:391
std::shared_ptr< iv::logic::component::LogicText > getLogicsText(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1381
bool isItemConstant(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1628
bool isLogicCompletelyConnected() const
Definition CLogicsDrawingAreaModel.cpp:1541
std::shared_ptr< CLogicsConnectionPoint > getLogicsComponentConnectionPoint(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1581
std::shared_ptr< CLogicsComponentConstant > getLogicsComponentConstant(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1428
ELibraryLogicBlockParamConnectedType prvGetLibraryLogicBlockParamConnectedTypeForParameter(const std::shared_ptr< CLogicsComponentLibrary > &componentLibraryRef, iv::logic::ParamId paramId) const
Definition CLogicsDrawingAreaModel.cpp:3155
std::string prvFormatExternalParameterBlocksInLibraryLogicLibraryInfo(const iv::logic::formulaLogic::SBlockParam &pPar, const SLibraryLogicBlockParam &libraryLogicBlockParam, uint32_t globalIdOrValueParameter) const
Definition CLogicsDrawingAreaModel.cpp:3073
void read(const iv::file::xml::File &fileXml)
Definition CLogicsDrawingAreaModel.cpp:478
CLogicsAllowed::TMapDBBlockParamNStr getLibraryParametersDesc() const
Definition CLogicsDrawingAreaModel.cpp:406
std::string getNextDefaultUniqueLabelNameInc()
Definition CLogicsDrawingAreaModel.cpp:1081
bool removeCustomBlockInInfo(const iv::types::logic::libraryIOId &id) const
Definition CLogicsDrawingAreaModel.cpp:875
void setInfoLogic(const iv::logic::InfoLogicTxt &infoLogicTxt)
Definition CLogicsDrawingAreaModel.cpp:4024
CLogicsDrawingAreaModel & operator=(const CLogicsDrawingAreaModel &other)=delete
void checkDefinedLibraryInParamNotUsed(AbstractLog *logger) const
Definition CLogicsDrawingAreaModel.cpp:2159
~CLogicsDrawingAreaModel()=default
void prvPostReadProcessing()
Definition CLogicsDrawingAreaModel.cpp:3657
void checkAndFixIntegrity()
Definition CLogicsDrawingAreaModel.cpp:731
bool updateCustomBlockInInfo(const iv::types::logic::libraryIOId &id, const iv::logic::LogicLibraryIOInfo &info) const
Definition CLogicsDrawingAreaModel.cpp:858
iv::logic::InfoLogicTxt m_infoLogic
Definition CLogicsDrawingAreaModel.hpp:396
static std::map< iv::types::logic::libraryIOId, iv::logic::LogicLibraryIOInfo > prvReadLibraryInputs(const iv::file::xml::node &nodeDataLogic)
Definition CLogicsDrawingAreaModel.cpp:2270
void checkAllConnections(const std::shared_ptr< CFormulaLogic > &formulaOptRef)
Definition CLogicsDrawingAreaModel.cpp:1689
std::shared_ptr< CLogicsComponentChannel > getLogicsComponentChannel(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1445
bool updateCustomBlockOutInfo(const iv::types::logic::libraryIOId &id, const iv::logic::LogicLibraryIOInfo &info) const
Definition CLogicsDrawingAreaModel.cpp:903
void checkLibraryBlocksRepeatedOrderOfExecution(AbstractLog *logger) const
Definition CLogicsDrawingAreaModel.cpp:1997
void updateUnsetLabels(const std::string &newLabelName)
Definition CLogicsDrawingAreaModel.cpp:1184
void deleteLogicsElement(AbstractCanvasItem::TId id)
Definition CLogicsDrawingAreaModel.cpp:101
bool isItemLabel(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1488
void checkIntegrity(AbstractLog *logger) const
Definition CLogicsDrawingAreaModel.cpp:692
void updateUniqueLabel(const std::string &oldLabelName, const std::string &newLabelName, const std::string &newDescription)
Definition CLogicsDrawingAreaModel.cpp:1096
bool prvSetIdOutputPins() const
Definition CLogicsDrawingAreaModel.cpp:2557
std::shared_ptr< LogicComponentBroadCastChannel > getLogicsComponentBroadCastChannel(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1457
bool isItemBroadCastChannel(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1648
void deleteLogicElementFromCanvas(std::vector< std::string > logicChannelsToDelete, IGraphics *graphics)
Definition CLogicsDrawingAreaModel.cpp:4713
bool addCustomBlockInfo(const iv::logic::LogicLibraryIOInfo &info) const
Definition CLogicsDrawingAreaModel.cpp:931
bool isItemLibraryIOBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1508
void checkLibraryBlocksOrderOfExecution(AbstractLog *logger) const
Definition CLogicsDrawingAreaModel.cpp:2055
std::shared_ptr< CLogicsConnectionPoint > prvGetOppositeConnectionPointFromPoint(AbstractCanvasItem::TId tId) const
Definition CLogicsDrawingAreaModel.cpp:4064
uint32_t prvFindParameterValueInLib(const SLibraryLogicBlockParam &blockParam, const SLibraryLogicBlock &blockRef, std::string &paramValueText, uint32_t &channelUnitId, uint16_t &channelId, std::string &channelType, std::string &description, std::string &error) const
Definition CLogicsDrawingAreaModel.cpp:4388
void deleteUniqueLabel(const std::string &labelName, CLogicsComponentLabel::ELabelIOType labelIOType)
Definition CLogicsDrawingAreaModel.cpp:1005
std::shared_ptr< CLogicFile > generateCLogicFileObject(uint32_t logicId) const
Definition CLogicsDrawingAreaModel.cpp:142
void addUniqueLabel(const std::string &labelName, AbstractCanvasItem::TId lEId)
Definition CLogicsDrawingAreaModel.cpp:989
bool isItemLogicComponent(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1291
std::optional< iv::types::logic::customBlockId > m_customBlockId
Definition CLogicsDrawingAreaModel.hpp:399
std::string getLibraryFilePath() const
Definition CLogicsDrawingAreaModel.cpp:1770
std::shared_ptr< iv::logic::UnitParamsOnline > prvGenerateCParamOnLineListObject(uint32_t unitId, CFormulaLogic *formulaLogic) const
Definition CLogicsDrawingAreaModel.cpp:3545
void changeOrderOfExecution(iv::types::logic::logicExecutionOrder oldOrder, iv::types::logic::logicExecutionOrder newOrder)
Definition CLogicsDrawingAreaModel.cpp:136
static std::map< iv::types::logic::libraryIOId, iv::logic::LogicLibraryIOInfo > prvReadLibraryOutputs(const iv::file::xml::node &nodeDataLogic)
Definition CLogicsDrawingAreaModel.cpp:2339
bool saveLogicLedFiles(const std::string &projectFolder, uint16_t logicUnitId) const
Definition CLogicsDrawingAreaModel.cpp:661
std::string prvFindSParameterValue(const std::shared_ptr< CLogicsComponentExec > &lcExec, iv::logic::eDBBlockParamType blockParamType, iv::types::logic::paramNumber paramNum, bool isLibrary, const std::string &paramValue, std::string &error) const
Definition CLogicsDrawingAreaModel.cpp:4586
std::string prvFormatEditParameterLogicLibraryInfo(const iv::logic::formulaLogic::SBlockParam &pPar, uint32_t globalIdOrValueParameter, uint32_t blockOrder) const
Definition CLogicsDrawingAreaModel.cpp:3042
std::string prvGetBlockDescription(const std::shared_ptr< AbstractLogicsElement > &block, const std::shared_ptr< CLogicsConnectionPoint > &connectionPoint)
Definition CLogicsDrawingAreaModel.cpp:4108
std::weak_ptr< iv::logic::LogicLibraryIOInfo > getCustomBlockOutInfo(const iv::types::logic::libraryIOId &id) const
Definition CLogicsDrawingAreaModel.cpp:893
static uint32_t prvGetComponentIdOfOppositeConnectionPoint(const std::shared_ptr< CLogicsComponentExec > &pExec, iv::logic::eDBBlockParamType type, iv::types::logic::paramNumber paramNum)
Definition CLogicsDrawingAreaModel.cpp:4037
bool prvGenerateCLogicFileObjectLomDataLibrary(uint32_t unitId, const LogicLibraryInfo &currentLibraryInfo, const CLogicsAllowed &logicsAllowed, iv::logic::formulaLogic::SBlock &libraryBlocksRef, std::string &error, uint16_t &blockWrittenIndex) const
Definition CLogicsDrawingAreaModel.cpp:3349
bool isItemExecBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1349
std::string prvFormatParameterLogicDrawing(const iv::logic::formulaLogic::SBlockParam &pPar, const std::shared_ptr< AbstractLogicsElement > &logicComponent, uint32_t globalIdOrValueParameter) const
Definition CLogicsDrawingAreaModel.cpp:2793
void checkDefinedLibraryOutParamNotUsed(AbstractLog *logger) const
Definition CLogicsDrawingAreaModel.cpp:2214
uint32_t prvFindParameterValue(const std::shared_ptr< CLogicsComponentExec > &lcExec, iv::logic::eDBBlockParamType blockParamType, iv::types::logic::paramNumber parameterNumber, const std::string &paramDescription, std::string &paramValueText, uint32_t &channelUnitId, uint16_t &channelId, std::string &channelType, std::string &description, std::string &error) const
Definition CLogicsDrawingAreaModel.cpp:4174
iv::types::logic::logicExecutionOrder getNextOrderOfExecution() const
Definition CLogicsDrawingAreaModel.cpp:962
std::vector< std::weak_ptr< iv::channels::AbstractChannel > > getChannels() const
Definition CLogicsDrawingAreaModel.cpp:1826
bool isItemChannelOrLabelOrIOBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1301
void updateLogicsElements()
Definition CLogicsDrawingAreaModel.cpp:702
bool isItemBasicBlock(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1323
bool removeCustomBlockOutInfo(const iv::types::logic::libraryIOId &id) const
Definition CLogicsDrawingAreaModel.cpp:920
bool prvGenerateCLogicFileObjectLomDataLibraryBlockParams(uint32_t unitId, const SLibraryLogicBlock &currentBlock, const CLogicsAllowed &logicsAllowed, iv::logic::formulaLogic::SBlock &blockRef, std::string &error, uint16_t &blockWrittenIndex) const
Definition CLogicsDrawingAreaModel.cpp:3440
bool getFlagProjectJustLoaded() const
Definition CLogicsDrawingAreaModel.cpp:786
bool isItemMovable(AbstractCanvasItem::TId id) const
Definition CLogicsDrawingAreaModel.cpp:1528
void prvSaveLibraryOutputs(iv::file::xml::node &nodeDataLogic) const
Definition CLogicsDrawingAreaModel.cpp:2421
Definition IGraphics.hpp:20
Definition LogicLibraryInfo.hpp:95
Definition xmlFile.hpp:128
Definition xmlFile.hpp:15
eDBBlockParamType
Definition defines.hpp:20
uint16_t logicExecutionOrder
Definition types.hpp:129
uint32_t paramNumber
Definition types.hpp:136
std::string libraryIOId
Definition types.hpp:134
Definition LogicLibraryInfo.hpp:25
Definition LogicLibraryInfo.hpp:56
Definition structs.hpp:43
Definition LogicLibraryIOInfo.hpp:19
Definition structs.hpp:19
Definition structs.hpp:58
Definition structs.hpp:81