1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Split out char/key mapping help

This makes help more inline with previous instances
Wrap everything in `[]`, so keys like ` ` show up correctly
Pad characters for keypresses, so things have pretty alignment
This commit is contained in:
Sean Smith 2019-05-11 19:55:03 -04:00
parent cd35d1e0a3
commit 9b8ce06990

View File

@ -22,7 +22,9 @@ type KeyboardWidget struct {
charMap map[string]func() charMap map[string]func()
keyMap map[tcell.Key]func() keyMap map[tcell.Key]func()
helpMap []helpItem charHelp []helpItem
keyHelp []helpItem
maxKey int
} }
// NewKeyboardWidget creates and returns a new instance of KeyboardWidget // NewKeyboardWidget creates and returns a new instance of KeyboardWidget
@ -33,7 +35,8 @@ func NewKeyboardWidget(app *tview.Application, pages *tview.Pages, settings *cfg
settings: settings, settings: settings,
charMap: make(map[string]func()), charMap: make(map[string]func()),
keyMap: make(map[tcell.Key]func()), keyMap: make(map[tcell.Key]func()),
helpMap: []helpItem{}, charHelp: []helpItem{},
keyHelp: []helpItem{},
} }
} }
@ -44,7 +47,7 @@ func NewKeyboardWidget(app *tview.Application, pages *tview.Pages, settings *cfg
// //
func (widget *KeyboardWidget) SetKeyboardChar(char string, fn func(), helpText string) { func (widget *KeyboardWidget) SetKeyboardChar(char string, fn func(), helpText string) {
widget.charMap[char] = fn widget.charMap[char] = fn
widget.helpMap = append(widget.helpMap, helpItem{char, helpText}) widget.charHelp = append(widget.charHelp, helpItem{char, helpText})
} }
// SetKeyboardKey sets a tcell.Key/function combination that responds to key presses // SetKeyboardKey sets a tcell.Key/function combination that responds to key presses
@ -54,7 +57,10 @@ func (widget *KeyboardWidget) SetKeyboardChar(char string, fn func(), helpText s
// //
func (widget *KeyboardWidget) SetKeyboardKey(key tcell.Key, fn func(), helpText string) { func (widget *KeyboardWidget) SetKeyboardKey(key tcell.Key, fn func(), helpText string) {
widget.keyMap[key] = fn widget.keyMap[key] = fn
widget.helpMap = append(widget.helpMap, helpItem{tcell.KeyNames[key], helpText}) widget.keyHelp = append(widget.keyHelp, helpItem{tcell.KeyNames[key], helpText})
if len(tcell.KeyNames[key]) > widget.maxKey {
widget.maxKey = len(tcell.KeyNames[key])
}
} }
// InputCapture is the function passed to tview's SetInputCapture() function // InputCapture is the function passed to tview's SetInputCapture() function
@ -82,8 +88,13 @@ func (widget *KeyboardWidget) HelpText() string {
str := "Keyboard commands for " + widget.settings.Module.Type + "\n\n" str := "Keyboard commands for " + widget.settings.Module.Type + "\n\n"
for _, item := range widget.helpMap { for _, item := range widget.charHelp {
str = str + fmt.Sprintf("%s: %s\n", item.Key, item.Text) str = str + fmt.Sprintf(" [%s]: %s\n", item.Key, item.Text)
}
str = str + "\n\n"
for _, item := range widget.keyHelp {
str = str + fmt.Sprintf(" [%-*s]: %s\n", widget.maxKey, item.Key, item.Text)
} }
return str return str