refactor(ui): вынести панель «Логи» (LogPanel) из монолита окна
Спеца 12.8-12.9: интерфейс + Nil в internal/ui/log_panel.go, Fyne-реализация в internal/ui/desktop/log_panel.go, окно использует контракт вместо logsLbl.
This commit is contained in:
@@ -157,6 +157,27 @@
|
||||
приложение работает headless (UI=nil). Реальное окно полноценно проверяется
|
||||
на машине с MinGW-w64/gcc (`go build -ldflags ...`), здесь — только typecheck.
|
||||
|
||||
### 12.8. Структура UI-кода: компоненты-виджеты (рефакторинг)
|
||||
|
||||
`internal/ui` (без Fyne) — контракты + Nil-реализации + юнит-тесты. Fyne-код —
|
||||
только в `internal/ui/desktop/*`, один файл — одна панель. `desktop/window.go`
|
||||
становится чистой компоновкой.
|
||||
|
||||
Каждый компонент:
|
||||
- **интерфейс** в `internal/ui/<panel>.go` (контракт для тестов/headless);
|
||||
- **Nil-реализация** в том же файле (headless/тесты);
|
||||
- **Fyne-реализация** в `internal/ui/desktop/<panel>.go`.
|
||||
|
||||
### 12.9. Контракт виджета «Логи» (LogPanel)
|
||||
|
||||
Панель «Логи» — поток системных логов (сырые строки из `events.LogLine`).
|
||||
|
||||
- `Append(text)` — добавить строку лога; при превышении лимита старые строки
|
||||
отбрасываются (буфер ограничен, не расти бесконечно).
|
||||
- Контейнер виджета — отдаётся окну для встраивания в таб «Логи» (Scroll).
|
||||
- Обновление содержимого — на потоке Fyne (внутри панели `fyne.Do`), не из
|
||||
горутины Hub.
|
||||
|
||||
---
|
||||
|
||||
## Открытые пункты (TODO)
|
||||
|
||||
Reference in New Issue
Block a user