feat: handle setting

This commit is contained in:
Mr Finchum 2025-02-09 17:52:01 +01:00
parent d6e53aec53
commit b7e65f1dce

View file

@ -2,8 +2,12 @@ import yaml
import os import os
class Utilities: class Utilities:
def __init__(self): def __init__(self, app_folder_path):
pass 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): def read_yaml(self, yaml_file):
try: try:
@ -12,29 +16,38 @@ class Utilities:
return data return data
except (FileNotFoundError, PermissionError) as e: except (FileNotFoundError, PermissionError) as e:
print(f"Error loading settings file: {e}") print(f"Error loading settings file: {e}")
return return None
def write_yaml(self, yaml_file, data): def write_yaml(self, yaml_file, data):
try: try:
with open(yaml_file, "w") as file: with open(yaml_file, "w") as file:
yaml.dump(data, file) yaml.dump(data, file)
return True
except PermissionError as e: except PermissionError as e:
print(f"Error saving setings: {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""" """Prepear folder for config and generate default exif if non aviable"""
program_folder = self._ensure_program_folder_exists() if not os.path.isfile(self.exif_path):
if not os.path.isfile(f"{program_folder}/exif.yaml"): self.default_exif(self.exif_path)
self._default_exif(f"{program_folder}/exif.yaml")
def _ensure_program_folder_exists(self): def _ensure_program_folder_exists(self):
program_folder = os.path.expanduser("~/.config/OptimaLab35") if not os.path.exists(self.folder_path):
if not os.path.exists(program_folder): os.makedirs(self.folder_path)
print("in not, make folder")
os.makedirs(program_folder)
return program_folder
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.""" """Makes a default exif file."""
print("Making default") print("Making default")
def_exif = { def_exif = {
@ -78,7 +91,19 @@ class Utilities:
"Scanner: NA" "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): 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.""" """"Returns name, combination of base_name and ending number."""