Воркед
This commit is contained in:
1 parent
ac32c55ab9
commit
ee94d8e529
1138 files changed
+55771
-77901
No files matched your search
+40
-35
@@ -5,20 +5,26 @@ import requests
|
||||
import os
|
||||
|
||||
class IconType(Enum):
|
||||
# Навигация
|
||||
"""Типы иконок"""
|
||||
HOME = auto()
|
||||
MODELS = auto()
|
||||
SETTINGS = auto()
|
||||
GENERATE = auto()
|
||||
ADD = auto()
|
||||
DELETE = auto()
|
||||
REFRESH = auto()
|
||||
SAVE = auto()
|
||||
CLOSE = auto()
|
||||
SUCCESS = auto()
|
||||
|
||||
# Навигация
|
||||
MENU = "menu"
|
||||
BACK = "arrow-back"
|
||||
FORWARD = "arrow-forward"
|
||||
|
||||
# Действия
|
||||
ADD = "add"
|
||||
REMOVE = "remove"
|
||||
EDIT = "edit"
|
||||
DELETE = "delete"
|
||||
SAVE = "save"
|
||||
REFRESH = "refresh"
|
||||
SEARCH = "search"
|
||||
|
||||
# Медиа
|
||||
@@ -30,13 +36,11 @@ class IconType(Enum):
|
||||
STOP = "stop"
|
||||
|
||||
# Статусы
|
||||
SUCCESS = "check-circle"
|
||||
WARNING = "warning"
|
||||
ERROR = "error"
|
||||
INFO = "info"
|
||||
|
||||
# Интерфейс
|
||||
CLOSE = "close"
|
||||
MINIMIZE = "minimize"
|
||||
MAXIMIZE = "maximize"
|
||||
RESTORE = "restore"
|
||||
@@ -46,48 +50,49 @@ class IconType(Enum):
|
||||
DARK_MODE = "dark-mode"
|
||||
|
||||
class IconManager:
|
||||
"""Менеджер иконок"""
|
||||
_instance = None
|
||||
_icons = {}
|
||||
|
||||
def __new__(cls):
|
||||
if cls._instance is None:
|
||||
cls._instance = super(IconManager, cls).__new__(cls)
|
||||
cls._instance._download_icons()
|
||||
return cls._instance
|
||||
def __init__(self):
|
||||
self.icons = {}
|
||||
self.load_icons()
|
||||
|
||||
@classmethod
|
||||
def get_instance(cls):
|
||||
"""Получить экземпляр менеджера иконок (Singleton)"""
|
||||
if cls._instance is None:
|
||||
cls._instance = cls()
|
||||
cls._instance = IconManager()
|
||||
return cls._instance
|
||||
|
||||
def _download_icons(self):
|
||||
"""Загрузка иконок из интернета"""
|
||||
def load_icons(self):
|
||||
"""Загрузка иконок"""
|
||||
icons_dir = Path("resources/icons")
|
||||
icons_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
icons = {
|
||||
IconType.HOME: "https://api.iconify.design/mdi/home.svg",
|
||||
IconType.IMAGE: "https://api.iconify.design/mdi/image.svg",
|
||||
IconType.SETTINGS: "https://api.iconify.design/mdi/cog.svg"
|
||||
# Сопоставление типов иконок с файлами
|
||||
icon_files = {
|
||||
IconType.HOME: "home.svg",
|
||||
IconType.MODELS: "models.svg",
|
||||
IconType.SETTINGS: "settings.svg",
|
||||
IconType.GENERATE: "generate.svg",
|
||||
IconType.ADD: "add.svg",
|
||||
IconType.DELETE: "delete.svg",
|
||||
IconType.REFRESH: "refresh.svg",
|
||||
IconType.SAVE: "save.svg",
|
||||
IconType.CLOSE: "close.svg",
|
||||
IconType.SUCCESS: "success.svg",
|
||||
}
|
||||
|
||||
for icon_type, url in icons.items():
|
||||
icon_path = icons_dir / f"{icon_type.name.lower()}.svg"
|
||||
if not icon_path.exists():
|
||||
try:
|
||||
response = requests.get(url)
|
||||
response.raise_for_status()
|
||||
with open(icon_path, "wb") as f:
|
||||
f.write(response.content)
|
||||
except Exception as e:
|
||||
print(f"Ошибка при загрузке иконки {icon_type}: {e}")
|
||||
|
||||
self._icons[icon_type] = QIcon(str(icon_path))
|
||||
# Загружаем иконки
|
||||
for icon_type, filename in icon_files.items():
|
||||
icon_path = icons_dir / filename
|
||||
if icon_path.exists():
|
||||
self.icons[icon_type] = QIcon(str(icon_path))
|
||||
else:
|
||||
print(f"Иконка не найдена: {icon_path}")
|
||||
|
||||
def get_icon(self, icon_type: IconType) -> QIcon:
|
||||
"""Получение иконки по типу"""
|
||||
return self._icons.get(icon_type, QIcon())
|
||||
"""Получить иконку по типу"""
|
||||
return self.icons.get(icon_type, QIcon())
|
||||
|
||||
def get_themed_icon(self, icon_type: IconType, theme: str) -> QIcon:
|
||||
"""Получение иконки с учетом темы"""
|
||||
|
||||
Reference in new issue
Block a user