100 return m_pAverageModel;
112 onSelectionChanged(ui->m_tableView_loadedSets->selectionModel()->selection(), QItemSelection());
115 ui->m_graphicsView_layout->fitInView(m_pAverageScene->sceneRect(), Qt::KeepAspectRatio);
116 m_pAverageScene->update(m_pAverageScene->sceneRect());
132 void AverageWindow::init()
134 initTableViewWidgets();
135 initAverageSceneView();
140 void AverageWindow::initMVC(QFile &file)
152 void AverageWindow::initMVC()
163 void AverageWindow::initTableViewWidgets()
166 ui->m_tableView_loadedSets->setModel(m_pAverageModel);
167 ui->m_tableView_loadedSets->setColumnHidden(1,
true);
168 ui->m_tableView_loadedSets->setColumnHidden(4,
true);
169 ui->m_tableView_loadedSets->resizeColumnsToContents();
171 ui->m_tableView_loadedSets->adjustSize();
174 ui->m_tableView_loadedSets->selectionModel()->select(QItemSelection(m_pAverageModel->index(0,0,QModelIndex()), m_pAverageModel->index(0,3,QModelIndex())),
175 QItemSelectionModel::Select);
178 connect(ui->m_tableView_loadedSets->selectionModel(), &QItemSelectionModel::selectionChanged,
179 this, &AverageWindow::onSelectionChanged);
185 void AverageWindow::initAverageSceneView()
188 m_pAverageScene =
new AverageScene(ui->m_graphicsView_layout,
this);
189 ui->m_graphicsView_layout->setScene(m_pAverageScene);
192 m_pButterflyScene =
new ButterflyScene(ui->m_graphicsView_butterflyPlot,
this);
193 ui->m_graphicsView_butterflyPlot->setScene(m_pButterflyScene);
196 for(
int i = 0; i<500; i++)
197 m_lButterflyColors.append(QColor(qrand()%256, qrand()%256, qrand()%256));
203 void AverageWindow::initButtons()
205 connect(ui->m_pushButton_exportLayoutPlot, &QPushButton::released,
206 this, &AverageWindow::exportAverageLayoutPlot);
208 connect(ui->m_pushButton_exportButterflyPlot, &QPushButton::released,
209 this, &AverageWindow::exportAverageButterflyPlot);
215 void AverageWindow::initComboBoxes()
217 connect(ui->m_comboBox_channelKind, &QComboBox::currentTextChanged,
219 this->onSelectionChanged(ui->m_tableView_loadedSets->selectionModel()->selection(),
220 ui->m_tableView_loadedSets->selectionModel()->selection());
227 void AverageWindow::onSelectionChanged(
const QItemSelection &selected,
const QItemSelection &deselected)
229 Q_UNUSED(deselected);
232 qDebug()<<
"AverageWindow::onSelectionChanged";
234 QList<QGraphicsItem *> currentAverageSceneItems = m_pAverageScene->items();
237 for(
int i = 0; i<currentAverageSceneItems.size(); i++) {
243 for(
int u = 0; u<selected.indexes().size(); u++) {
245 QModelIndex index = selected.indexes().at(u);
247 const FiffInfo* fiffInfo = m_pAverageModel->data(m_pAverageModel->index(index.row(), 4), AverageModelRoles::GetFiffInfo).value<
const FiffInfo*>();
248 RowVectorPair averageData = m_pAverageModel->data(m_pAverageModel->index(index.row(), 4), AverageModelRoles::GetAverageData).value<RowVectorPair>();
249 int first = m_pAverageModel->data(m_pAverageModel->index(index.row(), 2), AverageModelRoles::GetFirstSample).toInt();
250 int last = m_pAverageModel->data(m_pAverageModel->index(index.row(), 3), AverageModelRoles::GetLastSample).toInt();
253 QStringList chNames = fiffInfo->
ch_names;
255 int channelNumber = chNames.indexOf(averageSceneItemTemp->
m_sChannelName);
256 if(channelNumber != -1) {
268 m_pAverageScene->update();
271 m_pButterflyScene->clear();
273 for(
int i = 0; i<selected.indexes().size(); i++) {
275 QModelIndex index = selected.indexes().at(i);
277 const FiffInfo* fiffInfo = m_pAverageModel->data(m_pAverageModel->index(index.row(), 4), AverageModelRoles::GetFiffInfo).value<
const FiffInfo*>();
278 RowVectorPair averageData = m_pAverageModel->data(m_pAverageModel->index(index.row(), 4), AverageModelRoles::GetAverageData).value<RowVectorPair>();
279 int first = m_pAverageModel->data(m_pAverageModel->index(index.row(), 2), AverageModelRoles::GetFirstSample).toInt();
280 int last = m_pAverageModel->data(m_pAverageModel->index(index.row(), 3), AverageModelRoles::GetLastSample).toInt();
281 QString setName = m_pAverageModel->data(m_pAverageModel->index(index.row(), 0), Qt::DisplayRole).toString();
284 fiff_int_t setUnit, setKind;
285 if(ui->m_comboBox_channelKind->currentText() ==
"MEG_grad")
288 setUnit = FIFF_UNIT_T;
290 if(ui->m_comboBox_channelKind->currentText() ==
"EEG")
291 setKind = FIFFV_EEG_CH;
293 setKind = FIFFV_MEG_CH;
301 butterflySceneItemTemp->
m_lAverageData.second = averageData.second;
306 m_pButterflyScene->addItem(butterflySceneItemTemp);
309 m_pButterflyScene->update();
315 void AverageWindow::exportAverageLayoutPlot()
319 QString fileName = QFileDialog::getSaveFileName(
this,
321 QString(
"%1/%2_%3_%4_AveragePlot").arg(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).arg(date.currentDate().year()).arg(date.currentDate().month()).arg(date.currentDate().day()),
322 tr(
"Vector graphic(*.svg);;Images (*.png)"));
324 if(!fileName.isEmpty())
327 if(fileName.contains(
".svg"))
329 QSvgGenerator svgGen;
331 svgGen.setFileName(fileName);
332 QRectF rect = m_pAverageScene->itemsBoundingRect();
333 svgGen.setSize(QSize(rect.width(), rect.height()));
336 QPainter painter(&svgGen);
337 m_pAverageScene->render(&painter);
340 if(fileName.contains(
".png"))
342 m_pAverageScene->setSceneRect(m_pAverageScene->itemsBoundingRect());
343 QImage image(m_pAverageScene->sceneRect().size().toSize(), QImage::Format_ARGB32);
344 image.fill(Qt::transparent);
346 QPainter painter(&image);
347 m_pAverageScene->render(&painter);
348 image.save(fileName);
356 void AverageWindow::exportAverageButterflyPlot()
360 QString fileName = QFileDialog::getSaveFileName(
this,
361 "Save butterfly plot",
362 QString(
"%1/%2_%3_%4_ButterflyPlot").arg(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).arg(date.currentDate().year()).arg(date.currentDate().month()).arg(date.currentDate().day()),
363 tr(
"Vector graphic(*.svg);;Images (*.png)"));
365 if(!fileName.isEmpty())
368 if(fileName.contains(
".svg"))
370 QSvgGenerator svgGen;
372 svgGen.setFileName(fileName);
373 QRectF rect = m_pButterflyScene->itemsBoundingRect();
374 svgGen.setSize(QSize(rect.width(), rect.height()));
377 QPainter painter(&svgGen);
378 m_pButterflyScene->render(&painter);
381 if(fileName.contains(
".png"))
383 m_pButterflyScene->setSceneRect(m_pButterflyScene->itemsBoundingRect());
384 QImage image(m_pButterflyScene->sceneRect().size().toSize(), QImage::Format_ARGB32);
385 image.fill(Qt::transparent);
387 QPainter painter(&image);
388 m_pButterflyScene->render(&painter);
389 image.save(fileName);
397 void AverageWindow::resizeEvent(QResizeEvent *event)
AverageModel * getAverageModel()
Contains the declaration of the AverageWindow class.
QPair< int, int > m_firstLastSample
FIFF measurement file information.
void channelSelectionManagerChanged(const QList< QGraphicsItem * > &selectedChannelItems)
The ButterflyScene class provides a reimplemented QGraphicsScene for 2D layout plotting.
const FiffInfo * m_pFiffInfo
QList< RowVectorPair > m_lAverageData
The AverageScene class provides a reimplemented QGraphicsScene for 2D layout plotting.
The ButterflySceneItem class provides a new data structure for visualizing averages in a 2D layout...
QPair< int, int > m_firstLastSample
int m_iTotalNumberChannels
void setScaleMap(const QMap< QString, double > &scaleMap)
RowVectorPair m_lAverageData
void setScaleMap(const QMap< QString, double > &scaleMap)
void scaleAveragedData(const QMap< QString, double > &scaleMap)
AverageWindow(QWidget *parent, QFile &file)
The AverageWindow class provides a dock window for plotting averages.
void repaintItems(const QList< QGraphicsItem * > &selectedChannelItems)
The AverageSceneItem class provides a new data structure for visualizing averages in a 2D layout...