package editor import ( "moose/internal/buffer" "slices" ) func (m *Model) AddBuffer(newNode bool) { b := buffer.NewBuffer() idx := len(m.BM.Buffers) m.BM.Buffers = append(m.BM.Buffers, b) m.BM.CurrentIdx = idx m.LM.InsertBuffer(idx, newNode) } func (m *Model) AddBufferFromPath(path string, newNode bool) { b := buffer.NewBufferFromPath(path) idx := len(m.BM.Buffers) m.BM.Buffers = append(m.BM.Buffers, b) m.BM.CurrentIdx = idx m.LM.InsertBuffer(idx, newNode) } func (m *Model) CycleActiveBuffer(horisontal float32, vertical float32) { m.LM.CycleActiveBuffer(horisontal, vertical) bufIdx := m.LM.GetActiveBufferIdx() m.BM.CurrentIdx = bufIdx } func (m *Model) RemoveActiveBuffer() { if len(m.BM.Buffers) == 0 { m.BM.Buffers = []buffer.Buffer{buffer.NewBuffer()} m.BM.CurrentIdx = 0 return } removedIdx := m.BM.CurrentIdx newActiveIdx := m.LM.RemoveActiveBufferAndReindex(removedIdx) m.BM.Buffers = slices.Delete(m.BM.Buffers, removedIdx, removedIdx+1) if len(m.BM.Buffers) == 0 { m.BM.Buffers = []buffer.Buffer{buffer.NewBuffer()} m.BM.CurrentIdx = 0 return } if newActiveIdx < 0 || newActiveIdx >= len(m.BM.Buffers) { newActiveIdx = len(m.BM.Buffers) - 1 } m.BM.CurrentIdx = newActiveIdx }