34a40ae759
Десктопная галерея и менеджер изображений ComfyUI (PyQt6 + SQLite): - мультипапочный мониторинг (watchdog), грид миниатюр, drag-and-drop - теги, избранное, рейтинг, поиск по промтам - парсер метаданных ComfyUI (PNG/WebP/JPEG), редактор workflow/prompt JSON - перевод выделенного текста через контекстное меню (настраиваемые языки) - отправка промта в очередь ComfyUI с внедрением правок и нового seed - полноэкранный просмотр, локализация ru/en, тёмная тема Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
"""
|
||
Загрузка и сохранение пользовательских настроек (settings.json рядом с проектом).
|
||
"""
|
||
|
||
import json
|
||
import logging
|
||
from typing import Dict, Any
|
||
|
||
from comfy_studio.core.config import SETTINGS_PATH, DEFAULT_COMFYUI_URL
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
DEFAULT_SETTINGS: Dict[str, Any] = {
|
||
"comfyui_url": DEFAULT_COMFYUI_URL,
|
||
"tracked_paths": [],
|
||
"language": "ru", # "ru" | "en"
|
||
"thumbnail_size": 130,
|
||
"translate_languages": ["ru", "en"], # языки в контекстном меню перевода
|
||
}
|
||
|
||
|
||
def load_settings() -> Dict[str, Any]:
|
||
"""Загружает настройки, недостающие ключи добираются из DEFAULT_SETTINGS."""
|
||
if not SETTINGS_PATH.exists():
|
||
save_settings(DEFAULT_SETTINGS)
|
||
return dict(DEFAULT_SETTINGS)
|
||
try:
|
||
with open(SETTINGS_PATH, "r", encoding="utf-8") as f:
|
||
data = json.load(f)
|
||
for k, v in DEFAULT_SETTINGS.items():
|
||
data.setdefault(k, v)
|
||
return data
|
||
except Exception as e:
|
||
logger.error(f"Ошибка чтения настроек: {e}")
|
||
return dict(DEFAULT_SETTINGS)
|
||
|
||
|
||
def save_settings(settings: Dict[str, Any]) -> bool:
|
||
try:
|
||
with open(SETTINGS_PATH, "w", encoding="utf-8") as f:
|
||
json.dump(settings, f, indent=4, ensure_ascii=False)
|
||
return True
|
||
except Exception as e:
|
||
logger.error(f"Ошибка сохранения настроек: {e}")
|
||
return False
|