21 #include <qmessagebox.h>
24 #include <QQuickWindow>
25 #include <qopenglcontext.h>
26 #include <qsurfaceformat.h>
32 static QtMessageHandler old_handler;
34 static void MyQTMessageHandler(QtMsgType type,
const QMessageLogContext& context,
const QString& message)
36 if (old_handler != NULL)
38 old_handler(type, context, message);
53 selected = QMessageBox::critical(NULL,
"Attention !", message,
"Debug",
"Continue",
"Quit");
62 else if (selected == 1)
66 else if (selected == 2)
75 static int tyMain(
int argc,
char** argv)
79 old_handler = qInstallMessageHandler(MyQTMessageHandler);
80 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
82 QSurfaceFormat debugFormat;
83 debugFormat.setMajorVersion(4);
84 debugFormat.setMinorVersion(3);
85 debugFormat.setProfile(QSurfaceFormat::CompatibilityProfile);
86 debugFormat.setOptions(QSurfaceFormat::DebugContext | QSurfaceFormat::DeprecatedFunctions);
87 debugFormat.setSamples(16);
88 QSurfaceFormat::setDefaultFormat(debugFormat);
90 QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGLRhi);
92 QtWebView::initialize();
96 success = tyApp.run();
104 qInstallMessageHandler(old_handler);
108 success ? ret = 0 : ret = 1;
113 bool setenv(
const char* pVarEnvName, QString& pVarEnvValue,
bool pForceUpdate)
116 QString currentVarEnvValue = QString::fromLocal8Bit(qgetenv(pVarEnvName));
117 if (currentVarEnvValue !=
"" && !pForceUpdate)
120 currentVarEnvValue.toUtf8().data());
121 pVarEnvValue = currentVarEnvValue;
126 pVarEnvValue.toUtf8().data());
127 ret = qputenv(pVarEnvName, pVarEnvValue.toUtf8());
135 const QChar
SEP = QDir::listSeparator();
137 const char* PLUGINS =
"/pluginsd";
138 const char* CYTHON =
"/cython_d";
140 const char* PLUGINS =
"/plugins";
141 const char* CYTHON =
"/cython";
145 const char* PYTHON_DIR_NAME =
"/Python312";
146 const char* PYTHON_EXECUTABLE =
"/python.exe";
147 const char* PYTHON_LIBS =
"/Lib";
148 const char* PYTHON_SCRIPTS =
"/Scripts";
150 const char* PYTHON_DIR_NAME =
"Python3";
151 const char* PYTHON_EXECUTABLE =
"/bin/python";
152 const char* PYTHON_LIBS =
"/lib";
153 const char* PYTHON_SCRIPTS =
"/bin";
156 const QString TYMPAN_INSTALL_DIR = QDir::toNativeSeparators(QDir::currentPath());
159 ret |= qputenv(
"PYTHONIOENCODING",
"UTF8");
161 QString TYMPAN_INSTALL_PATH = QString(TYMPAN_INSTALL_DIR);
162 ret |=
setenv(
"TYMPAN_INSTALL_PATH", TYMPAN_INSTALL_PATH,
false);
164 QString PYTHONTYMPAN = QDir::toNativeSeparators(TYMPAN_INSTALL_DIR + QString(PYTHON_DIR_NAME));
165 ret |=
setenv(
"PYTHONTYMPAN", PYTHONTYMPAN,
false);
168 QString TYMPAN_SOLVERDIR = QDir::toNativeSeparators(TYMPAN_INSTALL_DIR + QString(PLUGINS));
169 ret |=
setenv(
"TYMPAN_SOLVERDIR", TYMPAN_SOLVERDIR,
false);
171 QString CGAL_BINDINGS_PATH = QDir::toNativeSeparators(TYMPAN_INSTALL_DIR + CYTHON + QString(
"/CGAL"));
172 ret |=
setenv(
"CGAL_BINDINGS_PATH", CGAL_BINDINGS_PATH,
false);
174 QString TYMPAN_PYTHON_INTERP = QDir::toNativeSeparators(PYTHONTYMPAN + QString(PYTHON_EXECUTABLE));
175 ret |=
setenv(
"TYMPAN_PYTHON_INTERP", TYMPAN_PYTHON_INTERP,
false);
177 QString PYTHONPATH = QDir::toNativeSeparators(TYMPAN_INSTALL_DIR + CYTHON) +
SEP + PYTHONTYMPAN +
SEP +
178 QDir::toNativeSeparators(PYTHONTYMPAN +
"/DLLs") +
SEP +
179 QDir::toNativeSeparators(PYTHONTYMPAN + PYTHON_LIBS) +
SEP +
180 QDir::toNativeSeparators(PYTHONTYMPAN + PYTHON_LIBS +
"/site-packages") +
SEP +
183 ret |=
setenv(
"PYTHONPATH", PYTHONPATH,
false);
185 QString PATH = TYMPAN_INSTALL_DIR +
SEP + PYTHONTYMPAN +
SEP +
186 QDir::toNativeSeparators(PYTHONTYMPAN +
"/DLLs") +
SEP +
187 QDir::toNativeSeparators(PYTHONTYMPAN + PYTHON_LIBS) +
SEP +
188 QDir::toNativeSeparators(PYTHONTYMPAN + PYTHON_SCRIPTS);
189 ret |=
setenv(
"PATH", PATH,
true);
191 QString LD_LIBRARY_PATH = QDir::toNativeSeparators(TYMPAN_INSTALL_DIR + PYTHON_LIBS) +
SEP +
192 QDir::toNativeSeparators(TYMPAN_INSTALL_DIR + CYTHON) +
SEP +
193 QDir::toNativeSeparators(TYMPAN_INSTALL_DIR + CYTHON + QString(
"/CGAL"));
194 ret |=
setenv(
"LD_LIBRARY_PATH", LD_LIBRARY_PATH,
false);
196 QString PYTHONLEGACYWINDOWSSTDIO = QString(
"1");
197 ret |=
setenv(
"PYTHONLEGACYWINDOWSSTDIO", PYTHONLEGACYWINDOWSSTDIO,
false);
202 int main(
int argc,
char** argv)
204 QApplication::setStyle(
"Fusion");
206 bool ret_setenv =
true;
216 ret = tyMain(argc, argv);
pour l'application Tympan (fichier header)
virtual void debug(const char *message,...)
static OMessageManager * get()
virtual void info(const char *message,...)
Classe principale pour l'application Tympan.
static uint64 getConstructorCount()
static uint64 getIdGenerationCount()
static uint64 getDestructorCount()
int main(int argc, char **argv)
bool setenv(const char *pVarEnvName, QString &pVarEnvValue, bool pForceUpdate)