summaryrefslogtreecommitdiffstats
path: root/widgets/help.go
blob: 6c0f592cea20b7eb929d5be4866857cb9da61d53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package widgets

import (
	"strings"

	ui "github.com/cjbassi/gotop/termui"
)

const KEYBINDS = `
Quit: 'q' or 'Ctrl-c'

Navigation:
  - '<up>'/'<down>' and 'j'/'k': up and down
  - 'C-d' and 'C-u': up and down half a page
  - 'C-f' and 'C-b': up and down a full page
  - 'gg' and 'G': jump to top and bottom

Process Sorting:
  - 'c': CPU
  - 'm': Mem
  - 'p': PID

'<tab>': toggle process grouping
'dd': kill the selected process or process group
`

type HelpMenu struct {
	*ui.Block
}

func NewHelpMenu() *HelpMenu {
	block := ui.NewBlock()
	block.X = 48                                   // width - 1
	block.Y = 15                                   // height - 1
	block.XOffset = (ui.Body.Width - block.X) / 2  // X coordinate
	block.YOffset = (ui.Body.Height - block.Y) / 2 // Y coordinate
	return &HelpMenu{block}
}

func (hm *HelpMenu) Buffer() *ui.Buffer {
	buf := hm.Block.Buffer()

	for y, line := range strings.Split(KEYBINDS, "\n") {
		for x, char := range line {
			buf.SetCell(x+1, y, ui.NewCell(char, ui.Color(7), hm.Bg))
		}
	}

	return buf
}