From ff20488cebda834bb47478666d8d9be65942f778 Mon Sep 17 00:00:00 2001
From: Djalim Simaila <DjalimS.pro@outlook.fr>
Date: Thu, 27 Apr 2023 13:23:02 +0200
Subject: [PATCH] Added Setting to program + fixed one typo

---
 utils/data_processing/data_processing.py      |  8 ++++-
 utils/files/input.py                          |  2 +-
 utils/files/output.py                         | 14 +++++++--
 utils/gui/pyqt/main_window/MainWindow.py      | 30 ++++++++++++-------
 .../main_window/Workers/DiscreteDataWorker.py | 10 +++++--
 .../pyqt/main_window/Workers/RawDataWorker.py |  8 +++--
 utils/settings/SettingManager.py              |  2 +-
 7 files changed, 53 insertions(+), 21 deletions(-)

diff --git a/utils/data_processing/data_processing.py b/utils/data_processing/data_processing.py
index 8f6c009..5e16ee6 100644
--- a/utils/data_processing/data_processing.py
+++ b/utils/data_processing/data_processing.py
@@ -1,5 +1,6 @@
 from utils.math import data_extraction
 from utils.files.input import ScannedObject
+from utils.settings.SettingManager import SettingManager
 
 def progressbar_placeholder(percent:int):
     """
@@ -58,7 +59,12 @@ def get_discrete_data(obj:ScannedObject, ndigits:int, delta_z:float=1, update_pr
     data = {}
     for colone in colones:
         data[colone] = []
-    discrete_vertices = obj.get_discrete_vertices(delta_z)
+    if SettingManager.get_instance().get_setting("discretisation_method") == "Z0-Zi < DeltaZ":
+        get_discrete_vertices = obj.get_discrete_vertices
+    else:
+        get_discrete_vertices = obj.get_discrete_vertices2 
+
+    discrete_vertices = get_discrete_vertices(delta_z)
     progress = 0
     for discrete_values in discrete_vertices:
         x,y,z = data_extraction.get_x_y_z_mean(discrete_values)
diff --git a/utils/files/input.py b/utils/files/input.py
index b29c877..040f5f9 100644
--- a/utils/files/input.py
+++ b/utils/files/input.py
@@ -14,7 +14,7 @@ class ResultFileNotGiven(Exception):
     """
     Exception raised when no faces was given.
     """
-  
+
 class ScannedObject:
     """
     This class is used to manage the data of the 3D object.
diff --git a/utils/files/output.py b/utils/files/output.py
index 9f0ca90..b228d1c 100644
--- a/utils/files/output.py
+++ b/utils/files/output.py
@@ -2,6 +2,9 @@
 This module is used to manage the output files of the program.
 """
 
+from utils.settings.SettingManager import SettingManager
+
+
 def format_data(data:dict, separator:str, selected_columns:list = None) -> str:
     """
     Format the data to be saved in the output file.
@@ -24,15 +27,22 @@ def format_data(data:dict, separator:str, selected_columns:list = None) -> str:
          3   ;6   ;9
         '
     """
+    isPrettier = SettingManager.get_instance().get_setting('pretiffy_output_file')
     output = ''
     if selected_columns is None:
         selected_columns = list(data.keys())
     for column_name in selected_columns:
-        output += column_name.ljust(len(column_name) if len(column_name) > 8 else 9 )  + separator
+        if isPrettier:
+            output += column_name.ljust(len(column_name) if len(column_name) > 8 else 9 )  + separator
+        else:
+            output += column_name + separator
     output += '\n'
     for i in range(len(data[selected_columns[0]])):
         for column in selected_columns:
-            output += str(data[column][i]).ljust(len(column) if len(column) > 8 else 9 ) + separator
+            if isPrettier:
+                output += str(data[column][i]).ljust(len(column) if len(column) > 8 else 9 ) + separator
+            else:
+                output += str(data[column][i]) + separator
         output += '\n'
     return output
 
diff --git a/utils/gui/pyqt/main_window/MainWindow.py b/utils/gui/pyqt/main_window/MainWindow.py
index c987da5..f0f8004 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.settings.SettingManager import SettingManager
 from utils.graph2D.visplot_render import cross_section, render2D
 from utils.graph3D.visplot_render import render3D
 from utils.gui.pyqt.main_window.UI_MainWindow import Ui_MainWindow
@@ -58,18 +59,23 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
             cb.addItems(self.graphType)
 
         self.slots = [
-                    [self.slot0,None],
-                    [self.slot1,None],
-                    [self.slot2,None],
-                    [self.slot3,None],
-                    [self.slot4,None],
-                    [self.slot5,None],
-                    [self.slot6,None],
-                    [self.slot7,None],
-                    [self.slot8,None],
-                    [self.slot9,None],
-                    [self.slot10,None]
+                    [self.slot0,"Aucun"],
+                    [self.slot1,"Aucun"],
+                    [self.slot2,"Aucun"],
+                    [self.slot3,"Aucun"],
+                    [self.slot4,"Aucun"],
+                    [self.slot5,"Aucun"],
+                    [self.slot6,"Aucun"],
+                    [self.slot7,"Aucun"],
+                    [self.slot8,"Aucun"],
+                    [self.slot9,"Aucun"],
+                    [self.slot10,"Aucun"]
                     ]
+        
+        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.threads = []
 
@@ -127,8 +133,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
             self.output_folder_path.setPlainText("Invalid folder path")
             return
         
+        settings = SettingManager.get_instance()
         for count,_ in enumerate(self.slots):
             self.slots[count][1] = self.comboBoxes[count].currentText()
+            settings.set_last_graph(count,self.slots[count][1])
             
         self.clear_graphs()
         self.completed = 0
diff --git a/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py b/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py
index 39ef1ae..eed5594 100644
--- a/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py
+++ b/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py
@@ -3,6 +3,7 @@ from utils.files.input import ScannedObject
 from utils.files.output import save_output_file, format_data
 from utils.gui.pyqt.main_window.Workers.Worker import Worker
 from utils.data_processing.data_processing import get_discrete_data
+from utils.settings.SettingManager import SettingManager
 
 class DiscreteDataProcessWorker(Worker):
     """
