Skip to content

Commit 7d77d9e

Browse files
committed
Raw GUI (doesnt work)
1 parent 147acc3 commit 7d77d9e

25 files changed

+3950
-0
lines changed

INTEGRATION_GUIDE.md

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
# Руководство по интеграции GUI с main.py
2+
3+
## 🔧 Изменения в main.py
4+
5+
Для поддержки конфигурации из GUI в `main.py` были внесены следующие изменения:
6+
7+
### 1. Добавлены импорты
8+
9+
```python
10+
import json
11+
import sys
12+
```
13+
14+
### 2. Добавлены функции для работы с GUI конфигурацией
15+
16+
```python
17+
def load_gui_config() -> dict:
18+
"""Загружает конфигурацию из GUI override файла."""
19+
gui_settings_path = os.getenv("GUI_SETTINGS")
20+
if gui_settings_path and os.path.exists(gui_settings_path):
21+
try:
22+
with open(gui_settings_path, 'r', encoding='utf-8') as f:
23+
return json.load(f)
24+
except Exception as e:
25+
logger.warning(f"Ошибка загрузки GUI конфигурации: {e}")
26+
return {}
27+
28+
29+
def apply_gui_config(config: dict) -> None:
30+
"""Применяет конфигурацию из GUI к глобальным переменным."""
31+
if not config:
32+
return
33+
34+
# Обновляем переменные в модуле settings
35+
import src.config.settings as settings_module
36+
37+
for key, value in config.items():
38+
if hasattr(settings_module, key):
39+
setattr(settings_module, key, value)
40+
logger.debug(f"Применена настройка из GUI: {key} = {value}")
41+
```
42+
43+
### 3. Интеграция в функцию main()
44+
45+
```python
46+
async def main():
47+
"""Основной процесс обработки видео."""
48+
start_time = datetime.now()
49+
print_header("запуск улучшения видео")
50+
51+
try:
52+
# Загружаем конфигурацию из GUI
53+
gui_config = load_gui_config()
54+
if gui_config:
55+
apply_gui_config(gui_config)
56+
logger.info("Загружена конфигурация из GUI")
57+
58+
# Остальной код остается без изменений...
59+
```
60+
61+
## 📁 Структура файлов
62+
63+
После интеграции структура проекта должна выглядеть так:
64+
65+
```
66+
anime_enhancement/
67+
├── main.py # Обновлен для поддержки GUI
68+
├── gui/ # Новый модуль GUI
69+
│ ├── app.py # Точка входа GUI
70+
│ ├── main_window.py # Главное окно
71+
│ ├── settings_panel.py # Панель настроек
72+
│ ├── nn_panel.py # Панель нейронных сетей
73+
│ ├── logs_panel.py # Панель логов
74+
│ ├── process_controller.py # Контроллер процессов
75+
│ ├── config.py # Менеджер конфигурации
76+
│ ├── styles.qss # Стили интерфейса
77+
│ └── utils/
78+
│ └── logger.py # Настройка логирования
79+
├── tests/ # Тесты GUI
80+
│ ├── test_gui_config.py
81+
│ └── test_gui_process_controller.py
82+
├── requirements-gui.txt # Зависимости для GUI
83+
├── config.sample.json # Пример конфигурации
84+
├── run_gui.bat # Запуск на Windows
85+
├── run_gui.sh # Запуск на Linux/macOS
86+
├── README_GUI.md # Документация GUI
87+
└── INTEGRATION_GUIDE.md # Это руководство
88+
```
89+
90+
## 🚀 Запуск GUI
91+
92+
### Windows
93+
```cmd
94+
run_gui.bat
95+
```
96+
97+
### Linux/macOS
98+
```bash
99+
./run_gui.sh
100+
```
101+
102+
### Ручной запуск
103+
```bash
104+
# Установка зависимостей
105+
pip install -r requirements-gui.txt
106+
107+
# Запуск GUI
108+
python gui/app.py
109+
```
110+
111+
## ⚙️ Принцип работы
112+
113+
1. **GUI загружает настройки** из `src/config/settings.py`
114+
2. **Пользователь редактирует** настройки через интерфейс
115+
3. **GUI сохраняет изменения** в `settings_gui_override.json`
116+
4. **При запуске main.py** через GUI:
117+
- Устанавливается переменная окружения `GUI_SETTINGS`
118+
- `main.py` загружает конфигурацию из JSON файла
119+
- Применяет настройки к модулю `settings`
120+
5. **Обработка видео** происходит с новыми настройками
121+
122+
## 🔄 Откат изменений
123+
124+
Если нужно откатить изменения:
125+
126+
1. **Удалите файл** `settings_gui_override.json`
127+
2. **Перезапустите GUI** - настройки вернутся к умолчанию
128+
3. **Или используйте кнопку** "Reset to Defaults" в GUI
129+
130+
## 🧪 Тестирование
131+
132+
Запуск тестов:
133+
134+
```bash
135+
# Все тесты GUI
136+
python -m pytest tests/ -v
137+
138+
# Тесты конфигурации
139+
python -m pytest tests/test_gui_config.py -v
140+
141+
# Тесты контроллера процессов
142+
python -m pytest tests/test_gui_process_controller.py -v
143+
```
144+
145+
## 🐛 Устранение неполадок
146+
147+
### GUI не запускается
148+
- Проверьте установку PySide6: `pip list | grep PySide6`
149+
- Убедитесь, что запускаете из корневой директории проекта
150+
- Проверьте наличие файлов `main.py` и `src/config/settings.py`
151+
152+
### Процесс не запускается
153+
- Проверьте путь к входному видео
154+
- Убедитесь, что папки для выходных файлов существуют
155+
- Проверьте свободное место на диске (минимум 10 ГБ)
156+
157+
### Ошибки конфигурации
158+
- Удалите `settings_gui_override.json` для сброса к умолчанию
159+
- Проверьте права доступа к файлам
160+
- Убедитесь, что `settings.py` не поврежден
161+
162+
## 📝 Логирование
163+
164+
Логи GUI сохраняются в папке `logs/` с именем файла `gui_YYYYMMDD.log`.
165+
166+
## 🔧 Кастомизация
167+
168+
### Добавление новых настроек
169+
170+
1. **Добавьте поле** в `settings_panel.py` или `nn_panel.py`
171+
2. **Обновите методы** `get_settings()` и `load_settings()`
172+
3. **Добавьте переменную** в `src/config/settings.py`
173+
4. **Обновите** `config.sample.json`
174+
175+
### Изменение стилей
176+
177+
Отредактируйте файл `gui/styles.qss` для изменения внешнего вида.
178+
179+
### Добавление новых панелей
180+
181+
1. **Создайте новый файл** в папке `gui/`
182+
2. **Наследуйтесь** от `QWidget`
183+
3. **Добавьте панель** в `main_window.py`
184+
4. **Обновите навигацию** в sidebar
185+
186+
## 📋 TODO для дальнейшей разработки
187+
188+
- [ ] Добавить поддержку профилей настроек
189+
- [ ] Реализовать предварительный просмотр кадров
190+
- [ ] Добавить мониторинг GPU (pynvml)
191+
- [ ] Создать мастер настройки для новых пользователей
192+
- [ ] Добавить поддержку пакетной обработки
193+
- [ ] Реализовать плагинную архитектуру для новых нейронных сетей
194+
- [ ] Добавить поддержку темной темы
195+
- [ ] Создать систему уведомлений
196+
- [ ] Добавить поддержку горячих клавиш
197+
198+
## 🤝 Поддержка
199+
200+
При возникновении проблем:
201+
1. Проверьте логи в папке `logs/`
202+
2. Убедитесь, что все зависимости установлены
203+
3. Проверьте совместимость версий Python и PySide6
204+
4. Создайте issue в репозитории проекта
205+
206+
---
207+
208+
**Примечание**: Этот GUI является MVP (Minimum Viable Product) и может требовать доработки для полной интеграции с вашим проектом.

0 commit comments

Comments
 (0)