Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
resources.h
Go to the documentation of this file.
1#ifndef LIBS_GUI_RESOURCES_H_
2#define LIBS_GUI_RESOURCES_H_
3
5#include "core/assert.hpp"
6#include "core/defines.hpp"
7#include "core/file.hpp"
9
10#include <fstream>
11#include <map>
12#include <sstream>
13#include <string>
14#include <utility>
15
16#define RESOURCE_ICON_OPEN "def-open"
17#define RESOURCE_ICON_NEW "def-new"
18#define RESOURCE_ICON_SAVE "def-save"
19#define RESOURCE_ICON_QUIT "def-quit"
20#define RESOURCE_ICON_PLAY "def-play"
21#define RESOURCE_ICON_STOP "def-stop"
22#define RESOURCE_ICON_DELETE "def-delete"
23#define RESOURCE_ICON_PREFERENCE "def-preference"
24
25#define RESOURCE_MIMICS "diamar/mimic64x64"
26#define RESOURCE_GROUP_CHANNELS "diamar/groupChannels64x64"
27#define RESOURCE_UNITS "diamar/lom64x64"
28#define RESOURCE_SUMMARY "diamar/summary64x64"
29#define RESOURCE_HISTORY "diamar/history64x64"
30#define RESOURCE_GRAPHICS "diamar/graphics64x64"
31#define RESOURCE_SYSTEM_INFO "diamar/info64x64"
32#define RESOURCE_SYSTEM_CONFIG "diamar/settings64x64"
33#define RESOURCE_CHANNELS "diamar/alarm-off64x64"
34
35#define RESOURCE_INDICATOR_OFF_SCAN "diamar/iconoOffscan128x128"
36#define RESOURCE_INDICATOR_INVERTED "diamar/inverted64x64"
37#define RESOURCE_INDICATOR_INHIBITION "diamar/Icon-Inhibited"
38
39static const char *kPrvFolderResource = "../resources";
40
41enum class EResource
42{
45 AlarmOn,
48 CheckOn,
51 Close,
52 Danger,
53 Error,
54 Info,
57 Restore,
58 Warning,
59 GtkOpen,
60 GtkNew,
61 GtkSave,
62 GtkQuit,
63 GtkPlay,
64 GtkStop,
68};
69
71{
72 SResources(const std::string &nameFile, bool isCheckable, const std::string &checkSum)
73 {
74 m_nameFile = nameFile;
75 m_isCheckable = isCheckable;
76 m_checkSum = checkSum;
77 }
78
79 std::string m_nameFile;
81 std::string m_checkSum;
82};
83
84namespace sedni
85{
86
88{
89public:
90 static bool check()
91 {
92 bool correct {true};
93
94 for (const auto &it: m_resourcesMap)
95 {
96 if (it.second.m_isCheckable)
97 {
98 std::string imagePath;
99 std::ostringstream buffer;
100
101 imagePath = iv::file::makePath(kPrvFolderResource, it.second.m_nameFile, "png");
102
103 if (not iv::file::exists(imagePath))
104 {
105 correct = false;
106 IV_ASSERT_MSG(fmt::format("Missing '{}' resource", it.second.m_nameFile).c_str());
107 break;
108 }
109
110 std::ifstream fImage(imagePath, std::ios::binary);
111 buffer << fImage.rdbuf();
112
113 if (CEncryption::md5(buffer.str()) != it.second.m_checkSum && iv::file::exists(imagePath))
114 {
115 correct = false;
116 IV_ASSERT_MSG(fmt::format("Invalid '{}' resource", it.second.m_nameFile).c_str());
117 break;
118 }
119 }
120 }
121
122 return correct;
123 }
124
125 static std::string getResourceName(EResource eResource)
126 {
127 auto it = m_resourcesMap.find(eResource);
128
129 return (it == m_resourcesMap.end() ? "No resource defined" : it->second.m_nameFile);
130 }
131
132private:
133 //TODO RAG: Que los compruebe todos
134 static inline std::map<EResource, SResources> m_resourcesMap {
135 {EResource::AccessClose, SResources("diamar/accessClose64x64", true, "7314edf350c41a7cf43c95c78f45c026")},
136 {EResource::AlarmOff, SResources("diamar/alarm-off64x64", true, "15d138a85f3899dce8b1be6eac072323")},
137 {EResource::AlarmOn, SResources("diamar/alarm64x64", true, "e2a8557f76fd84e961e109b59e7bd94c")},
138 {EResource::ButtonStart, SResources("diamar/button-start", true, "96972212b3b782c6e9b27e68cdef5949")},
139 {EResource::CheckOff, SResources("diamar/checkOff16x16", true, "204f7b5cf00c9417e6e90bec52fe54b6")},
140 {EResource::CheckOn, SResources("diamar/checkOn16x16", true, "41e0294308be5995c1896bea2f8dcf17")},
142 SResources("diamar/checkOffDis16x16", false, "41e0294308be5995c1896bea2f8dcf17")},
144 SResources("diamar/checkOnDis16x16", false, "41e0294308be5995c1896bea2f8dcf17")},
145 {EResource::Close, SResources("diamar/close", true, "c2ad68e89a08aa27d56dbf0682fb302c")},
146 {EResource::Error, SResources("diamar/error64x64", true, "651fdc101df4cdd6866e2f4740302ea3")},
147 {EResource::Info, SResources("diamar/info64x64", true, "52d48ec2f3aa15d5e8beea7c7f786b51")},
148 {EResource::Maximize, SResources("diamar/maximize", true, "b655538e5da0d05271307e0d08997d26")},
149 {EResource::Question, SResources("diamar/question64x64", true, "22fce57e4c21ecb242a777d463aa3dc8")},
150 {EResource::Restore, SResources("diamar/restore", true, "2a7f2961660b4fb9510015e6098ec9e1")},
151 {EResource::Warning, SResources("diamar/warning64x64", true, "f4b5640cf7bda5db1440b9a98932a202")},
152 {EResource::GtkOpen, SResources("def-open", false, "def-open")},
153 {EResource::GtkNew, SResources("def-new", false, "def-new")},
154 {EResource::GtkSave, SResources("def-save", false, "def-save")},
155 {EResource::GtkQuit, SResources("def-quit", false, "def-quit")},
156 {EResource::GtkPlay, SResources("def-play", false, "def-play")},
157 {EResource::GtkStop, SResources("def-stop", false, "def-stop")},
158 {EResource::GtkDelete, SResources("def-delete", false, "def-delete")},
159 {EResource::GtkPreference, SResources("def-preference", false, "def-preference")},
160 {EResource::Offscan, SResources("diamar/iconoOffscan128x128", true, "765ace09aa833fb2e9973cedd94cb2f9")}};
161};
162
163}// namespace sedni
164
165#endif /* LIBS_GUI_RESOURCES_H_ */
static const char * kPrvFolderResource
Definition CComponentIndicators.cpp:12
#define IV_ASSERT_MSG(msg,...)
Definition assert.hpp:152
static std::string md5(const std::string &message)
Definition CEncryption.cpp:219
Definition resources.h:88
static std::map< EResource, SResources > m_resourcesMap
Definition resources.h:134
static std::string getResourceName(EResource eResource)
Definition resources.h:125
static bool check()
Definition resources.h:90
bool exists(const std::string_view path)
Definition file.cpp:97
std::string makePath(const std::string_view dirOpt, const std::string_view fNameOpt, const std::string_view extOpt)
Definition file.cpp:228
Definition matrix.h:9
static const char * kPrvFolderResource
Definition resources.h:39
EResource
Definition resources.h:42
@ CheckOffDisabled
Definition resources.h:71
bool m_isCheckable
Definition resources.h:80
std::string m_nameFile
Definition resources.h:79
std::string m_checkSum
Definition resources.h:81
SResources(const std::string &nameFile, bool isCheckable, const std::string &checkSum)
Definition resources.h:72