1
0

model.go 894 B

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