|
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 |