Первый выпуск SysDevCleaner
Анализ Windows и очистка кешей, мусора и остатков разработки. Ядро: - каталог правил: 228 правил путей (496 шаблонов) + 43 правила артефактов проектов — Windows, браузеры, кеши сборки, IDE, приложения, пакетные менеджеры; - рекурсивный поиск node_modules, target, build, __pycache__, .venv и т.п. с проверкой маркеров проекта, чтобы не ловить ложные срабатывания; - поиск крупных файлов и дубликатов (хеш по началу/середине/концу и полная сверка), инвентаризация установленных программ через реестр; - ограничение области сканирования по дискам; - рекомендации и текстовый отчёт. Безопасность: - четыре уровня риска, автоматически отмечается только «Безопасно»; - список защищённых путей проверяется и при выборе, и перед удалением; - для каталогов вроде %TEMP% удаляется содержимое, а не сам каталог; - удаление в Корзину по умолчанию, пробный запуск, журнал очисток. Интерфейс на Dear PyGui: - JetBrains Mono Nerd Font: кириллица и иконки в одном шрифте; - тёмная и светлая темы, адаптивная раскладка; - заголовок окна ставится через SetWindowTextW — Dear PyGui отдаёт его в ANSI-функцию как UTF-8 и портит кириллицу; - запуск всегда с правами администратора: манифест UAC в exe и самоперезапуск через ShellExecuteW при работе из исходников. Сборка в один exe через PyInstaller со вшитым шрифтом и значком. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
83
sysdevcleaner/gui/icons.py
Normal file
83
sysdevcleaner/gui/icons.py
Normal file
@@ -0,0 +1,83 @@
|
||||
"""Иконки Nerd Font (JetBrains Mono NF).
|
||||
|
||||
Nerd Font добавляет к обычному шрифту иконочные глифы в зонах частного
|
||||
использования Unicode. Мы берём только глифы из BMP (U+E000–U+F8FF):
|
||||
набор Material Design Icons в Nerd Font лежит выше U+FFFF, а Dear ImGui
|
||||
по умолчанию собран с 16-битным ``ImWchar`` и такие символы не покажет.
|
||||
|
||||
Используемые наборы:
|
||||
* Font Awesome 4 — U+F000…U+F2E0
|
||||
* Devicons — U+E700…U+E7C5
|
||||
* Codicons — U+EA60…U+EBEB
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from ..core.model import Category
|
||||
|
||||
# --- общие ---------------------------------------------------------------
|
||||
SEARCH = "" # лупа
|
||||
STOP = "" # стоп
|
||||
REFRESH = "" # обновить
|
||||
TRASH = "" # корзина
|
||||
BROOM = "" # магия/очистка
|
||||
SAVE = "" # дискета
|
||||
FOLDER_OPEN = "" # открытая папка
|
||||
FOLDER = "" # папка
|
||||
COPY = "" # копия
|
||||
FILTER = "" # фильтр
|
||||
GEAR = "" # шестерёнка
|
||||
INFO = "" # инфо
|
||||
WARNING = "" # треугольник с восклицательным знаком
|
||||
CHECK = "" # галочка
|
||||
CLOSE = "" # крестик
|
||||
LIGHTBULB = "" # лампочка — рекомендация
|
||||
BOLT = "" # молния — быстрое действие
|
||||
SHIELD = "" # щит — безопасность
|
||||
HISTORY = "" # история
|
||||
CHART = "" # столбики
|
||||
HDD = "" # диск
|
||||
LIST = "" # список
|
||||
PLUS = ""
|
||||
MINUS = ""
|
||||
UNDO = ""
|
||||
SUN = ""
|
||||
MOON = ""
|
||||
EXPAND = ""
|
||||
COLLAPSE = ""
|
||||
CHEVRON_RIGHT = ""
|
||||
CUBE = ""
|
||||
ARCHIVE = ""
|
||||
WRENCH = ""
|
||||
FILE_TEXT = ""
|
||||
GLOBE = ""
|
||||
GAMEPAD = ""
|
||||
WINDOWS = ""
|
||||
COGS = ""
|
||||
ELEPHANT = "" # архивный файл — «тяжёлые файлы»
|
||||
CLOCK = ""
|
||||
DATABASE = ""
|
||||
POWER = ""
|
||||
|
||||
# --- иконки категорий ----------------------------------------------------
|
||||
CATEGORY: dict[Category, str] = {
|
||||
Category.WINDOWS: WINDOWS,
|
||||
Category.BROWSERS: GLOBE,
|
||||
Category.DEV_CACHE: COGS,
|
||||
Category.DEV_PROJECT: CUBE,
|
||||
Category.APPS: GAMEPAD,
|
||||
Category.LOGS: FILE_TEXT,
|
||||
Category.PACKAGE_MANAGERS: ARCHIVE,
|
||||
Category.BIG_FILES: ELEPHANT,
|
||||
Category.DUPLICATES: COPY,
|
||||
Category.PROGRAMS: FOLDER,
|
||||
}
|
||||
|
||||
|
||||
def cat(category: Category) -> str:
|
||||
"""Иконка категории с отступом, готовая к подстановке в подпись."""
|
||||
return CATEGORY.get(category, LIST) + " "
|
||||
|
||||
|
||||
def btn(icon: str, label: str) -> str:
|
||||
"""Подпись кнопки: иконка, два пробела, текст."""
|
||||
return f"{icon} {label}"
|
||||
Reference in New Issue
Block a user