MainWindow.h
120 lines
| 3.3 KiB
| text/x-c
|
CLexer
r21 | /*------------------------------------------------------------------------------ | |||
r54 | -- This file is a part of the SciQLop Software | |||
-- Copyright (C) 2017, Plasma Physics Laboratory - CNRS | ||||
r21 | -- | |||
-- This program is free software; you can redistribute it and/or modify | ||||
-- it under the terms of the GNU General Public License as published by | ||||
-- the Free Software Foundation; either version 2 of the License, or | ||||
-- (at your option) any later version. | ||||
-- | ||||
-- This program is distributed in the hope that it will be useful, | ||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
-- GNU General Public License for more details. | ||||
-- | ||||
-- You should have received a copy of the GNU General Public License | ||||
-- along with this program; if not, write to the Free Software | ||||
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
-------------------------------------------------------------------------------*/ | ||||
/*-- Author : Alexis Jeandet | ||||
-- Mail : alexis.jeandet@member.fsf.org | ||||
----------------------------------------------------------------------------*/ | ||||
r54 | #ifndef SCIQLOP_MAINWINDOW_H | |||
#define SCIQLOP_MAINWINDOW_H | ||||
r21 | ||||
r1477 | #include <PluginManager/PluginManager.h> | |||
#include <QDir> | ||||
r101 | #include <QLoggingCategory> | |||
r21 | #include <QMainWindow> | |||
#include <QProgressBar> | ||||
#include <QProgressDialog> | ||||
#include <QThread> | ||||
#include <QVBoxLayout> | ||||
#include <QWidget> | ||||
r1477 | #include <QtPlugin> | |||
#include <SqpApplication.h> | ||||
r101 | ||||
#include <Common/spimpl.h> | ||||
r21 | ||||
r54 | #include <memory> | |||
r21 | ||||
r1477 | namespace Ui | |||
{ | ||||
r21 | class MainWindow; | |||
r54 | } // namespace Ui | |||
r21 | ||||
r1477 | class MainWindow : public QMainWindow | |||
{ | ||||
r21 | Q_OBJECT | |||
public: | ||||
r1477 | explicit MainWindow(QWidget* parent = nullptr); | |||
r1376 | virtual ~MainWindow() override; | |||
r21 | public slots: | |||
protected: | ||||
r1477 | void changeEvent(QEvent* e) override; | |||
void closeEvent(QCloseEvent* event) override; | ||||
r1376 | ||||
r1477 | void keyPressEvent(QKeyEvent* event) override; | |||
r21 | ||||
private: | ||||
r54 | std::unique_ptr<Ui::MainWindow> m_Ui; | |||
// QWidget *m_progressWidget; | ||||
// QVBoxLayout *m_progressLayout; | ||||
r21 | // QList<QLopService*> m_qlopServices; | |||
r101 | class MainWindowPrivate; | |||
spimpl::unique_impl_ptr<MainWindowPrivate> impl; | ||||
r21 | }; | |||
r1477 | inline void init_resources() | |||
{ | ||||
#ifdef QT_STATICPLUGIN | ||||
#ifndef SQP_NO_PLUGINS | ||||
Q_IMPORT_PLUGIN(PythonProviders) | ||||
Q_INIT_RESOURCE(python_providers); | ||||
#endif | ||||
#endif | ||||
Q_INIT_RESOURCE(sqpguiresources); | ||||
SqpApplication::setOrganizationName("LPP"); | ||||
SqpApplication::setOrganizationDomain("lpp.fr"); | ||||
SqpApplication::setApplicationName("SciQLop"); | ||||
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); | ||||
} | ||||
inline void load_plugins(const SqpApplication& a) | ||||
{ | ||||
// Loads plugins | ||||
auto pluginDir = QDir { a.applicationDirPath() }; | ||||
auto pluginLookupPath = { | ||||
#if _WIN32 || _WIN64 | ||||
a.applicationDirPath() + "/SciQLop" | ||||
#else | ||||
a.applicationDirPath() + "/../lib64/SciQLop", | ||||
a.applicationDirPath() + "/../lib64/sciqlop", | ||||
a.applicationDirPath() + "/../lib/SciQLop", | ||||
a.applicationDirPath() + "/../lib/sciqlop", | ||||
#endif | ||||
}; | ||||
#if _WIN32 || _WIN64 | ||||
pluginDir.mkdir(PLUGIN_DIRECTORY_NAME); | ||||
pluginDir.cd(PLUGIN_DIRECTORY_NAME); | ||||
#endif | ||||
PluginManager pluginManager {}; | ||||
for (auto&& path : pluginLookupPath) | ||||
{ | ||||
QDir directory { path }; | ||||
if (directory.exists()) | ||||
{ | ||||
pluginManager.loadPlugins(directory); | ||||
} | ||||
} | ||||
pluginManager.loadStaticPlugins(); | ||||
} | ||||
r54 | #endif // SCIQLOP_MAINWINDOW_H | |||