mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
add keymap, handle wrapper for common keybindings
This commit is contained in:
parent
b3cdb33efc
commit
38599bbd19
34
grid.go
34
grid.go
@ -44,21 +44,19 @@ func ExpandView(c *Container) {
|
|||||||
|
|
||||||
ex.Align()
|
ex.Align()
|
||||||
ui.Render(ex)
|
ui.Render(ex)
|
||||||
ui.Handle("/sys/kbd/<up>", func(ui.Event) { ex.Up() })
|
|
||||||
ui.Handle("/sys/kbd/<down>", func(ui.Event) { ex.Down() })
|
HandleKeys("up", ex.Up)
|
||||||
ui.Handle("/timer/1s", func(ui.Event) {
|
HandleKeys("down", ex.Down)
|
||||||
ui.Render(ex)
|
ui.Handle("/sys/kbd/", func(ui.Event) { ui.StopLoop() })
|
||||||
})
|
|
||||||
|
ui.Handle("/timer/1s", func(ui.Event) { ui.Render(ex) })
|
||||||
ui.Handle("/sys/wnd/resize", func(e ui.Event) {
|
ui.Handle("/sys/wnd/resize", func(e ui.Event) {
|
||||||
ex.SetWidth(ui.TermWidth())
|
ex.SetWidth(ui.TermWidth())
|
||||||
ex.Align()
|
ex.Align()
|
||||||
log.Infof("resize: width=%v max-rows=%v", ex.Width, cGrid.MaxRows())
|
log.Infof("resize: width=%v max-rows=%v", ex.Width, cGrid.MaxRows())
|
||||||
})
|
})
|
||||||
ui.Handle("/sys/kbd/", func(ui.Event) {
|
|
||||||
ui.StopLoop()
|
|
||||||
})
|
|
||||||
ui.Loop()
|
|
||||||
|
|
||||||
|
ui.Loop()
|
||||||
c.SetUpdater(c.Widgets)
|
c.SetUpdater(c.Widgets)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,16 +77,18 @@ func Display() bool {
|
|||||||
cursor.RefreshContainers()
|
cursor.RefreshContainers()
|
||||||
RedrawRows(true)
|
RedrawRows(true)
|
||||||
|
|
||||||
ui.Handle("/sys/kbd/<up>", func(ui.Event) { cursor.Up() })
|
HandleKeys("up", cursor.Up)
|
||||||
ui.Handle("/sys/kbd/<down>", func(ui.Event) { cursor.Down() })
|
HandleKeys("down", cursor.Down)
|
||||||
|
HandleKeys("exit", ui.StopLoop)
|
||||||
|
HandleKeys("help", func() {
|
||||||
|
menu = HelpMenu
|
||||||
|
ui.StopLoop()
|
||||||
|
})
|
||||||
|
|
||||||
ui.Handle("/sys/kbd/<enter>", func(ui.Event) {
|
ui.Handle("/sys/kbd/<enter>", func(ui.Event) {
|
||||||
expand = true
|
expand = true
|
||||||
ui.StopLoop()
|
ui.StopLoop()
|
||||||
})
|
})
|
||||||
|
|
||||||
ui.Handle("/sys/kbd/q", func(ui.Event) { ui.StopLoop() })
|
|
||||||
ui.Handle("/sys/kbd/C-c", func(ui.Event) { ui.StopLoop() })
|
|
||||||
|
|
||||||
ui.Handle("/sys/kbd/a", func(ui.Event) {
|
ui.Handle("/sys/kbd/a", func(ui.Event) {
|
||||||
config.Toggle("allContainers")
|
config.Toggle("allContainers")
|
||||||
RefreshDisplay()
|
RefreshDisplay()
|
||||||
@ -100,10 +100,6 @@ func Display() bool {
|
|||||||
menu = FilterMenu
|
menu = FilterMenu
|
||||||
ui.StopLoop()
|
ui.StopLoop()
|
||||||
})
|
})
|
||||||
ui.Handle("/sys/kbd/h", func(ui.Event) {
|
|
||||||
menu = HelpMenu
|
|
||||||
ui.StopLoop()
|
|
||||||
})
|
|
||||||
ui.Handle("/sys/kbd/H", func(ui.Event) {
|
ui.Handle("/sys/kbd/H", func(ui.Event) {
|
||||||
config.Toggle("enableHeader")
|
config.Toggle("enableHeader")
|
||||||
RedrawRows(true)
|
RedrawRows(true)
|
||||||
|
32
keys.go
Normal file
32
keys.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
ui "github.com/gizak/termui"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Common action keybindings
|
||||||
|
var keyMap = map[string][]string{
|
||||||
|
"up": []string{
|
||||||
|
"/sys/kbd/<up>",
|
||||||
|
"/sys/kbd/k",
|
||||||
|
},
|
||||||
|
"down": []string{
|
||||||
|
"/sys/kbd/<down>",
|
||||||
|
"/sys/kbd/j",
|
||||||
|
},
|
||||||
|
"exit": []string{
|
||||||
|
"/sys/kbd/q",
|
||||||
|
"/sys/kbd/C-c",
|
||||||
|
},
|
||||||
|
"help": []string{
|
||||||
|
"/sys/kbd/h",
|
||||||
|
"/sys/kbd/?",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply a common handler function to all given keys
|
||||||
|
func HandleKeys(i string, f func()) {
|
||||||
|
for _, k := range keyMap[i] {
|
||||||
|
ui.Handle(k, func(ui.Event) { f() })
|
||||||
|
}
|
||||||
|
}
|
8
menus.go
8
menus.go
@ -81,11 +81,15 @@ func SortMenu() {
|
|||||||
// set cursor position to current sort field
|
// set cursor position to current sort field
|
||||||
m.SetCursor(config.GetVal("sortField"))
|
m.SetCursor(config.GetVal("sortField"))
|
||||||
|
|
||||||
ui.Render(m)
|
HandleKeys("up", m.Up)
|
||||||
m.NavigationHandlers()
|
HandleKeys("down", m.Down)
|
||||||
|
HandleKeys("exit", ui.StopLoop)
|
||||||
|
|
||||||
ui.Handle("/sys/kbd/<enter>", func(ui.Event) {
|
ui.Handle("/sys/kbd/<enter>", func(ui.Event) {
|
||||||
config.Update("sortField", m.SelectedItem().Val)
|
config.Update("sortField", m.SelectedItem().Val)
|
||||||
ui.StopLoop()
|
ui.StopLoop()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ui.Render(m)
|
||||||
ui.Loop()
|
ui.Loop()
|
||||||
}
|
}
|
||||||
|
@ -100,27 +100,20 @@ func (m *Menu) Buffer() ui.Buffer {
|
|||||||
return buf
|
return buf
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Menu) Up(ui.Event) {
|
func (m *Menu) Up() {
|
||||||
if m.cursorPos > 0 {
|
if m.cursorPos > 0 {
|
||||||
m.cursorPos--
|
m.cursorPos--
|
||||||
ui.Render(m)
|
ui.Render(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Menu) Down(ui.Event) {
|
func (m *Menu) Down() {
|
||||||
if m.cursorPos < (len(m.items) - 1) {
|
if m.cursorPos < (len(m.items) - 1) {
|
||||||
m.cursorPos++
|
m.cursorPos++
|
||||||
ui.Render(m)
|
ui.Render(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup some default handlers for menu navigation
|
|
||||||
func (m *Menu) NavigationHandlers() {
|
|
||||||
ui.Handle("/sys/kbd/<up>", m.Up)
|
|
||||||
ui.Handle("/sys/kbd/<down>", m.Down)
|
|
||||||
ui.Handle("/sys/kbd/q", func(ui.Event) { ui.StopLoop() })
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set width and height based on menu items
|
// Set width and height based on menu items
|
||||||
func (m *Menu) calcSize() {
|
func (m *Menu) calcSize() {
|
||||||
m.Width = 7 // minimum width
|
m.Width = 7 // minimum width
|
||||||
|
Loading…
x
Reference in New Issue
Block a user