From 18960e8e33040cc10a8b17d8e940156b4634e3df Mon Sep 17 00:00:00 2001 From: Djalim Simaila <DjalimS.pro@outlook.fr> Date: Thu, 27 Apr 2023 13:10:37 +0200 Subject: [PATCH] added setting manager --- .gitignore | 1 + requirement.txt | 3 +- utils/settings/SettingManager.py | 59 ++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 utils/settings/SettingManager.py diff --git a/.gitignore b/.gitignore index df6a042..9557404 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 239f882..ce6e2a3 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 0000000..0b3c667 --- /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 -- GitLab