Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
EditDiamarModel.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_MODEL_EDITDIAMAR_EDITDIAMARMODEL_HPP_
2#define IV_SRC_MODEL_EDITDIAMAR_EDITDIAMARMODEL_HPP_
3
5#include "diamar/IModel.hpp"
8
9#include <memory>
10#include <string>
11
13
15{
16
18{
20
21public:
22 typedef std::map<uint16_t, std::shared_ptr<CLogicsDrawingAreaModel>> TMapLogicIdDrawingAreaModel;
23
25 EditDiamarModel(const EditDiamarModel &other) = delete;
27 ~EditDiamarModel() override = default;
28
29 EditDiamarModel &operator=(const EditDiamarModel &other) = delete;
31
32 void deleteModel() override;
33 bool load(const std::string &projectFolder_);
34 bool save(std::string &message) const;
35 bool hasChanged(std::string &changesMsg) const;
36 void checkIntegrity(AbstractLog *logger, bool strict) const;
40 void cleanProjectFolder() const;
41
42 std::shared_ptr<CLogicsDrawingAreaModel> addNewLogicsDrawingAreaModel(iv::types::unitId logicId);
43 std::weak_ptr<CLogicsDrawingAreaModel> getLogicsDrawingAreaModel(iv::types::unitId logicId);
44
45 [[nodiscard]] std::weak_ptr<iv::units::Units> getAllNotInProjectUnits() const;
48 [[nodiscard]] const std::map<uint16_t, std::string> &getMapLibraries() const;
49 [[nodiscard]] const std::map<uint16_t, std::string> &getMapLibrariesFiles() const;
50
51 bool existsLibraryFileDrawingAreaModel(const std::string &file);
52 bool existsLibraryNameDrawingAreaModel(const std::string &name);
53
54 std::shared_ptr<CLogicsDrawingAreaModel>
56
57 std::optional<iv::types::logic::customBlockId> loadCustomBlockDrawingAreaModel(std::string_view filePath);
58
59 std::optional<iv::types::logic::customBlockId>
60 insertCustomBlockDrawingAreaModel(const std::shared_ptr<CLogicsDrawingAreaModel> &drawingAreaModel);
62
63 bool m_projectLoaded {false};
64
65 std::unique_ptr<iv::model::diamar::DiamarModel> m_diamarModel;
66
67private:
68 void prvUpdateLogicInfo() const;
69 [[nodiscard]] bool prvSaveLogicLedFiles() const;
70 bool prvSaveLogicFiles(std::string &message) const;
71 [[nodiscard]] bool prvSaveStationLogicFile() const;
73 [[nodiscard]] bool prvSaveCustomBlocksLogicFile() const;
74
76 const std::shared_ptr<CLogicFile> &logicFile) const;
77 void prvProcessOnlineParameters(iv::types::unitId logicUnitId, const std::shared_ptr<CLogicFile> &logicFile) const;
78
79 std::shared_ptr<iv::units::Units> m_allNotInProjectUnits;
80
81public:
83 std::map<iv::types::unitId, std::shared_ptr<CLogicsDrawingAreaModel>> m_logicsDrawingAreaModels;
84 std::map<iv::types::logic::customBlockId, std::shared_ptr<CLogicsDrawingAreaModel>> m_librariesDrawingAreaModels;
85
86 std::map<iv::types::logic::customBlockId, std::string> m_mapLibraries;
87 std::map<iv::types::logic::customBlockId, std::string> m_mapLibrariesFiles;
88
89private:
90 struct Sections
91 {
92 static constexpr std::string_view root {"EditorConfiguration"};
93 static constexpr std::string_view loadedLibraries {"LoadedLibraries"};
94 static constexpr std::string_view loadedLibrary {"LoadedLibrary"};
95 };
96 struct Keys
97 {
98 static constexpr std::string_view libraryFilePath {"LibraryFilePath"};
99 };
101 {
102 static constexpr std::string string {};
103 };
104};
105
106}// namespace iv::model::editDiamar
107
108#endif//IV_SRC_MODEL_EDITDIAMAR_EDITDIAMARMODEL_HPP_
Definition AbstractLog.hpp:9
Definition CDataAppEditDiamar.hpp:17
Definition IModel.hpp:12
Definition EditDiamarModel.hpp:18
std::optional< iv::types::logic::customBlockId > insertCustomBlockDrawingAreaModel(const std::shared_ptr< CLogicsDrawingAreaModel > &drawingAreaModel)
Definition EditDiamarModel.cpp:270
EditDiamarModel & operator=(EditDiamarModel &&other)=delete
EditDiamarModel()
Definition EditDiamarModel.cpp:20
bool prvSaveStationLogicFile() const
Definition EditDiamarModel.cpp:432
std::shared_ptr< CLogicsDrawingAreaModel > addNewLogicsDrawingAreaModel(iv::types::unitId logicId)
Definition EditDiamarModel.cpp:714
std::weak_ptr< CLogicsDrawingAreaModel > getLogicsDrawingAreaModel(iv::types::unitId logicId)
Definition EditDiamarModel.cpp:729
std::optional< iv::types::logic::customBlockId > loadCustomBlockDrawingAreaModel(std::string_view filePath)
Definition EditDiamarModel.cpp:240
void checkIntegrity(AbstractLog *logger, bool strict) const
Definition EditDiamarModel.cpp:79
bool load(const std::string &projectFolder_)
Definition EditDiamarModel.cpp:32
std::unique_ptr< iv::model::diamar::DiamarModel > m_diamarModel
Definition EditDiamarModel.hpp:65
void prvInitializeOnlineParameters(iv::types::unitId logicUnitId, const std::shared_ptr< CLogicFile > &logicFile) const
Definition EditDiamarModel.cpp:640
void cleanProjectFolder() const
Definition EditDiamarModel.cpp:739
bool prvSaveLogicLedFiles() const
Saves logic LED files, which contains editor's logic canvas info.
Definition EditDiamarModel.cpp:333
std::map< iv::types::unitId, std::shared_ptr< CLogicsDrawingAreaModel > > m_logicsDrawingAreaModels
Definition EditDiamarModel.hpp:83
EditDiamarModel(const EditDiamarModel &other)=delete
bool existsLibraryFileDrawingAreaModel(const std::string &file)
Definition EditDiamarModel.cpp:193
iv::types::logic::customBlockId newCustomBlockId() const
Definition EditDiamarModel.cpp:305
void deleteModel() override
Definition EditDiamarModel.cpp:27
void prvUpdateLogicInfo() const
Definition EditDiamarModel.cpp:317
void eraseInvalidatedLogicElementsOnSaveAction()
Definition EditDiamarModel.cpp:163
bool prvReadCustomBlocksLogicFile()
Definition EditDiamarModel.cpp:563
const std::map< uint16_t, std::string > & getMapLibrariesFiles() const
Definition EditDiamarModel.cpp:188
bool prvReadLogicLedFiles()
Definition EditDiamarModel.cpp:478
EditDiamarModel & operator=(const EditDiamarModel &other)=delete
TMapLogicIdDrawingAreaModel & getLibrariesDrawingAreaModels()
Definition EditDiamarModel.cpp:178
void prvProcessOnlineParameters(iv::types::unitId logicUnitId, const std::shared_ptr< CLogicFile > &logicFile) const
Definition EditDiamarModel.cpp:695
std::map< iv::types::logic::customBlockId, std::string > m_mapLibraries
Definition EditDiamarModel.hpp:86
bool save(std::string &message) const
Definition EditDiamarModel.cpp:47
void updateAllUnitsLogics()
Definition EditDiamarModel.cpp:158
std::shared_ptr< CLogicsDrawingAreaModel > addNewLibrariesDrawingAreaModel(iv::types::logic::customBlockId customBlockId)
Definition EditDiamarModel.cpp:224
std::weak_ptr< iv::units::Units > getAllNotInProjectUnits() const
Definition EditDiamarModel.cpp:168
friend CDataAppEditDiamar
Definition EditDiamarModel.hpp:19
EditDiamarModel(EditDiamarModel &&other)=delete
std::map< iv::types::logic::customBlockId, std::string > m_mapLibrariesFiles
Definition EditDiamarModel.hpp:87
bool existsLibraryNameDrawingAreaModel(const std::string &name)
Definition EditDiamarModel.cpp:208
std::shared_ptr< iv::units::Units > m_allNotInProjectUnits
Definition EditDiamarModel.hpp:79
void checkProjectPrerequisites()
Definition EditDiamarModel.cpp:153
bool m_projectLoaded
Definition EditDiamarModel.hpp:63
const std::map< uint16_t, std::string > & getMapLibraries() const
Definition EditDiamarModel.cpp:183
bool hasChanged(std::string &changesMsg) const
Definition EditDiamarModel.cpp:66
bool prvSaveCustomBlocksLogicFile() const
Definition EditDiamarModel.cpp:529
std::map< iv::types::logic::customBlockId, std::shared_ptr< CLogicsDrawingAreaModel > > m_librariesDrawingAreaModels
Definition EditDiamarModel.hpp:84
TMapLogicIdDrawingAreaModel & getLogicsDrawingAreaModels()
Definition EditDiamarModel.cpp:173
bool prvSaveLogicFiles(std::string &message) const
Definition EditDiamarModel.cpp:348
std::map< uint16_t, std::shared_ptr< CLogicsDrawingAreaModel > > TMapLogicIdDrawingAreaModel
Definition EditDiamarModel.hpp:22
Definition EditDiamarModel.cpp:18
uint16_t customBlockId
Definition types.hpp:130
uint16_t unitId
Definition types.hpp:77
Definition EditDiamarModel.hpp:97
static constexpr std::string_view libraryFilePath
Definition EditDiamarModel.hpp:98
Definition EditDiamarModel.hpp:91
static constexpr std::string_view loadedLibraries
Definition EditDiamarModel.hpp:93
static constexpr std::string_view root
Definition EditDiamarModel.hpp:92
static constexpr std::string_view loadedLibrary
Definition EditDiamarModel.hpp:94