diff --git a/utils/gui/pyqt/main_window/MainWindow.py b/utils/gui/pyqt/main_window/MainWindow.py index f0f80048c080df7a3de8b95fc4fc8c5f7a376aec..299e946979aed84d75ea0dc816012377750bb68e 100644 --- a/utils/gui/pyqt/main_window/MainWindow.py +++ b/utils/gui/pyqt/main_window/MainWindow.py @@ -3,6 +3,7 @@ from PyQt5 import QtWidgets from PyQt5.QtCore import QThread from PyQt5.QtWidgets import QFileDialog, QWidget from utils.files.input import ScannedObject +from utils.gui.pyqt.settings.Settings import Settings from utils.settings.SettingManager import SettingManager from utils.graph2D.visplot_render import cross_section, render2D from utils.graph3D.visplot_render import render3D @@ -24,6 +25,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.input_file_choose_btn.clicked.connect(self.select_file) self.output_folder_choose_btn.clicked.connect(self.select_folder) self.show_graph_checkbox.stateChanged.connect(self.toggle_graphs) + self.actionPr_f_rennces.triggered.connect(self.show_settings) self.graphType = [ @@ -74,9 +76,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): for slot_nb,slot in enumerate(self.slots): slot[1] = SettingManager.get_instance().get_last_graph(slot_nb) - print(slot[1]) self.comboBoxes[slot_nb].setCurrentText(slot[1]) - + + self.settings_window = Settings() + self.threads = [] ############################################################################### @@ -293,3 +296,9 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): Set the status of the analyse """ self.status_text.setText(status) + + def show_settings(self): + """ + Show the settings window + """ + self.settings_window.show() \ No newline at end of file diff --git a/utils/gui/pyqt/settings/Settings.py b/utils/gui/pyqt/settings/Settings.py new file mode 100644 index 0000000000000000000000000000000000000000..0501f698d4c3b32c408cc66a01b00cfa82d072d0 --- /dev/null +++ b/utils/gui/pyqt/settings/Settings.py @@ -0,0 +1,40 @@ +import os +from PyQt5 import QtWidgets +from PyQt5.QtWidgets import QWidget +from utils.files.input import ScannedObject +from utils.gui.pyqt.settings.UI_Settings import Ui_Settings +from utils.settings.SettingManager import SettingManager + +class Settings(QtWidgets.QMainWindow,Ui_Settings): + + def __init__(self, parent=None): + super().__init__(parent) + # Retrieve the UI + self.setupUi(self) + # Setup buttons listeners + settings = SettingManager.get_instance() + self.discretisation_method.addItems(settings.get_setting('discretisation_methods')) + self.discretisation_method.setCurrentText(settings.get_setting('discretisation_method')) + self.raw_data_suffix.setText(settings.get_setting('raw_data_suffix')) + self.discrete_data_suffix.setText(settings.get_setting('discrete_data_suffix')) + self.extention.setText(settings.get_setting('output_file_extension')) + self.separator.setText(settings.get_setting('output_file_separator')) + self.prettify.setChecked(settings.get_setting('pretiffy_output_file')) + + #Connect to onchanged actions + self.discretisation_method.currentTextChanged.connect(self.accept) + self.raw_data_suffix.textChanged.connect(self.accept) + self.discrete_data_suffix.textChanged.connect(self.accept) + self.extention.textChanged.connect(self.accept) + self.separator.textChanged.connect(self.accept) + self.prettify.stateChanged.connect(self.accept) + + + def accept(self): + settings = SettingManager.get_instance() + settings.set_setting('discretisation_method', self.discretisation_method.currentText()) + settings.set_setting('raw_data_suffix', self.raw_data_suffix.text()) + settings.set_setting('discrete_data_suffix', self.discrete_data_suffix.text()) + settings.set_setting('output_file_extension', self.extention.text()) + settings.set_setting('output_file_separator', self.separator.text()) + settings.set_setting('pretiffy_output_file', self.prettify.isChecked()) \ No newline at end of file diff --git a/utils/gui/pyqt/settings/UI_Settings.py b/utils/gui/pyqt/settings/UI_Settings.py new file mode 100644 index 0000000000000000000000000000000000000000..4fb3a552bd3a528e3befaab84fbac9db85a1458f --- /dev/null +++ b/utils/gui/pyqt/settings/UI_Settings.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'settings.ui' +# +# Created by: PyQt5 UI code generator 5.15.9 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_Settings(object): + def setupUi(self, Settings): + Settings.setObjectName("Settings") + Settings.resize(712, 213) + self.centralwidget = QtWidgets.QWidget(Settings) + self.centralwidget.setObjectName("centralwidget") + self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) + self.gridLayout.setObjectName("gridLayout") + self.gridLayout_2 = QtWidgets.QGridLayout() + self.gridLayout_2.setObjectName("gridLayout_2") + self.discretisation_method_label = QtWidgets.QLabel(self.centralwidget) + self.discretisation_method_label.setObjectName("discretisation_method_label") + self.gridLayout_2.addWidget(self.discretisation_method_label, 0, 0, 1, 1) + self.discretisation_method = QtWidgets.QComboBox(self.centralwidget) + self.discretisation_method.setObjectName("discretisation_method") + self.gridLayout_2.addWidget(self.discretisation_method, 0, 1, 1, 1) + self.raw_data_suffix_label = QtWidgets.QLabel(self.centralwidget) + self.raw_data_suffix_label.setObjectName("raw_data_suffix_label") + self.gridLayout_2.addWidget(self.raw_data_suffix_label, 1, 0, 1, 1) + self.raw_data_suffix = QtWidgets.QLineEdit(self.centralwidget) + self.raw_data_suffix.setObjectName("raw_data_suffix") + self.gridLayout_2.addWidget(self.raw_data_suffix, 1, 1, 1, 1) + self.discrete_data_suffix_label = QtWidgets.QLabel(self.centralwidget) + self.discrete_data_suffix_label.setObjectName("discrete_data_suffix_label") + self.gridLayout_2.addWidget(self.discrete_data_suffix_label, 2, 0, 1, 1) + self.discrete_data_suffix = QtWidgets.QLineEdit(self.centralwidget) + self.discrete_data_suffix.setObjectName("discrete_data_suffix") + self.gridLayout_2.addWidget(self.discrete_data_suffix, 2, 1, 1, 1) + self.extention_label = QtWidgets.QLabel(self.centralwidget) + self.extention_label.setObjectName("extention_label") + self.gridLayout_2.addWidget(self.extention_label, 3, 0, 1, 1) + self.extention = QtWidgets.QLineEdit(self.centralwidget) + self.extention.setObjectName("extention") + self.gridLayout_2.addWidget(self.extention, 3, 1, 1, 1) + self.separator_label = QtWidgets.QLabel(self.centralwidget) + self.separator_label.setObjectName("separator_label") + self.gridLayout_2.addWidget(self.separator_label, 4, 0, 1, 1) + self.separator = QtWidgets.QLineEdit(self.centralwidget) + self.separator.setObjectName("separator") + self.gridLayout_2.addWidget(self.separator, 4, 1, 1, 1) + self.prettify_label = QtWidgets.QLabel(self.centralwidget) + self.prettify_label.setObjectName("prettify_label") + self.gridLayout_2.addWidget(self.prettify_label, 5, 0, 1, 1) + self.prettify = QtWidgets.QCheckBox(self.centralwidget) + self.prettify.setText("") + self.prettify.setObjectName("prettify") + self.gridLayout_2.addWidget(self.prettify, 5, 1, 1, 1) + self.gridLayout.addLayout(self.gridLayout_2, 0, 0, 1, 1) + Settings.setCentralWidget(self.centralwidget) + + self.retranslateUi(Settings) + QtCore.QMetaObject.connectSlotsByName(Settings) + + def retranslateUi(self, Settings): + _translate = QtCore.QCoreApplication.translate + Settings.setWindowTitle(_translate("Settings", "Préférences")) + self.discretisation_method_label.setText(_translate("Settings", "Methode de discretisation")) + self.raw_data_suffix_label.setText(_translate("Settings", "Suffixe des fichiers de données brutes")) + self.discrete_data_suffix_label.setText(_translate("Settings", "Suffixe des fichiers de données discretisées")) + self.extention_label.setText(_translate("Settings", "Extensions des fichiers de sorties")) + self.separator_label.setText(_translate("Settings", "Separateur de colone")) + self.prettify_label.setText(_translate("Settings", "Aligner les colones")) diff --git a/utils/gui/pyqt/settings/settings.ui b/utils/gui/pyqt/settings/settings.ui new file mode 100644 index 0000000000000000000000000000000000000000..488368d1a5857f23ff8070c82e4a213dc02b548a --- /dev/null +++ b/utils/gui/pyqt/settings/settings.ui @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Settings</class> + <widget class="QMainWindow" name="Settings"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>712</width> + <height>213</height> + </rect> + </property> + <property name="windowTitle"> + <string>Préférences</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="discretisation_method_label"> + <property name="text"> + <string>Methode de discretisation</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="discretisation_method"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="raw_data_suffix_label"> + <property name="text"> + <string>Suffixe des fichiers de données brutes</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="raw_data_suffix"/> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="discrete_data_suffix_label"> + <property name="text"> + <string>Suffixe des fichiers de données discretisées</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="discrete_data_suffix"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="extention_label"> + <property name="text"> + <string>Extensions des fichiers de sorties</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QLineEdit" name="extention"/> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="separator_label"> + <property name="text"> + <string>Separateur de colone</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QLineEdit" name="separator"/> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="prettify_label"> + <property name="text"> + <string>Aligner les colones</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QCheckBox" name="prettify"> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/utils/settings/SettingManager.py b/utils/settings/SettingManager.py index ae68c0357782411fa73ff0ec27d6453f181575e5..ac27298741dbde42e711e42f32a3b17373362aa9 100644 --- a/utils/settings/SettingManager.py +++ b/utils/settings/SettingManager.py @@ -34,6 +34,7 @@ class SettingManager: self.settings['repo'] = 'https://forgemia.inra.fr/scanner3d/analysemorphologique' self.settings['lastGraph'] = ["Aucun" for i in range(11)] self.settings['discretisation_method'] = 'Z0-Zi >= DeltaZ' # 'Z0-Zi < DeltaZ' + self.settings['discretisation_methods'] = ['Z0-Zi >= DeltaZ', 'Z0-Zi < DeltaZ'] self.settings['raw_data_suffix'] = '_delta_{delta_z}_analyse_brute' self.settings['discrete_data_suffix'] = '_delta_{delta_z}_analyse_rayon' self.settings['output_file_extension'] = '.txt'