From e1d3ad7a5529f2a744cfd68adb0e38575b5c1b29 Mon Sep 17 00:00:00 2001 From: Djalim Simaila Date: Wed, 10 May 2023 15:44:52 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20refactor(MainWindow.py):=20move?= =?UTF-8?q?=20connection=20of=20refresh=5Fadvanced=5Fmetrics=20button=20to?= =?UTF-8?q?=20its=20own=20method=20=F0=9F=94=A7=20refactor(MainWindow.py):?= =?UTF-8?q?=20rename=20process=5Fadvanced=5Fdata=20method=20to=20process?= =?UTF-8?q?=5Fadvanced=5Fmetrics=20to=20improve=20semantics=20=F0=9F=94=A7?= =?UTF-8?q?=20refactor(AdvancedDataWorker.py):=20add=20V=5Fscan=20paramete?= =?UTF-8?q?r=20to=20constructor=20to=20improve=20semantics=20=F0=9F=94=A7?= =?UTF-8?q?=20refactor(Settings.py):=20add=20conditional=20to=20set=20outp?= =?UTF-8?q?ut=5Ffile=5Fseparator=20to=20'\t'=20if=20'\\t'=20is=20entered?= =?UTF-8?q?=20The=20refresh=5Fadvanced=5Fmetrics=20button=20is=20now=20con?= =?UTF-8?q?nected=20to=20its=20own=20method=20to=20improve=20readability.?= =?UTF-8?q?=20The=20process=5Fadvanced=5Fdata=20method=20has=20been=20rena?= =?UTF-8?q?med=20to=20process=5Fadvanced=5Fmetrics=20to=20better=20reflect?= =?UTF-8?q?=20its=20purpose.=20The=20AdvancedDataWorker=20constructor=20no?= =?UTF-8?q?w=20takes=20a=20V=5Fscan=20parameter=20to=20improve=20semantics?= =?UTF-8?q?.=20The=20Settings=20class=20now=20has=20a=20conditional=20to?= =?UTF-8?q?=20set=20the=20output=5Ffile=5Fseparator=20to=20'\t'=20if=20'\\?= =?UTF-8?q?t'=20is=20entered=20to=20improve=20consistency.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/gui/pyqt/main_window/MainWindow.py | 35 ++++++++++++++----- .../main_window/Workers/AdvancedDataWorker.py | 5 +-- utils/gui/pyqt/settings/Settings.py | 8 ++++- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/utils/gui/pyqt/main_window/MainWindow.py b/utils/gui/pyqt/main_window/MainWindow.py index 43f4d06..90b9280 100644 --- a/utils/gui/pyqt/main_window/MainWindow.py +++ b/utils/gui/pyqt/main_window/MainWindow.py @@ -44,13 +44,14 @@ 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.export_advanced_metrics.clicked.connect(self.export_advanced_data) + self.refresh_morphological_indicators.clicked.connect(self.refresh_advanced_data) self.actionOuvrir_un_fichier.triggered.connect(self.select_file) self.actionSauvegarder_le_model_redress.triggered.connect(self.save_model) self.actionPr_f_rennces.triggered.connect(self.show_settings) self.actionQuitter.triggered.connect(self.close) self.actionQ_propos_de_ce_logiciel.triggered.connect(self.show_about) - self.export_advanced_metrics.clicked.connect(self.export_advanced_data) # add default layer combobox value and setup the listenerr when index change self.layer_ComboBox.addItems(['Aucune couche']) @@ -136,7 +137,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # # # # ############################################################################### - + def select_file(self): """ Open a file dialog to select the input file, @@ -291,13 +292,14 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # Start the thread self.processdiscrete_thread.start() - def process_advanced_data(self, discrete_data:dict): + def process_advanced_data(self, discrete_data:dict, refresh:bool = False): """ Start the analyse, create the thread and connect the signals. """ self.advanced_data_thread = QThread() self.advanced_data_worker = AdvancedDataWorker("AdvancedDataProcessWorker", - discrete_data) + discrete_data, + self.V_scan.value()) self.advanced_data_worker.moveToThread(self.advanced_data_thread) # Connect the signals # Start @@ -307,7 +309,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.advanced_data_worker.progress.connect(self.update_progress_bar) self.advanced_data_worker.processedData.connect(self.set_advanced_data) # Finished - self.advanced_data_worker.finished.connect(self.finish_analyse) + if not refresh: + self.advanced_data_worker.finished.connect(self.finish_analyse) self.advanced_data_worker.finished.connect(self.advanced_data_thread.quit) self.advanced_data_worker.finished.connect(self.advanced_data_worker.deleteLater) self.advanced_data_thread.finished.connect(self.advanced_data_thread.deleteLater) @@ -315,6 +318,12 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # Start the thread self.advanced_data_thread.start() + def refresh_advanced_data(self): + """ + Start the analyse, create the thread and connect the signals. + """ + self.process_advanced_data(self.discrete_data, True) + def set_obj(self,obj:ScannedObject): """ Persists the pre-processed obj @@ -347,11 +356,19 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.tortuosity.setValue(advanced_data["Tortuosité"]) self.volume.setValue(advanced_data["Volume en mm3"]) self.surface.setValue(advanced_data["Surface en mm2"]) - self.mean_r_mean.setValue(advanced_data["Moyenne des rayons moyens"]) - self.sigma_r_mean.setValue(advanced_data["Ecart-type des rayons moyens"]) - self.sigma_r_tot.setValue(advanced_data["Sigma r tot"]) + self.mean_r_mean.setValue(advanced_data["Moyenne des rayons moyens 〈R〉"]) + self.sigma_r_mean.setValue(advanced_data["Ecart-type des rayons moyens σ_〈R〉"]) + self.sigma_r_tot.setValue(advanced_data["σ_〈R〉^tot"]) self.MI_l.setValue(advanced_data["MI_l"]) self.MI_p.setValue(advanced_data["MI_p"]) + self.MI_mR.setValue(advanced_data["MI_mR"]) + self.MI_mH.setValue(advanced_data["MI_mH"]) + #self.MI_mR_in.setValue(advanced_data["MI_mR_in"]) + self.V_scan.setValue(advanced_data["V_scan"]) + self.R_V_scan.setValue(advanced_data["R_V_scan"]) + self.S_V_scan.setValue(advanced_data["S_V_scan"]) + self.R_h.setValue(advanced_data["Rayon hydraulique R_h"]) + self.HI.setValue(advanced_data["HI"]) def export_advanced_data(self): """ @@ -365,7 +382,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): "./", "Fichier texte (*.txt)") advanced_data = {key : [round(value,6),] for key,value in self.advanced_data.items()} - string_data = format_data(advanced_data,"\t") + string_data = format_data(advanced_data,SettingManager.get_instance().get_setting("output_file_separator")) save_output_file(file_path[0],string_data) def save_model(self): diff --git a/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py b/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py index a7c6654..993ebea 100644 --- a/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py +++ b/utils/gui/pyqt/main_window/Workers/AdvancedDataWorker.py @@ -21,9 +21,10 @@ class AdvancedDataWorker(Worker): """ processedData = pyqtSignal(dict) - def __init__(self,name:str, discrete_data:dict): + def __init__(self,name:str, discrete_data:dict, V_scan:float): super().__init__(name) self.discrete_data = discrete_data + self.V_scan = V_scan def run(self): @@ -40,7 +41,7 @@ class AdvancedDataWorker(Worker): - MI_p """ self.set_status("Calculating advanced data...") - advanced_data = get_advanced_data(self.discrete_data,self.update_progress) + advanced_data = get_advanced_data(self.discrete_data, self.V_scan, self.update_progress) self.processedData.emit(advanced_data) self.set_status("Done") self.finished.emit() \ No newline at end of file diff --git a/utils/gui/pyqt/settings/Settings.py b/utils/gui/pyqt/settings/Settings.py index 43c2421..9fcfe6c 100644 --- a/utils/gui/pyqt/settings/Settings.py +++ b/utils/gui/pyqt/settings/Settings.py @@ -39,10 +39,16 @@ class Settings(QtWidgets.QMainWindow,Ui_Settings): def accept(self): + """ + Accept the changes + """ 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()) + if self.separator.text() == '\\t': + settings.set_setting('output_file_separator', '\t') + else: + settings.set_setting('output_file_separator', self.separator.text()) settings.set_setting('pretiffy_output_file', self.prettify.isChecked()) \ No newline at end of file