v2.0.0
Loading...
Searching...
No Matches
multiview.cpp
Go to the documentation of this file.
1//=============================================================================================================
14// INCLUDES
15//=============================================================================================================
16
17#include "multiview.h"
18#include "multiviewwindow.h"
19#include "rtfiffrawview.h"
20#include "averagelayoutview.h"
21#include "butterflyview.h"
22
23//=============================================================================================================
24// Qt INCLUDES
25//=============================================================================================================
26
27#include <QHBoxLayout>
28#include <QDebug>
29#include <QSettings>
30
31//=============================================================================================================
32// USED NAMESPACES
33//=============================================================================================================
34
35using namespace DISPLIB;
36
37//=============================================================================================================
38// DEFINE MEMBER METHODS
39//=============================================================================================================
40
41MultiView::MultiView(const QString& sSettingsPath,
42 QWidget *parent,
43 Qt::WindowFlags flags)
44: QMainWindow(parent, flags)
45{
46 m_sSettingsPath = sSettingsPath;
47 this->setDockNestingEnabled(true);
48 if(QWidget* pCentralWidget = this->centralWidget()) {
49 pCentralWidget->hide();
50 }
51}
52
53//=============================================================================================================
54
58
59//=============================================================================================================
60
62 const QString& sName)
63{
64 MultiViewWindow* pDockWidget = new MultiViewWindow(this);
65 pDockWidget->setObjectName(sName);
66 pDockWidget->setWindowTitle(sName);
67 pDockWidget->setWidget(pWidget);
68
69 // Disable floating and editable dock widgets, since the wasm QDockWidget version is buggy
70 #ifdef WASMBUILD
71 pDockWidget->setFeatures(QDockWidget::DockWidgetClosable);
72 #endif
73
74 if(pWidget->layout() && pDockWidget->layout()){
75 pWidget->layout()->setContentsMargins(0,0,0,0);
76 pDockWidget->layout()->setContentsMargins(0,0,0,0);
77 }
78
79 this->addDockWidget(Qt::DockWidgetArea::TopDockWidgetArea, pDockWidget);
80
81 connect(pDockWidget, &MultiViewWindow::dockLocationChanged, [=, this]() {
82 emit dockLocationChanged(pWidget);
83 });
84
85 return pDockWidget;
86}
87
88//=============================================================================================================
89
91 const QString& sName)
92{
93 MultiViewWindow* pDockWidget = new MultiViewWindow(this);
94 pDockWidget->setObjectName(sName);
95 pDockWidget->setWindowTitle(sName);
96 pDockWidget->setWidget(pWidget);
97
98 pWidget->setParent(pDockWidget);
99
100 // Disable floating and editable dock widgets, since the wasm QDockWidget version is buggy
101 #ifdef WASMBUILD
102 pDockWidget->setFeatures(QDockWidget::DockWidgetClosable);
103 #endif
104
105 if(pWidget->layout() && pDockWidget->layout()){
106 pWidget->layout()->setContentsMargins(0,0,0,0);
107 pDockWidget->layout()->setContentsMargins(0,0,0,0);
108 }
109
110 if(m_lDockWidgets.isEmpty()) {
111 this->addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, pDockWidget);
112 }
113
114 for(int i = 0; i < m_lDockWidgets.size(); ++i) {
115 this->tabifyDockWidget(m_lDockWidgets.at(i), pDockWidget);
116 }
117
118 m_lDockWidgets.append(pDockWidget);
119
120 connect(pDockWidget, &MultiViewWindow::dockLocationChanged, [=, this]() {
121 emit dockLocationChanged(pWidget);
122 });
123
124 return pDockWidget;
125}
126
127//=============================================================================================================
128
130{
131 if(m_sSettingsPath.isEmpty()) {
132 qWarning() << "[MultiView::saveSettings] Settings path not set for main window. Cannot save central widget state.";
133 return;
134 }
135
136 QSettings settings("MNECPP");
137
138 settings.beginGroup(m_sSettingsPath + QString("/MultiView"));
139 settings.setValue("geometry", saveGeometry());
140 settings.setValue("state", saveState());
141 settings.endGroup();
142}
143
144//=============================================================================================================
145
147{
148 if(m_sSettingsPath.isEmpty()) {
149 qWarning() << "[MultiView::loadSettings] Settings path not set for main window. Cannot load central widget state.";
150 return;
151 }
152
153 QSettings settings("MNECPP");
154
155 settings.beginGroup(m_sSettingsPath + QString("/MultiView"));
156 restoreGeometry(settings.value("geometry").toByteArray());
157 restoreState(settings.value("state").toByteArray());
158 settings.endGroup();
159}
Real-time FIFF raw-data table browser backed by RtFiffRawViewModel + RtFiffRawViewDelegate.
2-D sensor-layout view placing per-channel evoked traces at their physical positions.
QMainWindow container hosting an arbitrary number of MultiViewWindow dock widgets.
QRhi-accelerated butterfly plot overlaying every channel of one or more averaged conditions.
QDockWidget wrapper used as the building block of MultiView layouts.
2-D display widgets and visualisation helpers (charts, topography, colour maps).
MultiViewWindow * addWidgetTop(QWidget *pWidget, const QString &sName)
Definition multiview.cpp:61
MultiView(const QString &sSettingsPath="", QWidget *parent=nullptr, Qt::WindowFlags flags=Qt::Widget)
Definition multiview.cpp:41
void dockLocationChanged(QWidget *pWidget)
MultiViewWindow * addWidgetBottom(QWidget *pWidget, const QString &sName)
Definition multiview.cpp:90
QDockWidget wrapper used as the building block of MultiView layouts.