✨ feat(data_processing.py): add function to calculate morphological indicators from discrete data The variable name teta_diffs was changed to theta_diffs to improve semantics. A new function was added to calculate morphological indicators from discrete data. The function calculates Tortuosity, Volume, Surface, Mean radius, Standard deviation of radius, Sigma r tot, MI_l, and MI_p. 🔥 refactor(input.py): remove unused result_file_path parameter from ScannedObject constructor and from_xyz_file method ✨ feat(input.py): add encoding parameter to open method in from_obj_file and from_xyz_file methods The result_file_path parameter was not being used in the ScannedObject constructor and from_xyz_file method, so it was removed to simplify the code. The encoding parameter was added to the open method in the from_obj_file and from_xyz_file methods to ensure that the files are opened with the correct encoding. 🐛 fix(output.py): add utf-8 encoding when writing to output file ✨ feat(output.py): remove unused import and function argument, improve code readability The fix adds the utf-8 encoding when writing to the output file to avoid encoding issues. The feat removes the unused import and function argument to improve code readability. The function format_data now only takes the necessary arguments and the unused import is removed. 🐛 fix(main_window.py): fix typo in function name ✨ feat(main_window.py): add persistence to pre-processed data The fix corrects a typo in the function name get_true_theta_from_x_y. The feat adds persistence to the pre-processed data by storing the raw data, discrete data, and advanced data in the main window. This avoids re-computation of the data when switching between tabs. 🎨 style(MainWindow.ui): add export_advanced_metrics button to the UI 🎨 style(UI_MainWindow.py): add export_advanced_metrics button to the UI 🎨 style(ressources_rc.py): update the resource file 🐛 fix(data_extraction.py): fix typo in function name get_mean_teta to get_mean_theta The changes add a new button to the UI named "export_advanced_metrics" which allows the user to export variables. The resource file is updated to reflect the changes. The typo in the function name get_mean_teta is fixed to get_mean_theta.
57 lines
2.1 KiB
Python
57 lines
2.1 KiB
Python
"""
|
|
Created on Wed Apr 28 2023
|
|
@name: ErrorPopup.py
|
|
@desc: A class to show a popup with an error message
|
|
@auth: Djalim Simaila
|
|
@e-mail: djalim.simaila@inrae.fr
|
|
"""
|
|
from PyQt5.QtWidgets import QMessageBox
|
|
|
|
class ErrorPopup(object):
|
|
"""
|
|
A class to show a popup with an error message
|
|
|
|
:param error_text: The error message
|
|
:param details: The details of the error
|
|
:param button_label: The label of the button
|
|
:param button_callback: The callback of the button
|
|
|
|
:ivar error_text: The error message
|
|
:ivar details: The details of the error
|
|
:ivar button_label: The label of the button
|
|
:ivar button_callback: The callback of the button
|
|
|
|
:method show_popup: Show the popup
|
|
"""
|
|
|
|
def __init__(self,error_text,details = None,button_label = None,button_callback=None):
|
|
self.error_text = error_text
|
|
self.button_label = button_label
|
|
self.button_callback = button_callback
|
|
self.details = details
|
|
|
|
def show_popup(self):
|
|
"""
|
|
Show the error popup with the specified error message.
|
|
If a button label and a button callback are specified, the popup will
|
|
have a button with the specified label and the specified callback.
|
|
"""
|
|
msg = QMessageBox()
|
|
msg.setWindowTitle("Erreur")
|
|
msg.setText("Erreur: " + self.error_text)
|
|
msg.setIcon(QMessageBox.Critical)
|
|
|
|
if self.button_label is not None and self.button_callback is not None:
|
|
msg.setStandardButtons(QMessageBox.Cancel|QMessageBox.Retry)
|
|
msg.setDefaultButton(QMessageBox.Cancel)
|
|
msg.button(QMessageBox.Cancel).clicked.connect(msg.close)
|
|
msg.button(QMessageBox.Retry).setText(self.button_label)
|
|
msg.button(QMessageBox.Retry).clicked.connect(self.button_callback)
|
|
else:
|
|
msg.setStandardButtons(QMessageBox.Ok)
|
|
msg.setDefaultButton(QMessageBox.Ok)
|
|
msg.button(QMessageBox.Ok).clicked.connect(msg.close)
|
|
msg.setInformativeText(self.error_text)
|
|
if self.details is not None:
|
|
msg.setDetailedText(self.details)
|
|
msg.exec_() |