The application has been refactored. Functions have been moved to separate libraries. Many different functions have been added. Performance is still poor

This commit is contained in:
2025-02-16 21:57:01 +03:00
parent a140b7d8a0
commit cb5329ddb7
46 changed files with 5316 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import os
import logging
from typing import Dict, Any
class Settings:
"""Класс для работы с настройками приложения."""
def __init__(self):
self.settings_dir = "Settings"
self.settings_file = os.path.join(self.settings_dir, "settings.json")
self._settings = self._get_default_settings()
# Создаем директорию для настроек, если её нет
os.makedirs(self.settings_dir, exist_ok=True)
def _get_default_settings(self) -> Dict[str, Any]:
"""Возвращает настройки по умолчанию."""
return {
"port": None, # Порт для подключения
"baudrate": 9600, # Скорость передачи данных
"config_file": None, # Файл конфигурации
"login": None, # Логин для подключения
"password": None, # Пароль для подключения
"timeout": 10, # Таймаут подключения
"copy_mode": "line", # Режим копирования
"block_size": 15, # Размер блока команд
"prompt": ">", # Используется для определения приглашения
}
def load(self) -> None:
"""Загружает настройки из файла."""
if not os.path.exists(self.settings_file):
self.save()
return
try:
with open(self.settings_file, "r", encoding="utf-8") as f:
loaded_settings = json.load(f)
# Проверяем наличие всех необходимых параметров
default_settings = self._get_default_settings()
for key, value in default_settings.items():
if key not in loaded_settings:
loaded_settings[key] = value
self._settings = loaded_settings
self.save() # Сохраняем обновленные настройки
except Exception as e:
logging.error(f"Ошибка при загрузке настроек: {e}", exc_info=True)
self._settings = self._get_default_settings()
self.save()
def save(self) -> None:
"""Сохраняет настройки в файл."""
try:
with open(self.settings_file, "w", encoding="utf-8") as f:
json.dump(self._settings, f, indent=4, ensure_ascii=False)
logging.info("Настройки успешно сохранены")
except Exception as e:
logging.error(f"Ошибка при сохранении настроек: {e}", exc_info=True)
def get(self, key: str, default: Any = None) -> Any:
"""Возвращает значение настройки по ключу."""
return self._settings.get(key, default)
def set(self, key: str, value: Any) -> None:
"""Устанавливает значение настройки."""
self._settings[key] = value
def update(self, settings: Dict[str, Any]) -> None:
"""Обновляет несколько настроек одновременно."""
self._settings.update(settings)
self.save()