import json import os from settings.defaults import default from settings.check_file_name import is_path_exists_or_creatable_portable class settings_io: def __init__(self): self.default = default self.settings = self.default self.prompt_iteration_raw = {} def get_defaults(self): return self.default def update_settings_with_defaults(self): self.settings['model_list'] = self.default['model_list'] self.settings['model_test_dimensions_list'] = self.default['model_test_dimensions_list'] self.write_settings(self.settings) def check_missing_seettings(self): missing = 0 for key in self.default.keys(): if key not in self.settings: self.settings[key] = self.default[key] missing += 1 if type(self.settings[key]) == dict: for subkey in self.default[key]: if subkey not in self.settings[key]: self.settings[key][subkey] = self.default[key][subkey] missing += 1 if missing != 0: self.write_settings(self.settings) self.update_settings_with_defaults() def load_settings(self): if os.path.isfile('pq/settings/settings.dat'): f = open('pq/settings/settings.dat','r') self.settings = json.loads(f.read()) f.close() self.check_missing_seettings() return self.settings def write_settings(self, settings): f = open('pq/settings/settings.dat','w') f.write(json.dumps(settings)) f.close() def load_preset_list(self): filelist = os.listdir('pq/settings/presets') out_list = [] for file in filelist: if file != 'presets_go_here.txt': out_list.append(file.replace('_preset.dat', '')) if len(out_list) > 0: return out_list else: return None def load_preset(self, name): if os.path.isfile('pq/settings/settings.dat'): f = open(f'pq/settings/presets/{name}_preset.dat','r') self.settings = json.loads(f.read()) f.close() self.check_missing_seettings() return self.settings def save_preset(self, name, settings): filename = f'pq/settings/presets/{name}_preset.dat' check = is_path_exists_or_creatable_portable(filename) if check: f = open(filename,'w') f.write(json.dumps(settings)) f.close() return 'OK' else: return 'Filename not OK' def load_prompt_data(self): if os.path.isfile('pq/settings/data.json'): f = open('pq/settings/data.json','r') self.prompt_iteration_raw = json.loads(f.read()) f.close() return self.prompt_iteration_raw