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