Source code for src.study.study_edit_info.study_edit_info_view

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Study Edit Info View
"""

from PyQt5.QtWidgets import QWidget, QPushButton, QLabel, QLineEdit, QHBoxLayout, QVBoxLayout, QGridLayout

from utils.view.separator import create_layout_separator

__author__ = "Lemahieu Antoine"
__copyright__ = "Copyright 2022"
__credits__ = ["Lemahieu Antoine"]
__license__ = "GNU General Public License v3.0"
__maintainer__ = "Lemahieu Antoine"
__email__ = "Antoine.Lemahieu@ulb.be"
__status__ = "Dev"


[docs]class studyEditInfoView(QWidget): def __init__(self, study): """ Window displaying the parameters for loading additional data information. :param study: The current study created on the datasets. :type study: studyModel """ super().__init__() self.study_listener = None self.setWindowTitle("Study Edit Info") self.global_layout = QVBoxLayout() self.setLayout(self.global_layout) # Dataset Name self.study_name_widget = QWidget() self.study_name_layout = QHBoxLayout() self.study_name_line = QLineEdit() self.study_name_line.setText(study.get_study_name()) self.study_name_layout.addWidget(QLabel("Study name : ")) self.study_name_layout.addWidget(self.study_name_line) self.study_name_widget.setLayout(self.study_name_layout) # Task Name self.task_name_widget = QWidget() self.task_name_layout = QHBoxLayout() self.task_name_line = QLineEdit() self.task_name_line.setText(study.get_task_name()) self.task_name_layout.addWidget(QLabel("Task name : ")) self.task_name_layout.addWidget(self.task_name_line) self.task_name_widget.setLayout(self.task_name_layout) # Datasets Grid self.datasets_widget = QWidget() self.datasets_layout = QGridLayout() self.all_dataset_lines = [] dataset_names_labels = ["Dataset Filename", "Subject", "Session", "Run", "Condition", "Group"] for i in range(len(dataset_names_labels)): self.datasets_layout.addWidget(QLabel(dataset_names_labels[i]), 0, i) number_of_datasets = len(study.get_dataset_indexes()) self.dataset_names = study.get_dataset_names() subjects = study.get_subjects() sessions = study.get_sessions() runs = study.get_runs() conditions = study.get_conditions() groups = study.get_groups() for i in range(number_of_datasets): # Add lines self.all_dataset_lines.append([]) dataset_line = QLineEdit(self.dataset_names[i]) self.datasets_layout.addWidget(dataset_line, i+1, 0) self.all_dataset_lines[i].append(dataset_line) subject_line = QLineEdit(subjects[i]) self.datasets_layout.addWidget(subject_line, i+1, 1) self.all_dataset_lines[i].append(subject_line) session_line = QLineEdit(sessions[i]) self.datasets_layout.addWidget(session_line, i+1, 2) self.all_dataset_lines[i].append(session_line) run_line = QLineEdit(runs[i]) self.datasets_layout.addWidget(run_line, i+1, 3) self.all_dataset_lines[i].append(run_line) condition_line = QLineEdit(conditions[i]) self.datasets_layout.addWidget(condition_line, i+1, 4) self.all_dataset_lines[i].append(condition_line) group_line = QLineEdit(groups[i]) self.datasets_layout.addWidget(group_line, i+1, 5) self.all_dataset_lines[i].append(group_line) self.datasets_widget.setLayout(self.datasets_layout) # Cancel Confirm self.cancel_confirm_widget = QWidget() self.cancel_confirm_layout = QHBoxLayout() self.cancel = QPushButton("&Cancel", self) self.cancel.clicked.connect(self.cancel_study_trigger) self.confirm = QPushButton("&Confirm", self) self.confirm.clicked.connect(self.confirm_study_trigger) self.cancel_confirm_layout.addWidget(self.cancel) self.cancel_confirm_layout.addWidget(self.confirm) self.cancel_confirm_widget.setLayout(self.cancel_confirm_layout) # Layout self.global_layout.addWidget(self.study_name_widget) self.global_layout.addWidget(create_layout_separator()) self.global_layout.addWidget(self.datasets_widget) self.global_layout.addWidget(create_layout_separator()) self.global_layout.addWidget(self.cancel_confirm_widget) """ Triggers """
[docs] def cancel_study_trigger(self): """ Send the information to the controller that the computation is cancelled. """ self.study_listener.cancel_button_clicked()
[docs] def confirm_study_trigger(self): """ Retrieve the all the additional information and send the information to the controller. """ study_name = self.study_name_line.text() if study_name == "": study_name = "No Name" task_name = self.task_name_line.text() if task_name == "": task_name = "No Name" subjects = [] sessions = [] runs = [] conditions = [] groups = [] for i in range(len(self.all_dataset_lines)): # Each dataset subjects.append(self.all_dataset_lines[i][1].text()) sessions.append(self.all_dataset_lines[i][2].text()) runs.append(self.all_dataset_lines[i][3].text()) conditions.append(self.all_dataset_lines[i][4].text()) groups.append(self.all_dataset_lines[i][5].text()) self.study_listener.confirm_button_clicked(study_name, task_name, subjects, sessions, runs, conditions, groups)
""" Setters """
[docs] def set_listener(self, listener): """ Set the listener to the controller. :param listener: Listener to the controller. :type listener: loadDataInfoController """ self.study_listener = listener