diff --git a/.gitignore b/.gitignore index df6a042edc325672a96a87c19a3c7e81b638ea7d..9557404f665af8420c551a8a38c5c6491091a972 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,7 @@ coverage.xml .hypothesis/ .pytest_cache/ cover/ +config.yml # Translations *.mo diff --git a/requirement.txt b/requirement.txt index 239f8828713c028c29fcf705bbfebfa77d49d119..ce6e2a33d96911eb8f9897ad814da96b9f259dda 100644 --- a/requirement.txt +++ b/requirement.txt @@ -1,3 +1,4 @@ vispy==0.12.2 PyQt5==5.15.9 -numpy==1.24.2 \ No newline at end of file +numpy==1.24.2 +PyYAML==6.0 \ No newline at end of file diff --git a/utils/settings/SettingManager.py b/utils/settings/SettingManager.py new file mode 100644 index 0000000000000000000000000000000000000000..0b3c6674c7099b52a592a22113175b58750816a2 --- /dev/null +++ b/utils/settings/SettingManager.py @@ -0,0 +1,59 @@ +from yaml import load, dump +try: + from yaml import CLoader as Loader, CDumper as Dumper +except ImportError: + from yaml import Loader, Dumper + +class SettingManager: + instance = None + + def __init__(self): + try: + with open('config.yml', 'r') as f: + self.settings = load(f.read(), Loader=Loader) + except FileNotFoundError: + self.settings = {} + self.createInitialSettings() + + @staticmethod + def get_instance(): + if SettingManager.instance is None: + SettingManager.instance = SettingManager() + return SettingManager.instance + + + def save(self): + with open('config.yml', 'w') as f: + f.write(dump(self.settings, Dumper=Dumper)) + + def createInitialSettings(self): + self.settings['version'] = "1.0.0" + self.settings['name'] = 'Analyse Morphologique' + self.settings['authors'] = 'Alexis Doghmane <alexis@doghmane.fr>, Djalim Simaila <djalim.simaila@inrae.fr>' + self.settings['description'] = 'Analyse Morphologique' + self.settings['repo'] = 'https://forgemia.inra.fr/scanner3d/analysemorphologique' + self.settings['lastGraph'] = ["Aucun" for i in range(11)] + self.settings['discretisation_method'] = 'Z0-Zi >= DeltaZ' # 'Z0-Zi < DeltaZ' + self.settings['raw_data_suffix'] = '_delta_{delta_z}_analyse_brute' + self.settings['discrete_data_suffix'] = '_delta_{delta_z}_analyse_rayon' + self.settings['output_file_extention'] = '.txt' + self.settings['output_file_separator'] = '\t' + self.settings['pretiffy_output_file'] = True + self.save() + + def get_last_graph(self, graph_number): + return self.settings['lastGraph'][graph_number] + + def set_last_graph(self, graph_number, graph_name): + self.settings['lastGraph'][graph_number] = graph_name + self.save() + + def get_setting(self, setting_name): + return self.settings[setting_name] + + def get_settings(self): + return self.settings + + def set_setting(self, setting_name, setting_value): + self.settings[setting_name] = setting_value + self.save() \ No newline at end of file