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