@@ -28,14 +29,17 @@ class DiscreteDataProcessWorker(Worker):
         self.set_weight(100)
         self.set_status("Saving data...")
         self.update_progress(10)
-        save_output_file(f'{self.output_path}/{self.output_file_prefix}_delta_{self.delta_z}_analyse_rayon.txt',
+        suffix = SettingManager.get_instance().get_setting('discrete_data_suffix').replace('{delta_z}',str(self.delta_z))
+        extension = SettingManager.get_instance().get_setting('output_file_extension')
+        separator = SettingManager.get_instance().get_setting('output_file_separator')
+        save_output_file(f'{self.output_path}/{self.output_file_prefix}{suffix}{extension}',
                                     format_data(discrete_data,
-                                            '\t',
+                                            separator,
                                             ["X moy (en mm)",
                                             "Y moy (en mm)",
                                             "Z moy (en mm)",
                                             "Discretisation(en mm)",
                                             "Rayon moyen (en mm)",
-                                            "Rayon ecart type (en mm)"] ))
+                                            "Rayon ecart type (en mm)"]))
         self.set_status("Done !")
         self.finished.emit()
\ No newline at end of file
diff --git a/utils/gui/pyqt/main_window/Workers/RawDataWorker.py b/utils/gui/pyqt/main_window/Workers/RawDataWorker.py
index ecbb40a..76efa5a 100644
--- a/utils/gui/pyqt/main_window/Workers/RawDataWorker.py
+++ b/utils/gui/pyqt/main_window/Workers/RawDataWorker.py
@@ -3,6 +3,7 @@ from utils.files.input import ScannedObject
 from utils.files.output import save_output_file, format_data
 from utils.gui.pyqt.main_window.Workers.Worker import Worker
 from utils.data_processing.data_processing import get_raw_data
+from utils.settings.SettingManager import SettingManager
 
 class RawDataProcessWorker(Worker):
     """
@@ -26,9 +27,12 @@ class RawDataProcessWorker(Worker):
         self.processedData.emit(raw_data)
         self.set_weight(100)
         self.set_status("Saving data...")
-        save_output_file(f'{self.output_path}/{self.output_file_prefix}_delta_{self.delta_z}_analyse_brute.txt',
+        suffix = SettingManager.get_instance().get_setting('raw_data_suffix').replace('{delta_z}',str(self.delta_z))
+        extension = SettingManager.get_instance().get_setting('output_file_extension')
+        separator = SettingManager.get_instance().get_setting('output_file_separator')
+        save_output_file(f'{self.output_path}/{self.output_file_prefix}{suffix}{extension}',
                                     format_data(raw_data,
-                                                '\t',
+                                                separator,
                                                 ["X (en mm)",
                                                 "Y (en mm)",
                                                 "Z (en mm)",
diff --git a/utils/settings/SettingManager.py b/utils/settings/SettingManager.py
index 0b3c667..ae68c03 100644
--- a/utils/settings/SettingManager.py
+++ b/utils/settings/SettingManager.py
@@ -36,7 +36,7 @@ class SettingManager:
         self.settings['discretisation_method'] = '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_extention'] = '.txt'
+        self.settings['output_file_extension'] = '.txt'
         self.settings['output_file_separator'] = '\t'
         self.settings['pretiffy_output_file'] = True
         self.save()
-- 
GitLab