Menu tweaks
Spinner?
This commit is contained in:
38
wdgt_menu.go
38
wdgt_menu.go
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user