From 46935fde4573b30731f9ae7881760e39d86f965c Mon Sep 17 00:00:00 2001 From: Theophile Terraz <theophile.terraz@inrae.fr> Date: Tue, 4 Feb 2025 18:06:11 +0100 Subject: [PATCH] forgotten file --- src/View/Results/CustomExport/CustomExport.py | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 src/View/Results/CustomExport/CustomExport.py diff --git a/src/View/Results/CustomExport/CustomExport.py b/src/View/Results/CustomExport/CustomExport.py new file mode 100644 index 00000000..fe430c7c --- /dev/null +++ b/src/View/Results/CustomExport/CustomExport.py @@ -0,0 +1,151 @@ +# CustomExport.py -- Pamhyr +# Copyright (C) 2023-2025 INRAE +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# -*- coding: utf-8 -*- + +from View.Tools.PamhyrWindow import PamhyrDialog + +from PyQt5.QtWidgets import ( + QRadioButton, QCheckBox, QVBoxLayout, QLabel, +) + +from View.Results.translate import ResultsTranslate + + +class CustomExportDialog(PamhyrDialog): + _pamhyr_ui = "CustomExportAdisDialog" + _pamhyr_name = "Custom Plot Selection" + + def __init__(self, parent=None): + trad = ResultsTranslate() + super(CustomExportDialog, self).__init__( + title=trad[self._pamhyr_name], + options=[], + trad=trad, + parent=parent + ) + + self._available_values_x = self._trad.get_dict("values_x") + self._available_values_y = self._trad.get_dict("values_y") + + self.setup_radio_buttons_x() + self.setup_radio_buttons_res() + self.setup_envelop_box() + self.setup_check_boxes() + + self.value = None + + def setup_radio_buttons_x(self): + self._radio = [] + layout = self.find(QVBoxLayout, "verticalLayout_x") + + for value in self._available_values_x: + btn = QRadioButton( + self._available_values_x[value], + parent=self + ) + self._radio.append((value, btn)) + layout.addWidget(btn) + + self._radio[0][1].setChecked(True) + layout.addStretch() + + def setup_radio_buttons_res(self): + self._radio2 = [] + layout = self.find(QVBoxLayout, "verticalLayout_pol") + label = self.find(QLabel, "label_3") + label.setText(self._trad["solver"]) + + for solver in self.parent._solvers: + btn = QRadioButton( + solver.name, + parent=self + ) + self._radio2.append((solver.name, btn)) + layout.addWidget(btn) + + self._radio2[0][1].setChecked(True) + if len(self.parent._results) == 1: + self._radio2[0][1].setEnabled(False) + label.setEnabled(False) + else: + self._radio2[0][1].setEnabled(True) + label.setEnabled(True) + + layout.addStretch() + + def setup_envelop_box(self): + layout = self.find(QVBoxLayout, "verticalLayout_x") + self._envelop = QCheckBox( + self._trad["envelop"], + parent=self + ) + layout.addWidget(self._envelop) + self._envelop.setChecked(True) + for r in self._radio: + r[1].clicked.connect(self.envelop_box_status) + + def envelop_box_status(self): + if self._radio[0][1].isChecked(): + if len(self.parent._results) > 1: + self._envelop.setEnabled(False) + else: + self._envelop.setEnabled(True) + else: + self._envelop.setEnabled(False) + + def setup_check_boxes(self): + self._check = [] + layout = self.find(QVBoxLayout, "verticalLayout_y") + + for value in self._available_values_y: + btn = QCheckBox( + self._available_values_y[value], + parent=self + ) + self._check.append((value, btn)) + layout.addWidget(btn) + + self._check[0][1].setChecked(True) + layout.addStretch() + + def accept(self): + x = next( + filter( + lambda r: r[1].isChecked(), + self._radio + ) + )[0] + + y = list( + map( + lambda b: b[0], + filter( + lambda b: b[1].isChecked(), + self._check + ) + ) + ) + + res = 0 + for i, b in enumerate(self._radio2): + if b[1].isChecked(): + res = i + break + + self.value = x, y, self._envelop.isChecked(), res + + super().accept() -- GitLab