Menu tweaks

Spinner?
This commit is contained in:
2025-09-08 21:18:22 -05:00
parent 31161d7b99
commit 10bdd958d4
3 changed files with 178 additions and 16 deletions

View File

@@ -86,7 +86,41 @@ func (w *Menu) Init(id string, style tcell.Style) {
func (w *Menu) Id() string { return w.id }
func (w *Menu) HandleResize(ev *tcell.EventResize) {
w.w, w.h = ev.Size()
// TODO: Trickle-down HandleResize
switch w.menuType {
case MenuTypeH:
w.handleResizeH(ev)
case MenuTypeV:
w.handleResizeV(ev)
}
}
func (w *Menu) handleResizeH(_ *tcell.EventResize) {
x := 0
for i := range w.items {
lblW := len(w.items[i].Label())
c := Coord{X: lblW + 2, Y: 1}
if w.items[i].Expanded() {
c.X, c.Y = w.items[i].WantW(), w.items[i].WantH()
}
w.items[i].HandleResize(c.ResizeEvent())
// TODO: Make sure we don't overflow the passed Event
w.items[i].SetPos(Coord{X: lblW + 2, Y: 0})
x += lblW + 2
}
}
func (w *Menu) handleResizeV(_ *tcell.EventResize) {
y := 0
for i := range w.items {
c := Coord{X: 0, Y: y}
if w.items[i].Expanded() {
c.X, c.Y = w.items[i].WantW(), w.items[i].WantH()
}
w.items[i].HandleResize(c.ResizeEvent())
// TODO: Make sure we don't overflow the passed Event
w.items[i].SetPos(Coord{X: 0, Y: y})
y++
}
}
func (w *Menu) SetKeyMap(km KeyMap) { w.keyMap = km }
@@ -163,7 +197,7 @@ func (w *Menu) drawVMenu(screen tcell.Screen) {
st := w.style
if w.active {
st = w.style.Reverse(true)
wh.TitledBorderFilled(x-1, y, x+w.WantW(), y+w.WantH(), w.label, wh.BRD_CSIMPLE, w.style, screen)
wh.BorderFilled(x-1, y+1, x+w.WantW(), y+1+w.WantH(), wh.BRD_CSIMPLE, w.style, screen)
}
wh.DrawText(w.x, w.y, w.label, st, screen)
if w.expanded || (w.active && !w.manualExpand) {