| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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
- if removedIdx < 0 || removedIdx >= len(m.BM.Buffers) {
- return
- }
- ws, ok := m.LM.Workspaces[m.LM.ActiveIdx]
- if !ok || !ws.RootContainer.ContainsBufferIdx(removedIdx) {
- return
- }
- 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
- }
|