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