🔧 refactor(MainWindow.py): move connection of refresh_advanced_metrics button to its own method

🔧 refactor(MainWindow.py): rename process_advanced_data method to process_advanced_metrics to improve semantics
🔧 refactor(AdvancedDataWorker.py): add V_scan parameter to constructor to improve semantics
🔧 refactor(Settings.py): add conditional to set output_file_separator to '\t' if '\\t' is entered
The refresh_advanced_metrics button is now connected to its own method to improve readability. The process_advanced_data method has been renamed to process_advanced_metrics to better reflect its purpose. The AdvancedDataWorker constructor now takes a V_scan parameter to improve semantics. The Settings class now has a conditional to set the output_file_separator to '\t' if '\\t' is entered to improve consistency.
This commit is contained in:
Djalim Simaila 2023-05-10 15:44:52 +02:00
parent 033ecb96b2
commit e1d3ad7a55
3 changed files with 36 additions and 12 deletions

View File

@ -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):

View File

@ -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()

View File

@ -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())