layout.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package editor
  2. import (
  3. "moose/internal/buffer"
  4. "slices"
  5. )
  6. func (m *Model) AddBuffer(newNode bool) {
  7. b := buffer.NewBuffer()
  8. idx := len(m.BM.Buffers)
  9. m.BM.Buffers = append(m.BM.Buffers, b)
  10. m.BM.CurrentIdx = idx
  11. m.LM.InsertBuffer(idx, newNode)
  12. }
  13. func (m *Model) AddBufferFromPath(path string, newNode bool) {
  14. b := buffer.NewBufferFromPath(path)
  15. idx := len(m.BM.Buffers)
  16. m.BM.Buffers = append(m.BM.Buffers, b)
  17. m.BM.CurrentIdx = idx
  18. m.LM.InsertBuffer(idx, newNode)
  19. }
  20. func (m *Model) CycleActiveBuffer(horisontal float32, vertical float32) {
  21. m.LM.CycleActiveBuffer(horisontal, vertical)
  22. bufIdx := m.LM.GetActiveBufferIdx()
  23. m.BM.CurrentIdx = bufIdx
  24. }
  25. func (m *Model) RemoveActiveBuffer() {
  26. if len(m.BM.Buffers) == 0 {
  27. m.BM.Buffers = []buffer.Buffer{buffer.NewBuffer()}
  28. m.BM.CurrentIdx = 0
  29. return
  30. }
  31. removedIdx := m.BM.CurrentIdx
  32. newActiveIdx := m.LM.RemoveActiveBufferAndReindex(removedIdx)
  33. m.BM.Buffers = slices.Delete(m.BM.Buffers, removedIdx, removedIdx+1)
  34. if len(m.BM.Buffers) == 0 {
  35. m.BM.Buffers = []buffer.Buffer{buffer.NewBuffer()}
  36. m.BM.CurrentIdx = 0
  37. return
  38. }
  39. if newActiveIdx < 0 || newActiveIdx >= len(m.BM.Buffers) {
  40. newActiveIdx = len(m.BM.Buffers) - 1
  41. }
  42. m.BM.CurrentIdx = newActiveIdx
  43. }