diff --git a/termui/bug_table.go b/termui/bug_table.go index 4c7ade77..b2361907 100644 --- a/termui/bug_table.go +++ b/termui/bug_table.go @@ -23,6 +23,16 @@ const bugTableInstructionView = "bugTableInstructionView" const defaultRemote = "origin" const defaultQuery = "status:open" +var bugTableHelp = helpBar{ + {"q", "Quit"}, + {"s", "Search"}, + {"←↓↑→,hjkl", "Navigation"}, + {"↵", "Open bug"}, + {"n", "New bug"}, + {"i", "Pull"}, + {"o", "Push"}, +} + type bugTable struct { repo *cache.RepoCache queryStr string @@ -117,9 +127,8 @@ func (bt *bugTable) layout(g *gocui.Gui) error { v.Frame = false v.FgColor = gocui.ColorWhite - v.BgColor = gocui.ColorBlue - _, _ = fmt.Fprintf(v, "[q] Quit [s] Search [←↓↑→,hjkl] Navigation [↵] Open bug [n] New bug [i] Pull [o] Push") + _, _ = fmt.Fprint(v, bugTableHelp.Render(maxX)) } _, err = g.SetCurrentView(bugTableView) diff --git a/termui/help_bar.go b/termui/help_bar.go new file mode 100644 index 00000000..78f8ebca --- /dev/null +++ b/termui/help_bar.go @@ -0,0 +1,30 @@ +package termui + +import ( + "fmt" + "strings" + + text "github.com/MichaelMure/go-term-text" + + "github.com/MichaelMure/git-bug/util/colors" +) + +type helpBar []struct { + keys string + text string +} + +func (hb helpBar) Render(maxX int) string { + var builder strings.Builder + for _, entry := range hb { + builder.WriteString(colors.BlueBg(fmt.Sprintf("[%s] %s", entry.keys, entry.text))) + builder.WriteByte(' ') + } + + l := text.Len(builder.String()) + if l < maxX { + builder.WriteString(colors.BlueBg(strings.Repeat(" ", maxX-l))) + } + + return builder.String() +} diff --git a/termui/label_select.go b/termui/label_select.go index db0486e4..dfba20a6 100644 --- a/termui/label_select.go +++ b/termui/label_select.go @@ -13,6 +13,12 @@ import ( const labelSelectView = "labelSelectView" const labelSelectInstructionsView = "labelSelectInstructionsView" +var labelSelectHelp = helpBar{ + {"q", "Save and close"}, + {"↓↑,jk", "Nav"}, + {"a", "Add item"}, +} + type labelSelect struct { cache *cache.RepoCache bug *cache.BugCache @@ -132,7 +138,7 @@ func (ls *labelSelect) layout(g *gocui.Gui) error { lc := label.Color() lc256 := lc.Term256() labelStr := lc256.Escape() + "◼ " + lc256.Unescape() + label.String() - fmt.Fprint(v, selectBox, labelStr) + _, _ = fmt.Fprint(v, selectBox, labelStr) y0 += 2 } @@ -145,10 +151,9 @@ func (ls *labelSelect) layout(g *gocui.Gui) error { } v.Frame = false v.FgColor = gocui.ColorWhite - v.BgColor = gocui.ColorBlue } v.Clear() - fmt.Fprint(v, "[q] Save and close [↓↑,jk] Nav [a] Add item") + _, _ = fmt.Fprint(v, labelSelectHelp.Render(maxX)) if _, err = g.SetViewOnTop(labelSelectInstructionsView); err != nil { return err } diff --git a/termui/show_bug.go b/termui/show_bug.go index 23b82c73..6296c445 100644 --- a/termui/show_bug.go +++ b/termui/show_bug.go @@ -21,6 +21,15 @@ const showBugHeaderView = "showBugHeaderView" const timeLayout = "Jan 2 2006" +var showBugHelp = helpBar{ + {"q", "Save and return"}, + {"←↓↑→,hjkl", "Navigation"}, + {"o", "Toggle open/close"}, + {"e", "Edit"}, + {"c", "Comment"}, + {"t", "Change title"}, +} + type showBug struct { cache *cache.RepoCache bug *cache.BugCache @@ -93,11 +102,10 @@ func (sb *showBug) layout(g *gocui.Gui) error { sb.childViews = append(sb.childViews, showBugInstructionView) v.Frame = false v.FgColor = gocui.ColorWhite - v.BgColor = gocui.ColorBlue } v.Clear() - _, _ = fmt.Fprintf(v, "[q] Save and return [←↓↑→,hjkl] Navigation [o] Toggle open/close [e] Edit [c] Comment [t] Change title") + _, _ = fmt.Fprint(v, showBugHelp.Render(maxX)) _, err = g.SetViewOnTop(showBugInstructionView) if err != nil {