win_base.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // package win_base -- базовое окно терминального клиента
  2. package win_base
  3. import (
  4. "fmt"
  5. tea "github.com/charmbracelet/bubbletea"
  6. "wartank/pkg/alias"
  7. "wartank/pkg/types"
  8. )
  9. // WinBase -- базовое окно терминального клиента
  10. type WinBase struct {
  11. desk types.IDesktop
  12. model tea.Model // Модель для обработки
  13. name alias.AWinName // Имя экрана
  14. }
  15. // NewWinBase -- возвращает новое базовое окно терминального клиента
  16. func NewWinBase(desk types.IDesktop, name alias.AWinName) (*WinBase, error) {
  17. if desk == nil {
  18. return nil, fmt.Errorf("NewWinBase(): IDesktop==nil")
  19. }
  20. if name == "" {
  21. return nil, fmt.Errorf("NewWinBase(): name is empty")
  22. }
  23. sf := &WinBase{
  24. desk: desk,
  25. name: name,
  26. }
  27. _ = types.IWinBase(sf)
  28. return sf, nil
  29. }
  30. // Desk -- возвращает терминальный клиент
  31. func (sf *WinBase) Desk() types.IDesktop {
  32. return sf.desk
  33. }
  34. // Name -- возвращает собственное имя
  35. func (sf *WinBase) Name() alias.AWinName {
  36. return sf.name
  37. }
  38. func (sf *WinBase) Init() tea.Cmd {
  39. // Просто вернуть `nil`, т.е. никаких команд
  40. return nil
  41. }