ImagingTools Core SDK
Init.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QDirIterator>
7#include <QtCore/QCoreApplication>
8#include <QtWidgets/QApplication>
9#include <QtWidgets/QStyleFactory>
10#include <QtQml/QQmlEngine>
11
12// ACF includes
13#include <ibase/IApplication.h>
14
15// ImtCore includes
16#include <imtstyle/CImtStyle.h>
17
18
19class DefaultImtCoreQmlInitializer
20{
21public:
22 static void Init()
23 {
24 InitImtCoreLocalization();
25 InitImtCoreResources();
26 InitStyle();
27 InitTheme();
28 InitImtCoreSdl();
29 InitQml();
30 }
31
32 static void InitAcfLocalization()
33 {
34 Q_INIT_RESOURCE(AcfLoc);
35 Q_INIT_RESOURCE(AcfSlnLoc);
36 }
37
38 static void InitImtCoreLocalization()
39 {
40 InitAcfLocalization();
41 Q_INIT_RESOURCE(ImtCoreLoc);
42 }
43
44 static void InitImtCoreSdl()
45 {
46 Q_INIT_RESOURCE(imtbaseSearchSdl);
47 Q_INIT_RESOURCE(imtbaseCommandsSdl);
48 Q_INIT_RESOURCE(imtbaseSettingsSdl);
49 Q_INIT_RESOURCE(imtbaseImtBaseTypesSdl);
50 Q_INIT_RESOURCE(imtbaseImtCollectionSdl);
51 Q_INIT_RESOURCE(imtbaseDocumentCollectionFilterSdl);
52 Q_INIT_RESOURCE(imtbaseComplexCollectionFilterSdl);
53 Q_INIT_RESOURCE(imtbaseDocumentRevisionSdl);
54 Q_INIT_RESOURCE(imtauthGroupsSdl);
55 Q_INIT_RESOURCE(imtauthRolesSdl);
56 Q_INIT_RESOURCE(imtauthUsersSdl);
57 Q_INIT_RESOURCE(imtauthProfileSdl);
58 Q_INIT_RESOURCE(imtauthSessionsSdl);
59 Q_INIT_RESOURCE(imtauthAuthorizationOptionsSdl);
60 Q_INIT_RESOURCE(imtauthAuthorizationSdl);
61 Q_INIT_RESOURCE(imtappApplicationSdl);
62 Q_INIT_RESOURCE(imtcolorLabSdl);
63 Q_INIT_RESOURCE(imtcolorRgbColorHexSdl);
64 Q_INIT_RESOURCE(imtbaseCollectionDocumentManagerSdl);
65 Q_INIT_RESOURCE(imtbaseUndoManagerSdl);
66 Q_INIT_RESOURCE(imtbaseDocumentIdFilterSdl);
67 Q_INIT_RESOURCE(imtbaseProgressManagerSdl);
68 Q_INIT_RESOURCE(imtbaseCollectionImportSdl);
69 Q_INIT_RESOURCE(imt2dGeometrySdl);
70 Q_INIT_RESOURCE(imt2dPaintSystemSdl);
71 Q_INIT_RESOURCE(imtauthPersonalAccessTokensSdl);
72 }
73
74 static void InitQml()
75 {
76 Q_INIT_RESOURCE(imtcontrolsqml);
77 Q_INIT_RESOURCE(imtguiqml);
78 Q_INIT_RESOURCE(imtcolguiqml);
79 Q_INIT_RESOURCE(imtdocguiqml);
80 Q_INIT_RESOURCE(imtguigqlqml);
81 Q_INIT_RESOURCE(imtauthguiqml);
82 Q_INIT_RESOURCE(imtlicguiqml);
83 }
84
85 static void InitGeoQml()
86 {
87 Q_INIT_RESOURCE(imtgeoguiqml);
88 }
89
90 static void InitTheme()
91 {
92 Q_INIT_RESOURCE(imtguiTheme);
93 Q_INIT_RESOURCE(imtauthguiTheme);
94 }
95
96 static void InitImtCoreResources()
97 {
98 Q_INIT_RESOURCE(imtbase);
99 Q_INIT_RESOURCE(imtstylecontrolsqml);
100
101 Q_INIT_RESOURCE(imtauthguilight);
102 Q_INIT_RESOURCE(imtauthguidark);
103
104 Q_INIT_RESOURCE(imtlicguilight);
105 Q_INIT_RESOURCE(imtlicguidark);
106
107 Q_INIT_RESOURCE(imtgui);
108 Q_INIT_RESOURCE(imtguilight);
109 Q_INIT_RESOURCE(imtguidark);
110
111 Q_INIT_RESOURCE(imtstyle);
112 Q_INIT_RESOURCE(imtstylelight);
113 Q_INIT_RESOURCE(imtstyledark);
114
115 Q_INIT_RESOURCE(imtdb);
116 }
117
118 static void InitStyle()
119 {
120 imtstyle::CImtStyle* imtStylePtr = imtstyle::CImtStyle::GetInstance();
121 Q_ASSERT(imtStylePtr != nullptr);
122 imtStylePtr->SetStyleType(imtstyle::CImtStyle::ST_IMAGINGTOOLS);
123
124 imtStylePtr->setBaseStyle(QStyleFactory::create("fusion"));
125 QApplication::setStyle(imtStylePtr);
126
127 QCoreApplication* appPtr = QCoreApplication::instance();
128 if (appPtr != nullptr){
129 appPtr->setProperty("ThemeId", "Light");
130 }
131 }
132};
133
134template <class ApplicationComposite, class AppInitializer, bool autoInit = false>
135int Run(int argc, char *argv[])
136{
137 AppInitializer::Init();
138
139 QDirIterator dirIter(":/Style");
140 while (dirIter.hasNext()){
141 qDebug() << dirIter.filePath();
142
143 dirIter.next();
144 }
145
146 QDirIterator dirIter3(":/Icons");
147 while (dirIter3.hasNext()){
148 qDebug() << dirIter3.filePath();
149
150 dirIter3.next();
151 }
152
153 QDirIterator dirIter2(":/Styles");
154 while (dirIter2.hasNext()){
155 qDebug() << dirIter2.filePath();
156
157 dirIter2.next();
158 }
159
160 ApplicationComposite instance;
161
162 if (autoInit){
163 instance.EnsureAutoInitComponentsCreated();
164 }
165
166 ibase::IApplication* applicationPtr = instance.template GetInterface<ibase::IApplication>();
167 if (applicationPtr != nullptr){
168 return applicationPtr->Execute(argc, argv);
169 }
170
171 return -1;
172}
173
174
Database Abstraction Layer (ORM Framework) for ImtCore applications.