help menu auto layout

Former-commit-id: 2ad0bbde584308b918b02c5c2ee27b822b920dcb [formerly 2ad0bbde584308b918b02c5c2ee27b822b920dcb [formerly 668e795f5c0785074c6c3cee938b7eae507cbf90 [formerly cdabeb6ed1a9d1a88e0c25b23cf989ba276d8bcf]]]
Former-commit-id: b5c379d08eb1d808b3277ae5500ffe92d291272b
Former-commit-id: e727422d34f3f6619cfbc3f2578d7a35fb68fea0 [formerly e07550dba29f67367d868e4d7d0ecc8789152e7c]
Former-commit-id: 7fdbe0600a18c2904c1e14f00ed11797f9f5fb1c
pull/15/head
Miguel Mota 6 years ago
parent 062cc01b68
commit 23f96673c7

@ -2,7 +2,9 @@ package cointop
import (
"fmt"
"sort"
"github.com/miguelmota/cointop/pkg/color"
"github.com/miguelmota/cointop/pkg/pad"
)
@ -15,22 +17,46 @@ func (ct *Cointop) toggleHelp() error {
}
func (ct *Cointop) updateHelp() {
str := fmt.Sprintf(" Help %s\n\n", pad.Left("[c]lose", ct.maxtablewidth-11, " "))
i := 0
for k, v := range ct.shortcutkeys {
nl := " "
i = i + 1
if i%3 == 0 {
i = 0
nl = "\n"
keys := make([]string, 0, len(ct.shortcutkeys))
for k := range ct.shortcutkeys {
keys = append(keys, k)
}
sort.Strings(keys)
header := color.GreenBg(fmt.Sprintf(" Help %s\n\n", pad.Left("[q] close help ", ct.maxtablewidth-10, " ")))
cnt := 0
h := ct.viewHeight("help")
percol := h - 3
cols := make([][]string, percol)
for i := range cols {
cols[i] = make([]string, 20)
}
for _, k := range keys {
v := ct.shortcutkeys[k]
if cnt%percol == 0 {
cnt = 0
}
str = fmt.Sprintf("%s%10s %-40s%s", str, fmt.Sprintf("[%s]", k), v, nl)
item := fmt.Sprintf("%10s %-40s", k, color.Yellow(v))
cols[cnt] = append(cols[cnt], item)
cnt = cnt + 1
}
var body string
for i := 0; i < percol; i++ {
var row string
for j := 0; j < len(cols[i]); j++ {
item := cols[i][j]
row = fmt.Sprintf("%s%s", row, item)
}
body = fmt.Sprintf("%s%s\n", body, row)
}
content := fmt.Sprintf("%s%s", header, body)
ct.update(func() {
ct.helpview.Clear()
ct.helpview.Frame = true
fmt.Fprintln(ct.helpview, str)
fmt.Fprintln(ct.helpview, content)
})
}

@ -80,7 +80,7 @@ func (ct *Cointop) layout(g *gocui.Gui) error {
ct.searchfield.FgColor = gocui.ColorWhite
}
if v, err := g.SetView("help", 1, 1, ct.maxtablewidth-2, maxY-2); err != nil {
if v, err := g.SetView("help", 1, 1, ct.maxtablewidth-2, maxY-1); err != nil {
if err != gocui.ErrUnknownView {
return err
}

@ -16,3 +16,23 @@ func (ct *Cointop) height() int {
_, h := ct.size()
return h
}
// viewWidth returns view width
func (ct *Cointop) viewWidth(view string) int {
v, err := ct.g.View(view)
if err != nil {
return 0
}
w, _ := v.Size()
return w
}
// viewHeight returns view height
func (ct *Cointop) viewHeight(view string) int {
v, err := ct.g.View(view)
if err != nil {
return 0
}
_, h := v.Size()
return h
}

@ -11,6 +11,8 @@ var (
WhiteBold = color.New(color.FgWhite, color.Bold).SprintFunc()
// Yellow color
Yellow = color.New(color.FgYellow).SprintFunc()
// YellowBg color
YellowBg = color.New(color.BgYellow, color.FgBlack).SprintFunc()
// Green color
Green = color.New(color.FgGreen).SprintFunc()
// GreenBg color

Loading…
Cancel
Save