ctop/menus.go

88 lines
1.8 KiB
Go
Raw Normal View History

2017-01-05 00:13:17 +01:00
package main
import (
2017-02-07 04:33:09 +01:00
"github.com/bcicen/ctop/config"
2017-01-05 00:13:17 +01:00
"github.com/bcicen/ctop/widgets"
2017-02-15 08:40:16 +01:00
"github.com/bcicen/ctop/widgets/menu"
2017-01-05 00:13:17 +01:00
ui "github.com/gizak/termui"
)
2017-02-15 08:40:16 +01:00
var helpDialog = []menu.Item{
menu.Item{"[a] - toggle display of all containers", ""},
menu.Item{"[f] - filter displayed containers", ""},
2017-02-15 08:40:16 +01:00
menu.Item{"[h] - open this help dialog", ""},
menu.Item{"[H] - toggle cTop header", ""},
2017-02-15 08:40:16 +01:00
menu.Item{"[s] - select container sort field", ""},
menu.Item{"[r] - reverse container sort order", ""},
menu.Item{"[q] - exit ctop", ""},
2017-01-05 00:13:17 +01:00
}
2017-01-09 00:07:58 +01:00
func HelpMenu() {
ui.Clear()
2017-02-18 04:37:00 +01:00
ui.DefaultEvtStream.ResetHandlers()
defer ui.DefaultEvtStream.ResetHandlers()
2017-02-15 08:40:16 +01:00
m := menu.NewMenu()
2017-01-05 00:13:17 +01:00
m.BorderLabel = "Help"
2017-02-15 08:40:16 +01:00
m.AddItems(helpDialog...)
2017-01-05 00:13:17 +01:00
ui.Render(m)
ui.Handle("/sys/kbd/", func(ui.Event) {
ui.StopLoop()
})
ui.Loop()
}
2017-01-21 19:15:29 +01:00
func FilterMenu() {
ui.DefaultEvtStream.ResetHandlers()
2017-02-18 04:37:00 +01:00
defer ui.DefaultEvtStream.ResetHandlers()
2017-01-21 19:15:29 +01:00
i := widgets.NewInput()
i.BorderLabel = "Filter"
i.SetY(ui.TermHeight() - i.Height)
2017-01-21 19:15:29 +01:00
ui.Render(i)
// refresh container rows on input
stream := i.Stream()
go func() {
for s := range stream {
config.Update("filterStr", s)
cursor.RefreshContainers()
RedrawRows()
ui.Render(i)
}
}()
2017-01-21 19:15:29 +01:00
i.InputHandlers()
ui.Handle("/sys/kbd/<enter>", func(ui.Event) {
2017-02-07 04:33:09 +01:00
config.Update("filterStr", i.Data)
2017-01-21 19:15:29 +01:00
ui.StopLoop()
})
ui.Loop()
}
2017-01-09 00:07:58 +01:00
func SortMenu() {
ui.Clear()
2017-02-18 04:37:00 +01:00
ui.DefaultEvtStream.ResetHandlers()
defer ui.DefaultEvtStream.ResetHandlers()
2017-02-15 08:40:16 +01:00
m := menu.NewMenu()
2017-01-05 00:13:17 +01:00
m.Selectable = true
m.SortItems = true
2017-01-05 00:13:17 +01:00
m.BorderLabel = "Sort Field"
2017-02-15 08:40:16 +01:00
for _, field := range SortFields() {
m.AddItems(menu.Item{field, ""})
}
// set cursor position to current sort field
2017-02-19 04:54:24 +01:00
m.SetCursor(config.GetVal("sortField"))
2017-01-05 00:13:17 +01:00
ui.Render(m)
m.NavigationHandlers()
ui.Handle("/sys/kbd/<enter>", func(ui.Event) {
2017-02-15 08:40:16 +01:00
config.Update("sortField", m.SelectedItem().Val)
2017-01-05 00:13:17 +01:00
ui.StopLoop()
})
ui.Loop()
}