model.go 1007 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package editor
  2. import (
  3. "moose/internal/buffer"
  4. "moose/internal/layout"
  5. "github.com/gdamore/tcell/v3"
  6. )
  7. type Model struct {
  8. Screen tcell.Screen
  9. Style tcell.Style
  10. Mode Mode
  11. BM buffer.BufferManager
  12. AM ActionManager
  13. LM layout.LayoutManager
  14. ShouldQuit bool
  15. DebugLog string
  16. }
  17. func NewModel(screen tcell.Screen, style tcell.Style) Model {
  18. model := Model{
  19. Screen: screen,
  20. Style: style,
  21. Mode: ModeNormal,
  22. BM: buffer.BufferManager{
  23. Buffers: []buffer.Buffer{buffer.NewBuffer(), buffer.NewBuffer()},
  24. CurrentIdx: 1,
  25. PaletteBuffer: buffer.NewBuffer(),
  26. },
  27. AM: DefaultActionManager(),
  28. LM: layout.NewLayoutManager(),
  29. ShouldQuit: false,
  30. }
  31. return model
  32. }
  33. func (m *Model) CurrentActionSet() []Action {
  34. switch m.Mode {
  35. case ModeNormal: return m.AM.Normal
  36. case ModeWrite: return m.AM.Insert
  37. case ModePalette: return m.AM.Palette
  38. }
  39. return nil
  40. }
  41. func (m *Model) Quit() {
  42. m.ShouldQuit = true
  43. }