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 , Djalim Simaila ' 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()