Source code for src.plots.topographies.topographies_view
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Topographies view
"""
from PyQt5.QtWidgets import QWidget, QPushButton, QCheckBox, QButtonGroup, QHBoxLayout, QVBoxLayout, QLineEdit, QLabel
__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 topographiesView(QWidget):
def __init__(self):
"""
Window displaying the parameters for computing topographies on the dataset.
"""
super().__init__()
self.topographies_listener = None
self.setWindowTitle("Topographies")
self.vertical_layout = QVBoxLayout()
self.setLayout(self.vertical_layout)
self.time_points_widget = QWidget()
self.time_points_layout = QHBoxLayout()
self.time_points_layout.addWidget(QLabel("Time points to plot (sec) : "))
self.time_points_line = QLineEdit()
self.time_points_layout.addWidget(self.time_points_line)
self.time_points_widget.setLayout(self.time_points_layout)
self.topographies_mode_widget = QWidget()
self.topographies_mode_layout = QVBoxLayout()
self.topographies_mode_buttons = QButtonGroup()
self.separated_check_box = QCheckBox()
self.separated_check_box.setChecked(True)
self.separated_check_box.setText("Separated topographies")
self.topographies_mode_buttons.addButton(self.separated_check_box, 1) # Button with ID 1
self.animated_check_box = QCheckBox()
self.animated_check_box.setText("Animated topographies")
self.topographies_mode_buttons.addButton(self.animated_check_box, 2) # Button with ID 2
self.topographies_mode_layout.addWidget(self.separated_check_box)
self.topographies_mode_layout.addWidget(self.animated_check_box)
self.topographies_mode_widget.setLayout(self.topographies_mode_layout)
self.cancel_confirm_widget = QWidget()
self.cancel_confirm_layout = QHBoxLayout()
self.cancel = QPushButton("&Cancel", self)
self.cancel.clicked.connect(self.cancel_topographies_trigger)
self.confirm = QPushButton("&Confirm", self)
self.confirm.clicked.connect(self.confirm_topographies_trigger)
self.cancel_confirm_layout.addWidget(self.cancel)
self.cancel_confirm_layout.addWidget(self.confirm)
self.cancel_confirm_widget.setLayout(self.cancel_confirm_layout)
self.vertical_layout.addWidget(self.time_points_widget)
self.vertical_layout.addWidget(self.topographies_mode_widget)
self.vertical_layout.addWidget(self.cancel_confirm_widget)
"""
Triggers
"""
[docs] def cancel_topographies_trigger(self):
"""
Send the information to the controller that the computation is cancelled.
"""
self.topographies_listener.cancel_button_clicked()
[docs] def confirm_topographies_trigger(self):
"""
Retrieve the parameters and send the information to the controller.
"""
mode = None
checked_button = self.topographies_mode_buttons.checkedButton()
button_id = self.topographies_mode_buttons.id(checked_button)
if button_id == 1: # Separated topographies
mode = "separated"
elif button_id == 2: # Animated topographies
mode = "animated"
time_points = self.create_array_from_time_points(mode)
self.topographies_listener.confirm_button_clicked(time_points, mode)
"""
Others
"""
[docs] def create_array_from_time_points(self, mode):
"""
Create an array of time points depending on the time points given.
:param mode: Mode used for plotting the topographies.
:type mode: str
:return: "auto" if no time points are set. Will create an evenly dispersed time points to display.
:rtype: str/None/list of float
"""
time_points = self.time_points_line.text()
if time_points == "":
if mode == "separated":
return "auto"
elif mode == "animated":
return None
else:
splitted_time_points = time_points.split()
float_time_points = []
for time_point in splitted_time_points:
float_time_points.append(float(time_point.replace(',', '.')))
return float_time_points
"""
Setters
"""
[docs] def set_listener(self, listener):
"""
Set the listener to the controller.
:param listener: Listener to the controller.
:type listener: topographiesController
"""
self.topographies_listener = listener