From 5a546b5e9cb13a70e3802119758f9660f9e639c5 Mon Sep 17 00:00:00 2001 From: Djalim Simaila <DjalimS.pro@outlook.fr> Date: Thu, 27 Apr 2023 14:03:45 +0200 Subject: [PATCH] Finished settings --- utils/gui/pyqt/main_window/MainWindow.py | 13 +++- utils/gui/pyqt/settings/Settings.py | 40 +++++++++++ utils/gui/pyqt/settings/UI_Settings.py | 75 +++++++++++++++++++ utils/gui/pyqt/settings/settings.ui | 91 ++++++++++++++++++++++++ utils/settings/SettingManager.py | 1 + 5 files changed, 218 insertions(+), 2 deletions(-) create mode 100644 utils/gui/pyqt/settings/Settings.py create mode 100644 utils/gui/pyqt/settings/UI_Settings.py create mode 100644 utils/gui/pyqt/settings/settings.ui diff --git a/utils/gui/pyqt/main_window/MainWindow.py b/utils/gui/pyqt/main_window/MainWindow.py index f0f8004..299e946 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 0000000..0501f69 --- /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 0000000..4fb3a55 --- /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 0000000..488368d --- /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 ae68c03..ac27298 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' -- GitLab