##// END OF EJS Templates
Add button on the SidePane widgets to open left or right inspectors
Add button on the SidePane widgets to open left or right inspectors

File last commit:

r101:9678ebc27091
r101:9678ebc27091
Show More
MainWindow.cpp
212 lines | 7.3 KiB | text/x-c | CppLexer
Initialisation de l'application multithread avec le spimpl....
r21 /*------------------------------------------------------------------------------
Refactoring of app module to avoir vera++ warning and to dispatch sources files in the corrects paths
r54 -- This file is a part of the SciQLop Software
-- Copyright (C) 2017, Plasma Physics Laboratory - CNRS
Initialisation de l'application multithread avec le spimpl....
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
----------------------------------------------------------------------------*/
Refactoring of app module to avoir vera++ warning and to dispatch sources files in the corrects paths
r54 #include "MainWindow.h"
#include "ui_MainWindow.h"
Alexandre Leroux
Connects data source widget to data source controller
r84
#include <DataSource/DataSourceController.h>
#include <DataSource/DataSourceWidget.h>
Add button on the SidePane widgets to open left or right inspectors
r101 #include <SidePane/SqpSidePane.h>
Alexandre Leroux
Connects data source widget to data source controller
r84 #include <SqpApplication.h>
Initialisation de l'application multithread avec le spimpl....
r21 #include <QAction>
#include <QDate>
#include <QDateTime>
#include <QDir>
#include <QFileDialog>
Add button on the SidePane widgets to open left or right inspectors
r101 #include <QToolBar>
#include <memory.h>
comment omp.h to ensure the compilation from the command line
r29 //#include <omp.h>
Initialisation de l'application multithread avec le spimpl....
r21 //#include <network/filedownloader.h>
//#include <qlopdatabase.h>
//#include <qlopsettings.h>
//#include <qlopgui.h>
//#include <spacedata.h>
//#include "qlopcore.h"
//#include "qlopcodecmanager.h"
//#include "cdfcodec.h"
//#include "amdatxtcodec.h"
//#include <qlopplotmanager.h>
Add button on the SidePane widgets to open left or right inspectors
r101
#include "iostream"
Q_LOGGING_CATEGORY(LOG_MainWindow, "MainWindow")
class MainWindow::MainWindowPrivate {
public:
QSize m_LastOpenLeftInspectorSize;
QSize m_LastOpenRightInspectorSize;
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow{parent},
m_Ui{new Ui::MainWindow},
impl{spimpl::make_unique_impl<MainWindowPrivate>()}
Initialisation de l'application multithread avec le spimpl....
r21 {
Refactoring of app module to avoir vera++ warning and to dispatch sources files in the corrects paths
r54 m_Ui->setupUi(this);
Add skelleton of the gui
r56
Add button on the SidePane widgets to open left or right inspectors
r101
m_Ui->splitter->setCollapsible(1, false);
m_Ui->splitter->setCollapsible(3, false);
// Lambda that defines what's happened when clicking on the leftSidePaneInspector open button
auto openLeftInspector = [&](bool checked) {
// Update of the last opened geometry
if (checked) {
impl->m_LastOpenLeftInspectorSize = m_Ui->leftMainInspectorWidget->size();
}
auto startSize = impl->m_LastOpenLeftInspectorSize;
auto endSize = startSize;
endSize.setWidth(0);
QList<int> currentSizes = m_Ui->splitter->sizes();
if (checked) {
// adjust sizes individually here, e.g.
currentSizes[0] -= impl->m_LastOpenLeftInspectorSize.width();
currentSizes[2] += impl->m_LastOpenLeftInspectorSize.width();
m_Ui->splitter->setSizes(currentSizes);
}
else {
// adjust sizes individually here, e.g.
currentSizes[0] += impl->m_LastOpenLeftInspectorSize.width();
currentSizes[2] -= impl->m_LastOpenLeftInspectorSize.width();
m_Ui->splitter->setSizes(currentSizes);
}
};
// Lambda that defines what's happened when clicking on the SidePaneInspector open button
auto openRightInspector = [&](bool checked) {
// Update of the last opened geometry
if (checked) {
impl->m_LastOpenRightInspectorSize = m_Ui->rightMainInspectorWidget->size();
}
auto startSize = impl->m_LastOpenRightInspectorSize;
auto endSize = startSize;
endSize.setWidth(0);
QList<int> currentSizes = m_Ui->splitter->sizes();
if (checked) {
// adjust sizes individually here, e.g.
currentSizes[4] -= impl->m_LastOpenRightInspectorSize.width();
currentSizes[2] += impl->m_LastOpenRightInspectorSize.width();
m_Ui->splitter->setSizes(currentSizes);
}
else {
// adjust sizes individually here, e.g.
currentSizes[4] += impl->m_LastOpenRightInspectorSize.width();
currentSizes[2] -= impl->m_LastOpenRightInspectorSize.width();
m_Ui->splitter->setSizes(currentSizes);
}
};
QToolBar *leftSidePane = m_Ui->leftInspectorSidePane->sidePane();
auto openLeftInspectorAction = leftSidePane->addAction(
QIcon{
":/icones/openInspector.png",
},
"ACTION L1", openLeftInspector);
openLeftInspectorAction->setCheckable(true);
Add skelleton of the gui
r56
Creation and styling SidePaneWidget
r57 auto rightSidePane = m_Ui->rightInspectorSidePane->sidePane();
Add button on the SidePane widgets to open left or right inspectors
r101 auto openRightInspectorAction = rightSidePane->addAction(
QIcon{
":/icones/openInspector.png",
},
"ACTION L1", openRightInspector);
openRightInspectorAction->setCheckable(true);
Creation and styling SidePaneWidget
r57
this->menuBar()->addAction("File");
auto mainToolBar = this->addToolBar("MainToolBar");
mainToolBar->addAction("A1");
Alexandre Leroux
Connects data source widget to data source controller
r84
// Widgets / controllers connections
Alexandre Leroux
Change signal/slot signature for data source
r92 connect(&sqpApp->dataSourceController(), SIGNAL(dataSourceItemSet(DataSourceItem *)),
m_Ui->dataSourceWidget, SLOT(addDataSource(DataSourceItem *)));
Alexandre Leroux
Connects data source widget to data source controller
r84
Initialisation de l'application multithread avec le spimpl....
r21 /* QLopGUI::registerMenuBar(menuBar());
this->setWindowIcon(QIcon(":/sciqlopLOGO.svg"));
this->m_progressWidget = new QWidget();
this->m_progressLayout = new QVBoxLayout(this->m_progressWidget);
this->m_progressWidget->setLayout(this->m_progressLayout);
this->m_progressWidget->setWindowModality(Qt::WindowModal);
m_progressThreadIds = (int*) malloc(OMP_THREADS*sizeof(int));
for(int i=0;i<OMP_THREADS;i++)
{
this->m_progress.append(new QProgressBar(this->m_progressWidget));
this->m_progress.last()->setMinimum(0);
this->m_progress.last()->setMaximum(100);
this->m_progressLayout->addWidget(this->m_progress.last());
this->m_progressWidget->hide();
this->m_progressThreadIds[i] = -1;
}
this->m_progressWidget->setWindowTitle("Loading File");
const QList<QLopService*>ServicesToLoad=QList<QLopService*>()
<< QLopCore::self()
<< QLopPlotManager::self()
<< QLopCodecManager::self()
<< FileDownloader::self()
<< QLopDataBase::self()
<< SpaceData::self();
CDFCodec::registerToManager();
AMDATXTCodec::registerToManager();
for(int i=0;i<ServicesToLoad.count();i++)
{
qDebug()<<ServicesToLoad.at(i)->serviceName();
ServicesToLoad.at(i)->initialize(); //must be called before getGUI
QDockWidget* wdgt=ServicesToLoad.at(i)->getGUI();
if(wdgt)
{
wdgt->setAllowedAreas(Qt::AllDockWidgetAreas);
this->addDockWidget(Qt::TopDockWidgetArea,wdgt);
}
PythonQt::self()->getMainModule().addObject(ServicesToLoad.at(i)->serviceName(),(QObject*)ServicesToLoad.at(i));
}*/
}
MainWindow::~MainWindow()
{
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
Refactoring of app module to avoir vera++ warning and to dispatch sources files in the corrects paths
r54 m_Ui->retranslateUi(this);
Initialisation de l'application multithread avec le spimpl....
r21 break;
default:
break;
}
}