The Sphinx documentation has been added to the project. This includes a Makefile, a make.bat file, and a conf.py file in the docs directory. The source directory contains the documentation files in reStructuredText format. The documentation includes an installation guide and an API reference. The utils package has been reorganized to be more modular and easier to document. The documentation can be built using the `make html` command in the docs directory.
🎉 feat(utils): add new modules and packages to the project
New modules and packages have been added to the project. The following packages have been added:
- utils.gui.pyqt.about
- utils.gui.pyqt.error_popup
- utils.gui.pyqt.main_window
- utils.gui.pyqt.settings
- utils.math
- utils.settings
The new packages contain modules that provide additional functionality to the project.
✨ feat(Settings.py, UI_Settings.py, settings.ui): add checkbox to enable/disable verticalisation of scanned objects
The changes add support for verticalising scanned objects before processing them. A new checkbox has been added to the settings UI to enable/disable this feature.
🔧 refactor(SettingManager.py): add default settings dictionary and refactor createInitialSettings method
✨ feat(SettingManager.py): add new settings to the config file if they are not present
The `default_settings` dictionary is added to the `SettingManager` class to store the default values for the settings. The `createInitialSettings` method is refactored to use the `default_settings` dictionary to set the initial values of the settings. If new settings are added to the `default_settings` dictionary, they are added to the config file if they are not already present. The `remove_changed` method is added to remove the `has_changed` flag.
✨ feat(input.py): add support for reading .xyz files and raise InvalidFileFormat exception if file format is not supported
🚸 chore(gui): add warning popup when trying to use Mesh3D graph with .xyz file
🚸 chore(gui): refactor MainWindow.check_input_file method to handle .xyz files
🚸 chore(gui): refactor PreProcessWorker to use ScannedObject.from_file method
🚸 chore(math): add check for faces in verticalise function to avoid errors when faces is None
The ScannedObject constructor now handles the case where faces is None. Support for reading .xyz files has been added, and an InvalidFileFormat exception is raised if the file format is not supported. A warning popup has been added to the MainWindow when trying to use the Mesh3D graph with a .xyz file. The MainWindow.check_input_file 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.
✨ feat(MainWindow.py): add functionality to export advanced data to a text file
🚀 feat(MainWindow.py): add button to export advanced data to a text file
🚀 feat(MainWindow.ui): update labels for Volume and Surface to include units
The keys in the dict returned by the get_advanced_data function were updated to be more descriptive. The export_advanced_data function was added to the MainWindow class to allow the user to export the advanced data to a text file. A button was added to the GUI to allow the user to export the advanced data. The labels for Volume and Surface were updated to include the units of measurement.
🎨 style(UI_MainWindow.py): rename tab_5 to parameters and tab_6 to values for better semantics
The names of the tabs have been changed to better reflect their contents. The tab previously named tab_5 is now named parameters, and the tab previously named tab_6 is now named values. This improves the readability and maintainability of the code.
🎨 style(UI_MainWindow.py): rename tab_6 to values and tab to graph_pane_1, tab_2 to graph_pane_2, tab_3 to graph_pane_3, and tab_4 to graph_pane_4 for better semantics
This commit only renames the tabs in the UI_MainWindow.py file to improve the semantics of the code. The tab_6 is renamed to values, and tab, tab_2, tab_3, and tab_4 are renamed to graph_pane_1, graph_pane_2, graph_pane_3, and graph_pane_4, respectively.
🔨 refactor(UI_MainWindow.py): update labels for volume and surface to include units
The labels for volume and surface have been updated to include the units of measurement in millimeters. The tab names for the settings and graph panes have also been updated to improve readability and consistency with the naming conventions.
🔨 refactor(AdvancedDataWorker.py): update keys in the dict returned by the function to be more explicit
🔨 refactor(position_manipulation.py): remove unnecessary computation of the center of gravity in the verticalise function
The keys in the dict returned by the AdvancedDataWorker function have been updated to be more explicit. The keys 'Volume' and 'Surface' have been updated to 'Volume en mm3' and 'Surface en mm2' respectively to indicate the units of measurement. In the position_manipulation.py file, the computation of the center of gravity in the verticalise function was unnecessary and has been removed to improve performance.
This commit adds a docstring to the run() method in the DiscreteDataWorker class. The docstring explains what the method does, what it calculates, and what it emits. It also mentions that the result is saved in a file located in the output_path. This improves the readability and maintainability of the code.
The name of the module has been changed to AdvancedDataWorker.py to better reflect its functionality. The description has been updated to include the extraction of morphological indicators. The parameters and instance variables have been updated to reflect the change in functionality. The run() method has been updated to include a description of the emitted signal and the keys of the dictionary that is emitted.
This commit renames the objpath parameter to obj_path and discretisation_value to delta_z for better readability and consistency with the naming conventions. The function run() has been updated to include a more detailed description of what it does.
🐛 fix(RawDataWorker.py): fix typo in theta key name in the output dict
✨ feat(RawDataWorker.py): save the result of the calculation in a file located in the output_path
The run method now has a docstring that explains what it does. The typo in the theta key name in the output dict has been fixed. The result of the calculation is now saved in a file located in the output_path. This improves the functionality of the RawDataWorker class.
🚀 feat(MainWindow.py): add support for calculating advanced data in a separate thread
🚀 feat(AdvancedDataWorker.py): add worker to calculate advanced data in a thread
The `get_advanced_data` function was added to calculate advanced data from the discrete data. The `process_advanced_data` function was added to the `MainWindow` class to start a thread to calculate the advanced data. The `AdvancedDataWorker` class was added to calculate the advanced data in a separate thread. This allows the application to be more responsive and not freeze while the advanced data is being calculated.
✨ feat(data_processing.py): remove deprecated get_discrete_vertices2 method and rename get_discrete_vertices3 to get_discrete_vertices. Simplify get_discrete_vertices method by removing the selection of the discretisation method from the settings and always using the Z0-Zi < DeltaZ method. This improves code readability and maintainability.
✨ feat(input.py): remove deprecated result_file_path and bruteforce_discretization_result attributes from ScannedObject class. Add old_delta, old_discrete, and old_discrete_type attributes to cache the results of the get_discrete_vertices method. This improves performance by avoiding unnecessary recomputations of the discretized vertices.
✨ feat(MainWindow.py): add support for selecting a layer to display discrete graphs for. Add two new graph types: "Coupe de la couche" and "Difference entre le rayon de chaque points
🔧 fix(ui): change tab index to display the correct tab on startup
✨ feat(ui): add label and combobox to select layer to display
🔧 fix(worker): add discretisation_value parameter to PreProcessWorker constructor
✨ feat(math): add get_true_teta_from_x_y, get_difference_from_mean_value, and get_distance_between_two_vertices functions
The UI fix changes the tab index to display the correct tab on startup. The new label and combobox allow the user to select the layer to display. The worker fix adds a discretisation_value parameter to the PreProcessWorker constructor. The new math functions are get_true_teta_from_x_y, get_difference_from_mean_value, and get_distance_between_two_vertices. These functions are useful for calculating teta, differences from mean values, and distances between vertices.