diff --git a/gui/buffer_pane.go b/gui/buffer_pane.go index 63595e3..4f44e34 100644 --- a/gui/buffer_pane.go +++ b/gui/buffer_pane.go @@ -1,9 +1,12 @@ package gui import ( + "fmt" "github.com/felixangell/strife" ) +var metaPanelHeight = 32 + type BufferPane struct { BaseComponent Buff *Buffer @@ -16,6 +19,35 @@ func NewBufferPane(buff *Buffer) *BufferPane { } } +func (b *BufferPane) renderMetaPanel(ctx *strife.Renderer) { + pad := 10 + mpY := (b.y + b.h) - (metaPanelHeight) + + // panel backdrop + ctx.SetColor(strife.Black) + ctx.Rect(b.x, mpY, b.w, metaPanelHeight, strife.Fill) + + { + infoLine := fmt.Sprintf("Line %d, Column %d", b.Buff.curs.y, b.Buff.curs.x) + ctx.SetColor(strife.White) + _, strHeight := ctx.String(infoLine, b.x+(pad/2), mpY+(pad/2)) + metaPanelHeight = strHeight + pad + } + + // resize to match new height if any + b.Buff.Resize(b.w, b.h-metaPanelHeight) +} + +func (b *BufferPane) Resize(w, h int) { + b.BaseComponent.Resize(w, h) + b.Buff.Resize(w, h) +} + +func (b *BufferPane) SetPosition(x, y int) { + b.BaseComponent.SetPosition(x, y) + b.Buff.SetPosition(x, y) +} + func (b *BufferPane) OnUpdate() bool { b.Buff.processInput(nil) return b.Buff.OnUpdate() @@ -23,4 +55,5 @@ func (b *BufferPane) OnUpdate() bool { func (b *BufferPane) OnRender(ctx *strife.Renderer) { b.Buff.OnRender(ctx) + b.renderMetaPanel(ctx) } diff --git a/gui/view.go b/gui/view.go index f22c282..8db10a1 100644 --- a/gui/view.go +++ b/gui/view.go @@ -189,8 +189,8 @@ func (n *View) AddBuffer() *Buffer { // translate all the buffers accordingly. for i, buffPane := range n.buffers { - buffPane.Buff.Resize(bufferWidth, n.h) - buffPane.Buff.SetPosition(bufferWidth*i, 0) + buffPane.Resize(bufferWidth, n.h) + buffPane.SetPosition(bufferWidth*i, 0) } return c