diff --git a/src/OptimaLab35/utils/utility.py b/src/OptimaLab35/utils/utility.py index d7673f5..1db2060 100644 --- a/src/OptimaLab35/utils/utility.py +++ b/src/OptimaLab35/utils/utility.py @@ -2,8 +2,12 @@ import yaml import os class Utilities: - def __init__(self): - pass + def __init__(self, app_folder_path): + self.folder_path = app_folder_path + self._ensure_program_folder_exists() + self.exif_path = os.path.expanduser(f"{app_folder_path}/exif.yaml") + self.settings_path = os.path.expanduser(f"{app_folder_path}/settings.yaml") + self._prepear_exif_config() def read_yaml(self, yaml_file): try: @@ -12,29 +16,38 @@ class Utilities: return data except (FileNotFoundError, PermissionError) as e: print(f"Error loading settings file: {e}") - return + return None def write_yaml(self, yaml_file, data): try: with open(yaml_file, "w") as file: yaml.dump(data, file) + return True except PermissionError as e: print(f"Error saving setings: {e}") + return False - def program_configs(self): + def _prepear_exif_config(self): """Prepear folder for config and generate default exif if non aviable""" - program_folder = self._ensure_program_folder_exists() - if not os.path.isfile(f"{program_folder}/exif.yaml"): - self._default_exif(f"{program_folder}/exif.yaml") + if not os.path.isfile(self.exif_path): + self.default_exif(self.exif_path) def _ensure_program_folder_exists(self): - program_folder = os.path.expanduser("~/.config/OptimaLab35") - if not os.path.exists(program_folder): - print("in not, make folder") - os.makedirs(program_folder) - return program_folder + if not os.path.exists(self.folder_path): + os.makedirs(self.folder_path) - def _default_exif(self, file): + def load_settings(self): + """Loads settings from file, or creates default settings if missing.""" + if os.path.exists(self.settings_path): + settings = self.read_yaml(self.settings_path) + return settings if settings else self._default_settings() + return self._default_settings() + + def save_settings(self, settings): + if not self.write_yaml(self.settings_path, settings): + print("Error writing file") + + def default_exif(self): """Makes a default exif file.""" print("Making default") def_exif = { @@ -78,7 +91,19 @@ class Utilities: "Scanner: NA" ] } - self.write_yaml(file, def_exif) + self.write_yaml(self.exif_path, def_exif) + + def _default_settings(self): + """Returns default settings and writes them if the settings file does not exist.""" + settings = { + "theme": { + "theme_pkg": False, + "use_custom_theme": False, + "mode": "Dark" + } + } + self.write_yaml(self.settings_path, settings) + return settings def append_number_to_name(self, base_name: str, current_image: int, total_images: int, invert: bool): """"Returns name, combination of base_name and ending number."""