MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
multiview.cpp
Go to the documentation of this file.
1//=============================================================================================================
34//=============================================================================================================
35// INCLUDES
36//=============================================================================================================
37
38#include "multiview.h"
39#include "multiviewwindow.h"
40#include "rtfiffrawview.h"
41#include "averagelayoutview.h"
42#include "butterflyview.h"
43
44//=============================================================================================================
45// Qt INCLUDES
46//=============================================================================================================
47
48#include <QHBoxLayout>
49#include <QDebug>
50#include <QSettings>
51
52//=============================================================================================================
53// USED NAMESPACES
54//=============================================================================================================
55
56using namespace DISPLIB;
57
58//=============================================================================================================
59// DEFINE MEMBER METHODS
60//=============================================================================================================
61
62MultiView::MultiView(const QString& sSettingsPath,
63 QWidget *parent,
64 Qt::WindowFlags flags)
65: QMainWindow(parent, flags)
66{
67 m_sSettingsPath = sSettingsPath;
68 this->setDockNestingEnabled(true);
69 if(QWidget* pCentralWidget = this->centralWidget()) {
70 pCentralWidget->hide();
71 }
72}
73
74//=============================================================================================================
75
79
80//=============================================================================================================
81
83 const QString& sName)
84{
85 MultiViewWindow* pDockWidget = new MultiViewWindow(this);
86 pDockWidget->setObjectName(sName);
87 pDockWidget->setWindowTitle(sName);
88 pDockWidget->setWidget(pWidget);
89
90 // Disable floating and editable dock widgets, since the wasm QDockWidget version is buggy
91 #ifdef WASMBUILD
92 pDockWidget->setFeatures(QDockWidget::DockWidgetClosable);
93 #endif
94
95 if(pWidget->layout() && pDockWidget->layout()){
96 pWidget->layout()->setContentsMargins(0,0,0,0);
97 pDockWidget->layout()->setContentsMargins(0,0,0,0);
98 }
99
100 this->addDockWidget(Qt::DockWidgetArea::TopDockWidgetArea, pDockWidget);
101
102 connect(pDockWidget, &MultiViewWindow::dockLocationChanged, [=]() {
103 emit dockLocationChanged(pWidget);
104 });
105
106 return pDockWidget;
107}
108
109//=============================================================================================================
110
112 const QString& sName)
113{
114 MultiViewWindow* pDockWidget = new MultiViewWindow(this);
115 pDockWidget->setObjectName(sName);
116 pDockWidget->setWindowTitle(sName);
117 pDockWidget->setWidget(pWidget);
118
119 pWidget->setParent(pDockWidget);
120
121 // Disable floating and editable dock widgets, since the wasm QDockWidget version is buggy
122 #ifdef WASMBUILD
123 pDockWidget->setFeatures(QDockWidget::DockWidgetClosable);
124 #endif
125
126 if(pWidget->layout() && pDockWidget->layout()){
127 pWidget->layout()->setContentsMargins(0,0,0,0);
128 pDockWidget->layout()->setContentsMargins(0,0,0,0);
129 }
130
131 if(m_lDockWidgets.isEmpty()) {
132 this->addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, pDockWidget);
133 }
134
135 for(int i = 0; i < m_lDockWidgets.size(); ++i) {
136 this->tabifyDockWidget(m_lDockWidgets.at(i), pDockWidget);
137 }
138
139 m_lDockWidgets.append(pDockWidget);
140
141 connect(pDockWidget, &MultiViewWindow::dockLocationChanged, [=]() {
142 emit dockLocationChanged(pWidget);
143 });
144
145 return pDockWidget;
146}
147
148//=============================================================================================================
149
151{
152 if(m_sSettingsPath.isEmpty()) {
153 qWarning() << "[MultiView::saveSettings] Settings path not set for main window. Cannot save central widget state.";
154 return;
155 }
156
157 QSettings settings("MNECPP");
158
159 settings.beginGroup(m_sSettingsPath + QString("/MultiView"));
160 settings.setValue("geometry", saveGeometry());
161 settings.setValue("state", saveState());
162 settings.endGroup();
163}
164
165//=============================================================================================================
166
168{
169 if(m_sSettingsPath.isEmpty()) {
170 qWarning() << "[MultiView::loadSettings] Settings path not set for main window. Cannot load central widget state.";
171 return;
172 }
173
174 QSettings settings("MNECPP");
175
176 settings.beginGroup(m_sSettingsPath + QString("/MultiView"));
177 restoreGeometry(settings.value("geometry").toByteArray());
178 restoreState(settings.value("state").toByteArray());
179 settings.endGroup();
180}
Declaration of the AverageLayoutView Class.
Declaration of the ButterflyView class.
Declaration of the RtFiffRawView Class.
MultiViewWindow class declaration.
MultiView class declaration.
MultiViewWindow * addWidgetTop(QWidget *pWidget, const QString &sName)
Definition multiview.cpp:82
MultiView(const QString &sSettingsPath="", QWidget *parent=Q_NULLPTR, Qt::WindowFlags flags=Qt::Widget)
Definition multiview.cpp:62
MultiViewWindow * addWidgetBottom(QWidget *pWidget, const QString &sName)
The MultiViewWindow class provides sub windows as QDockWidgets.