From 7f3daaac59f4f8b370d4bfb72de00feab297f9b2 Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Sat, 11 May 2019 11:14:02 -0400 Subject: [PATCH] Have keyboard widget manage its own help Define help with keys This means that keys and help are automatically in sync This means that you can't define keys, but forget help This unfortunately also means that formatting may not be quite as good --- flags/flags.go | 11 ---- help/help.go | 39 ------------- modules/datadog/keyboard.go | 16 +++--- modules/datadog/widget.go | 19 +------ modules/gerrit/keyboard.go | 24 ++++---- modules/gerrit/widget.go | 24 +------- modules/git/keyboard.go | 14 ++--- modules/git/widget.go | 19 +------ modules/github/keyboard.go | 16 +++--- modules/github/widget.go | 20 +------ modules/gitlab/keyboard.go | 12 ++-- modules/gitlab/widget.go | 18 +----- modules/gitter/keyboard.go | 14 ++--- modules/gitter/widget.go | 18 +----- modules/hackernews/keyboard.go | 20 +++---- modules/hackernews/widget.go | 21 +------ modules/jenkins/keyboard.go | 18 +++--- modules/jenkins/widget.go | 20 +------ modules/jira/keyboard.go | 16 +++--- modules/jira/widget.go | 19 +------ modules/mercurial/keyboard.go | 14 ++--- modules/mercurial/widget.go | 19 +------ modules/nbascore/keyboard.go | 12 ++-- modules/nbascore/widget.go | 13 +---- modules/rollbar/keyboard.go | 20 +++---- modules/rollbar/widget.go | 21 +------ modules/spotify/keyboard.go | 8 +-- modules/spotify/widget.go | 13 +---- modules/spotifyweb/keyboard.go | 10 ++-- modules/spotifyweb/widget.go | 26 +-------- modules/textfile/keyboard.go | 12 ++-- modules/textfile/widget.go | 18 +----- modules/todo/keyboard.go | 26 ++++----- modules/todo/widget.go | 25 +-------- modules/todoist/keyboard.go | 24 ++++---- modules/todoist/widget.go | 24 +------- modules/travisci/keyboard.go | 18 +++--- modules/travisci/widget.go | 20 +------ modules/twitter/keyboard.go | 14 ++--- modules/twitter/widget.go | 18 +----- modules/victorops/widget.go | 9 --- modules/weatherservices/weather/keyboard.go | 10 ++-- modules/weatherservices/weather/widget.go | 17 +----- modules/zendesk/keyboard.go | 15 ++--- modules/zendesk/widget.go | 24 ++------ wtf/helpful_widget.go | 40 ------------- wtf/keyboard_widget.go | 62 +++++++++++++++++++-- 47 files changed, 269 insertions(+), 641 deletions(-) delete mode 100644 help/help.go delete mode 100644 wtf/helpful_widget.go diff --git a/flags/flags.go b/flags/flags.go index 05da8042..4eb856a3 100644 --- a/flags/flags.go +++ b/flags/flags.go @@ -6,13 +6,11 @@ import ( "path/filepath" goFlags "github.com/jessevdk/go-flags" - "github.com/wtfutil/wtf/help" "github.com/wtfutil/wtf/utils" ) type Flags struct { Config string `short:"c" long:"config" optional:"yes" description:"Path to config file"` - Module string `short:"m" long:"module" optional:"yes" description:"Display info about a specific module, i.e.: 'wtf -m=todo'"` Profile bool `short:"p" long:"profile" optional:"yes" description:"Profile application memory usage"` Version bool `short:"v" long:"version" description:"Show version info"` } @@ -29,11 +27,6 @@ func (flags *Flags) ConfigFilePath() string { } func (flags *Flags) Display(version string) { - if flags.HasModule() { - help.Display(flags.Module) - os.Exit(0) - } - if flags.HasVersion() { fmt.Println(version) os.Exit(0) @@ -44,10 +37,6 @@ func (flags *Flags) HasConfig() bool { return len(flags.Config) > 0 } -func (flags *Flags) HasModule() bool { - return len(flags.Module) > 0 -} - func (flags *Flags) HasVersion() bool { return flags.Version == true } diff --git a/help/help.go b/help/help.go deleted file mode 100644 index 8fbc0857..00000000 --- a/help/help.go +++ /dev/null @@ -1,39 +0,0 @@ -package help - -import ( - "fmt" - - "github.com/wtfutil/wtf/modules/git" - "github.com/wtfutil/wtf/modules/github" - "github.com/wtfutil/wtf/modules/textfile" - "github.com/wtfutil/wtf/modules/todo" - "github.com/wtfutil/wtf/modules/todoist" - "github.com/wtfutil/wtf/modules/weatherservices/weather" -) - -func Display(moduleName string) { - if moduleName == "" { - fmt.Println("\n --module takes a module name as an argument, i.e: '--module=github'") - } else { - fmt.Printf("%s\n", helpFor(moduleName)) - } -} - -func helpFor(moduleName string) string { - switch moduleName { - case "git": - return git.HelpText - case "github": - return github.HelpText - case "textfile": - return textfile.HelpText - case "todo": - return todo.HelpText - case "todoist": - return todoist.HelpText - case "weather": - return weather.HelpText - default: - return fmt.Sprintf("\n There is no help available for '%s'", moduleName) - } -} diff --git a/modules/datadog/keyboard.go b/modules/datadog/keyboard.go index 58daa141..af9ef78b 100644 --- a/modules/datadog/keyboard.go +++ b/modules/datadog/keyboard.go @@ -5,13 +5,13 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("o", widget.openItem) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("o", widget.openItem, "Open item in browser") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openItem) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openItem, "Open item in browser") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") } diff --git a/modules/datadog/widget.go b/modules/datadog/widget.go index 3f9dbb79..a68a8be9 100644 --- a/modules/datadog/widget.go +++ b/modules/datadog/widget.go @@ -8,21 +8,7 @@ import ( datadog "github.com/zorkian/go-datadog-api" ) -const HelpText = ` - Keyboard commands for Datadog: - - /: Show/hide this help window - j: Select the next item in the list - k: Select the previous item in the list - - arrow down: Select the next item in the list - arrow up: Select the previous item in the list - - return: Open the selected issue in a browser -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -32,8 +18,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), settings: settings, @@ -43,7 +28,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/gerrit/keyboard.go b/modules/gerrit/keyboard.go index 060fe7e3..a4a97324 100644 --- a/modules/gerrit/keyboard.go +++ b/modules/gerrit/keyboard.go @@ -5,17 +5,17 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.prevProject) - widget.SetKeyboardChar("l", widget.nextProject) - widget.SetKeyboardChar("j", widget.nextReview) - widget.SetKeyboardChar("k", widget.prevReview) - widget.SetKeyboardChar("r", widget.Refresh) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help window") + widget.SetKeyboardChar("h", widget.prevProject, "Select previous project") + widget.SetKeyboardChar("l", widget.nextProject, "Select next project") + widget.SetKeyboardChar("j", widget.nextReview, "Select next review") + widget.SetKeyboardChar("k", widget.prevReview, "Select previous review") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh items") - widget.SetKeyboardKey(tcell.KeyLeft, widget.prevProject) - widget.SetKeyboardKey(tcell.KeyRight, widget.nextProject) - widget.SetKeyboardKey(tcell.KeyDown, widget.nextReview) - widget.SetKeyboardKey(tcell.KeyUp, widget.prevReview) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openReview) - widget.SetKeyboardKey(tcell.KeyEsc, widget.unselect) + widget.SetKeyboardKey(tcell.KeyLeft, widget.prevProject, "Select previous project") + widget.SetKeyboardKey(tcell.KeyRight, widget.nextProject, "Select next project") + widget.SetKeyboardKey(tcell.KeyDown, widget.nextReview, "Select next review") + widget.SetKeyboardKey(tcell.KeyUp, widget.prevReview, "Select previous review") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openReview, "Open review in browser") + widget.SetKeyboardKey(tcell.KeyEsc, widget.unselect, "Clear selection") } diff --git a/modules/gerrit/widget.go b/modules/gerrit/widget.go index e1536ce0..2aac5f5b 100644 --- a/modules/gerrit/widget.go +++ b/modules/gerrit/widget.go @@ -11,26 +11,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Gerrit: - - /: Show/hide this help window - h: Show the previous project - l: Show the next project - j: Select the next review in the list - k: Select the previous review in the list - r: Refresh the data - - arrow left: Show the previous project - arrow right: Show the next project - arrow down: Select the next review in the list - arrow up: Select the previous review in the list - - return: Open the selected review in a browser -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -49,8 +30,7 @@ var ( func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), Idx: 0, @@ -61,7 +41,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) widget.unselect() diff --git a/modules/git/keyboard.go b/modules/git/keyboard.go index 38664ecd..ff02cfbf 100644 --- a/modules/git/keyboard.go +++ b/modules/git/keyboard.go @@ -3,12 +3,12 @@ package git import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.Prev) - widget.SetKeyboardChar("l", widget.Next) - widget.SetKeyboardChar("p", widget.Pull) - widget.SetKeyboardChar("c", widget.Checkout) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help window") + widget.SetKeyboardChar("h", widget.Prev, "Select previous item") + widget.SetKeyboardChar("l", widget.Next, "Select next item") + widget.SetKeyboardChar("p", widget.Pull, "Pull repo") + widget.SetKeyboardChar("c", widget.Checkout, "Checkout branch") - widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.Next) + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") } diff --git a/modules/git/widget.go b/modules/git/widget.go index 41026d6c..a4f8d884 100644 --- a/modules/git/widget.go +++ b/modules/git/widget.go @@ -11,25 +11,11 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Git: - - /: Show/hide this help window - c: Checkout to branch - h: Previous git repository - l: Next git repository - p: Pull current git repository - - arrow left: Previous git repository - arrow right: Next git repository -` - const offscreen = -1000 const modalWidth = 80 const modalHeight = 7 type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.MultiSourceWidget wtf.TextWidget @@ -43,8 +29,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: wtf.NewMultiSourceWidget(settings.common, "repository", "repositories"), TextWidget: wtf.NewTextWidget(app, settings.common, true), @@ -58,7 +43,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.SetDisplayFunction(widget.display) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/github/keyboard.go b/modules/github/keyboard.go index 24d1c347..9408c0bc 100644 --- a/modules/github/keyboard.go +++ b/modules/github/keyboard.go @@ -5,13 +5,13 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.Prev) - widget.SetKeyboardChar("l", widget.Next) - widget.SetKeyboardChar("o", widget.openRepo) - widget.SetKeyboardChar("r", widget.Refresh) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.Prev, "Select previous item") + widget.SetKeyboardChar("l", widget.Next, "Select next item") + widget.SetKeyboardChar("o", widget.openRepo, "Open item in browser") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") - widget.SetKeyboardKey(tcell.KeyEnter, widget.openRepo) - widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.Next) + widget.SetKeyboardKey(tcell.KeyEnter, widget.openRepo, "Open item in browser") + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") } diff --git a/modules/github/widget.go b/modules/github/widget.go index 5196bc04..04dbe9e7 100644 --- a/modules/github/widget.go +++ b/modules/github/widget.go @@ -5,22 +5,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for GitHub: - - /: Show/hide this help window - h: Previous git repository - l: Next git repository - r: Refresh the data - - arrow left: Previous git repository - arrow right: Next git repository - - return: Open the selected repository in a browser -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -33,8 +18,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), Idx: 0, @@ -48,7 +32,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/gitlab/keyboard.go b/modules/gitlab/keyboard.go index d88ac6e5..fad6af43 100644 --- a/modules/gitlab/keyboard.go +++ b/modules/gitlab/keyboard.go @@ -3,11 +3,11 @@ package gitlab import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.Prev) - widget.SetKeyboardChar("l", widget.Next) - widget.SetKeyboardChar("r", widget.Refresh) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.Prev, "Select previous item") + widget.SetKeyboardChar("l", widget.Next, "Select next item") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") - widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.Next) + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") } diff --git a/modules/gitlab/widget.go b/modules/gitlab/widget.go index 05aebe62..88fcd761 100644 --- a/modules/gitlab/widget.go +++ b/modules/gitlab/widget.go @@ -6,20 +6,7 @@ import ( glb "github.com/xanzy/go-gitlab" ) -const HelpText = ` - Keyboard commands for Gitlab: - - /: Show/hide this help window - h: Previous project - l: Next project - r: Refresh the data - - arrow left: Previous project - arrow right: Next project -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -39,8 +26,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * } widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), Idx: 0, @@ -54,7 +40,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/gitter/keyboard.go b/modules/gitter/keyboard.go index 77abbc84..e9c961ee 100644 --- a/modules/gitter/keyboard.go +++ b/modules/gitter/keyboard.go @@ -3,12 +3,12 @@ package gitter import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("r", widget.Refresh) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") } diff --git a/modules/gitter/widget.go b/modules/gitter/widget.go index a0976871..95dc3037 100644 --- a/modules/gitter/widget.go +++ b/modules/gitter/widget.go @@ -7,21 +7,8 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Gitter: - - /: Show/hide this help window - j: Select the next message in the list - k: Select the previous message in the list - r: Refresh the data - - arrow down: Select the next message in the list - arrow up: Select the previous message in the list -` - // A Widget represents a Gitter widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -32,8 +19,7 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), settings: settings, @@ -43,7 +29,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/hackernews/keyboard.go b/modules/hackernews/keyboard.go index ef305ba4..e522246f 100644 --- a/modules/hackernews/keyboard.go +++ b/modules/hackernews/keyboard.go @@ -3,15 +3,15 @@ package hackernews import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("o", widget.openStory) - widget.SetKeyboardChar("r", widget.Refresh) - widget.SetKeyboardChar("c", widget.openComments) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help widget") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("o", widget.openStory, "Open story in browser") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") + widget.SetKeyboardChar("c", widget.openComments, "Open comments in browser") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openStory) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openStory, "Open story in browser") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") } diff --git a/modules/hackernews/widget.go b/modules/hackernews/widget.go index 9131f88d..a1506d86 100644 --- a/modules/hackernews/widget.go +++ b/modules/hackernews/widget.go @@ -9,23 +9,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Hacker News: - - /: Show/hide this help window - j: Select the next story in the list - k: Select the previous story in the list - r: Refresh the data - - arrow down: Select the next story in the list - arrow up: Select the previous story in the list - - return: Open the selected story in a browser - c: Open the comments of the article -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -35,8 +19,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), settings: settings, @@ -46,7 +29,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/jenkins/keyboard.go b/modules/jenkins/keyboard.go index 20735a3f..21ec47a5 100644 --- a/modules/jenkins/keyboard.go +++ b/modules/jenkins/keyboard.go @@ -3,14 +3,14 @@ package jenkins import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("o", widget.openJob) - widget.SetKeyboardChar("r", widget.Refresh) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("o", widget.openJob, "Open job in browser") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openJob) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openJob, "Open job in browser") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") } diff --git a/modules/jenkins/widget.go b/modules/jenkins/widget.go index 9db9a7d1..20187a76 100644 --- a/modules/jenkins/widget.go +++ b/modules/jenkins/widget.go @@ -8,22 +8,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Jenkins: - - /: Show/hide this help window - j: Select the next job in the list - k: Select the previous job in the list - r: Refresh the data - - arrow down: Select the next job in the list - arrow up: Select the previous job in the list - - return: Open the selected job in a browser -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -33,8 +18,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), settings: settings, @@ -44,7 +28,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/jira/keyboard.go b/modules/jira/keyboard.go index b89b27da..10097e62 100644 --- a/modules/jira/keyboard.go +++ b/modules/jira/keyboard.go @@ -5,13 +5,13 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("o", widget.openItem) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("o", widget.openItem, "Open item in browser") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openItem) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openItem, "Open item in browser") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") } diff --git a/modules/jira/widget.go b/modules/jira/widget.go index ba1b8008..97db517d 100644 --- a/modules/jira/widget.go +++ b/modules/jira/widget.go @@ -7,21 +7,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Jira: - - /: Show/hide this help window - j: Select the next item in the list - k: Select the previous item in the list - - arrow down: Select the next item in the list - arrow up: Select the previous item in the list - - return: Open the selected issue in a browser -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -31,8 +17,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), settings: settings, @@ -42,7 +27,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/mercurial/keyboard.go b/modules/mercurial/keyboard.go index 5d63c9bb..afcff63b 100644 --- a/modules/mercurial/keyboard.go +++ b/modules/mercurial/keyboard.go @@ -3,12 +3,12 @@ package mercurial import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.Prev) - widget.SetKeyboardChar("l", widget.Next) - widget.SetKeyboardChar("p", widget.Pull) - widget.SetKeyboardChar("c", widget.Checkout) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.Prev, "Select previous item") + widget.SetKeyboardChar("l", widget.Next, "Select next item") + widget.SetKeyboardChar("p", widget.Pull, "Pull repo") + widget.SetKeyboardChar("c", widget.Checkout, "Checkout branch") - widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.Next) + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") } diff --git a/modules/mercurial/widget.go b/modules/mercurial/widget.go index 36748dd4..ed5b78e5 100644 --- a/modules/mercurial/widget.go +++ b/modules/mercurial/widget.go @@ -6,26 +6,12 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Mercurial: - - /: Show/hide this help window - c: Checkout to branch - h: Previous mercurial repository - l: Next mercurial repository - p: Pull current mercurial repository - - arrow left: Previous mercurial repository - arrow right: Next mercurial repository -` - const offscreen = -1000 const modalWidth = 80 const modalHeight = 7 // A Widget represents a Mercurial widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.MultiSourceWidget wtf.TextWidget @@ -39,8 +25,7 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: wtf.NewMultiSourceWidget(settings.common, "repository", "repositories"), TextWidget: wtf.NewTextWidget(app, settings.common, true), @@ -54,7 +39,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/nbascore/keyboard.go b/modules/nbascore/keyboard.go index afa7effe..c514f73a 100644 --- a/modules/nbascore/keyboard.go +++ b/modules/nbascore/keyboard.go @@ -3,13 +3,13 @@ package nbascore import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.prev) - widget.SetKeyboardChar("l", widget.next) - widget.SetKeyboardChar("c", widget.center) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.prev, "Select previous item") + widget.SetKeyboardChar("l", widget.next, "Select next item") + widget.SetKeyboardChar("c", widget.center, "???") - widget.SetKeyboardKey(tcell.KeyLeft, widget.prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.next) + widget.SetKeyboardKey(tcell.KeyLeft, widget.prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.next, "Select next item") } func (widget *Widget) center() { diff --git a/modules/nbascore/widget.go b/modules/nbascore/widget.go index ac7a47d6..0cb8c457 100644 --- a/modules/nbascore/widget.go +++ b/modules/nbascore/widget.go @@ -12,16 +12,8 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for NBA Score: - h: Go to previous day - l: Go to next day - c: Go back to current day -` - // A Widget represents an NBA Score widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -35,8 +27,7 @@ var offset = 0 // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), settings: settings, @@ -47,7 +38,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.View.SetScrollable(true) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/rollbar/keyboard.go b/modules/rollbar/keyboard.go index a89e6ec1..5e9a1a2a 100644 --- a/modules/rollbar/keyboard.go +++ b/modules/rollbar/keyboard.go @@ -3,15 +3,15 @@ package rollbar import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("o", widget.openBuild) - widget.SetKeyboardChar("r", widget.Refresh) - widget.SetKeyboardChar("u", widget.Unselect) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("o", widget.openBuild, "Open item in browser") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") + widget.SetKeyboardChar("u", widget.Unselect, "Clear selection") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openBuild) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openBuild, "Open item in browser") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") } diff --git a/modules/rollbar/widget.go b/modules/rollbar/widget.go index fa847ae0..7086be0a 100644 --- a/modules/rollbar/widget.go +++ b/modules/rollbar/widget.go @@ -7,24 +7,8 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Rollbar: - - /: Show/hide this help window - j: Select the next item in the list - k: Select the previous item in the list - r: Refresh the data - u: unselect the current item(removes item being perma highlighted) - - arrow down: Select the next item in the list - arrow up: Select the previous item in the list - - return: Open the selected item in a browser -` - // A Widget represents a Rollbar widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -35,8 +19,7 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), settings: settings, @@ -46,7 +29,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/spotify/keyboard.go b/modules/spotify/keyboard.go index 0994f593..9ee13add 100644 --- a/modules/spotify/keyboard.go +++ b/modules/spotify/keyboard.go @@ -5,10 +5,10 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.previous) - widget.SetKeyboardChar("l", widget.next) - widget.SetKeyboardChar(" ", widget.playPause) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.previous, "Select previous item") + widget.SetKeyboardChar("l", widget.next, "Select next item") + widget.SetKeyboardChar(" ", widget.playPause, "Play/pause song") } func (widget *Widget) previous() { diff --git a/modules/spotify/widget.go b/modules/spotify/widget.go index dfb151fb..dc6f8f69 100644 --- a/modules/spotify/widget.go +++ b/modules/spotify/widget.go @@ -8,16 +8,8 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - To control Spotify use: - [Spacebar] for Play & Pause - [h] for Previous Song - [l] for Next Song -` - // A Widget represents a Spotify widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -30,8 +22,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { spotifyClient := spotigopher.NewClient() widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), Info: spotigopher.Info{}, @@ -49,7 +40,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.View.SetWordWrap(true) widget.View.SetTitle(fmt.Sprint("[green]Spotify[white]")) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/spotifyweb/keyboard.go b/modules/spotifyweb/keyboard.go index 9c962d48..c3a72e9b 100644 --- a/modules/spotifyweb/keyboard.go +++ b/modules/spotifyweb/keyboard.go @@ -5,11 +5,11 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.selectPrevious) - widget.SetKeyboardChar("l", widget.selectNext) - widget.SetKeyboardChar(" ", widget.playPause) - widget.SetKeyboardChar("s", widget.toggleShuffle) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.selectPrevious, "Select previous item") + widget.SetKeyboardChar("l", widget.selectNext, "Select next item") + widget.SetKeyboardChar(" ", widget.playPause, "Play/pause") + widget.SetKeyboardChar("s", widget.toggleShuffle, "Toggle shuffle") } func (widget *Widget) selectPrevious() { diff --git a/modules/spotifyweb/widget.go b/modules/spotifyweb/widget.go index 047b37ae..bf273f94 100644 --- a/modules/spotifyweb/widget.go +++ b/modules/spotifyweb/widget.go @@ -11,26 +11,6 @@ import ( "github.com/zmb3/spotify" ) -// HelpText contains the help text for the Spotify Web API widget. -const HelpText = ` -Keyboard commands for Spotify Web: - - Before any of these commands are used, you should authenticate using the - URL provided by the widget. - - The widget should automatically open a browser window for you, otherwise - you should check out the logs for the URL. - - /: Show/hide this help window - h: Switch to previous song in Spotify queue - l: Switch to next song in Spotify queue - s: Toggle shuffle - - [space]: Pause/play current song - - esc: Unselect the Spotify Web module -` - // Info is the struct that contains all the information the Spotify player displays to the user type Info struct { Artists string @@ -42,7 +22,6 @@ type Info struct { // Widget is the struct used by all WTF widgets to transfer to the main widget controller type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -92,8 +71,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * var playerState *spotify.PlayerState widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), Info: Info{}, @@ -146,7 +124,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.View.SetWordWrap(true) widget.View.SetTitle("[green]Spotify Web[white]") - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/textfile/keyboard.go b/modules/textfile/keyboard.go index add068e2..d0d87dcc 100644 --- a/modules/textfile/keyboard.go +++ b/modules/textfile/keyboard.go @@ -6,13 +6,13 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.Prev) - widget.SetKeyboardChar("l", widget.Next) - widget.SetKeyboardChar("o", widget.openFile) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.Prev, "Select previous item") + widget.SetKeyboardChar("l", widget.Next, "Select next item") + widget.SetKeyboardChar("o", widget.openFile, "Open item") - widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.Next) + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") } func (widget *Widget) openFile() { diff --git a/modules/textfile/widget.go b/modules/textfile/widget.go index 7a53752d..d91d57b7 100644 --- a/modules/textfile/widget.go +++ b/modules/textfile/widget.go @@ -18,20 +18,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Textfile: - - /: Show/hide this help window - h: Previous text file - l: Next text file - o: Open the text file in the operating system - - arrow left: Previous text file - arrow right: Next text file -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.MultiSourceWidget wtf.TextWidget @@ -43,8 +30,7 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: wtf.NewMultiSourceWidget(settings.common, "filePath", "filePaths"), TextWidget: wtf.NewTextWidget(app, settings.common, true), @@ -62,7 +48,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.View.SetWordWrap(true) widget.View.SetWrap(true) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) go widget.watchForFileChanges() diff --git a/modules/todo/keyboard.go b/modules/todo/keyboard.go index fbcab2e8..4082e680 100644 --- a/modules/todo/keyboard.go +++ b/modules/todo/keyboard.go @@ -9,20 +9,20 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar(" ", widget.toggleChecked) - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.displayNext) - widget.SetKeyboardChar("k", widget.displayPrev) - widget.SetKeyboardChar("n", widget.newItem) - widget.SetKeyboardChar("o", widget.openFile) + widget.SetKeyboardChar(" ", widget.toggleChecked, "Toggle checkmark") + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.displayNext, "Select next item") + widget.SetKeyboardChar("k", widget.displayPrev, "Select previous item") + widget.SetKeyboardChar("n", widget.newItem, "Create new item") + widget.SetKeyboardChar("o", widget.openFile, "Open file") - widget.SetKeyboardKey(tcell.KeyCtrlD, widget.deleteSelected) - widget.SetKeyboardKey(tcell.KeyCtrlJ, widget.demoteSelected) - widget.SetKeyboardKey(tcell.KeyCtrlK, widget.promoteSelected) - widget.SetKeyboardKey(tcell.KeyDown, widget.displayNext) - widget.SetKeyboardKey(tcell.KeyEnter, widget.editSelected) - widget.SetKeyboardKey(tcell.KeyEsc, widget.unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.displayPrev) + widget.SetKeyboardKey(tcell.KeyCtrlD, widget.deleteSelected, "Delete item") + widget.SetKeyboardKey(tcell.KeyCtrlJ, widget.demoteSelected, "Demote item") + widget.SetKeyboardKey(tcell.KeyCtrlK, widget.promoteSelected, "Promote item") + widget.SetKeyboardKey(tcell.KeyDown, widget.displayNext, "Select next item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.editSelected, "Edit item") + widget.SetKeyboardKey(tcell.KeyEsc, widget.unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.displayPrev, "Select previous item") } func (widget *Widget) deleteSelected() { diff --git a/modules/todo/widget.go b/modules/todo/widget.go index bc8e3852..aaf93bb3 100644 --- a/modules/todo/widget.go +++ b/modules/todo/widget.go @@ -12,32 +12,12 @@ import ( "gopkg.in/yaml.v2" ) -const HelpText = ` - Keyboard commands for Todo: - - /: Show/hide this help window - j: Select the next item in the list - k: Select the previous item in the list - n: Create a new list item - o: Open the todo file in the operating system - - arrow down: Select the next item in the list - arrow up: Select the previous item in the list - - ctrl-d: Delete the selected item - - esc: Unselect the todo list - return: Edit selected item - space: Check the selected item on or off -` - const offscreen = -1000 const modalWidth = 80 const modalHeight = 7 // A Widget represents a Todo widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -51,8 +31,7 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), app: app, @@ -70,7 +49,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.View.SetRegions(true) widget.View.SetScrollable(true) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/todoist/keyboard.go b/modules/todoist/keyboard.go index cbae2762..b06cfccf 100644 --- a/modules/todoist/keyboard.go +++ b/modules/todoist/keyboard.go @@ -3,17 +3,17 @@ package todoist import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("c", widget.Close) - widget.SetKeyboardChar("d", widget.Delete) - widget.SetKeyboardChar("h", widget.PreviousProject) - widget.SetKeyboardChar("j", widget.Up) - widget.SetKeyboardChar("k", widget.Down) - widget.SetKeyboardChar("l", widget.NextProject) - widget.SetKeyboardChar("r", widget.Refresh) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("c", widget.Close, "Close item") + widget.SetKeyboardChar("d", widget.Delete, "Delete item") + widget.SetKeyboardChar("h", widget.PreviousProject, "Select previous project") + widget.SetKeyboardChar("j", widget.Up, "Select previous item") + widget.SetKeyboardChar("k", widget.Down, "Select next item") + widget.SetKeyboardChar("l", widget.NextProject, "Select next project") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") - widget.SetKeyboardKey(tcell.KeyDown, widget.Down) - widget.SetKeyboardKey(tcell.KeyLeft, widget.PreviousProject) - widget.SetKeyboardKey(tcell.KeyRight, widget.NextProject) - widget.SetKeyboardKey(tcell.KeyUp, widget.Up) + widget.SetKeyboardKey(tcell.KeyDown, widget.Down, "Select next item") + widget.SetKeyboardKey(tcell.KeyLeft, widget.PreviousProject, "Select previous project") + widget.SetKeyboardKey(tcell.KeyRight, widget.NextProject, "Select next project") + widget.SetKeyboardKey(tcell.KeyUp, widget.Up, "Select previous item") } diff --git a/modules/todoist/widget.go b/modules/todoist/widget.go index 329ef96c..9d4fc2a4 100644 --- a/modules/todoist/widget.go +++ b/modules/todoist/widget.go @@ -7,27 +7,8 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Todoist: - - /: Show/hide this help window - c: Close the selected item - d: Delete the selected item - h: Previous Todoist list - j: Select the next item in the list - k: Select the previous item in the list - l: Next Todoist list - r: Refresh the todo list data - - arrow down: Select the next item in the list - arrow left: Previous Todoist list - arrow right: Next Todoist list - arrow up: Select the previous item in the list -` - // A Widget represents a Todoist widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -39,8 +20,7 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), settings: settings, @@ -52,7 +32,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/travisci/keyboard.go b/modules/travisci/keyboard.go index b8143aec..418fa0aa 100644 --- a/modules/travisci/keyboard.go +++ b/modules/travisci/keyboard.go @@ -3,14 +3,14 @@ package travisci import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("o", widget.openBuild) - widget.SetKeyboardChar("r", widget.Refresh) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("o", widget.openBuild, "Open item in browser") + widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openBuild) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openBuild, "Open item in browser") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") } diff --git a/modules/travisci/widget.go b/modules/travisci/widget.go index 49170a43..8bce6ade 100644 --- a/modules/travisci/widget.go +++ b/modules/travisci/widget.go @@ -8,22 +8,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Travis CI: - - /: Show/hide this help window - j: Select the next build in the list - k: Select the previous build in the list - r: Refresh the data - - arrow down: Select the next build in the list - arrow up: Select the previous build in the list - - return: Open the selected build in a browser -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -33,8 +18,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), settings: settings, @@ -44,7 +28,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/twitter/keyboard.go b/modules/twitter/keyboard.go index 4c2513b2..3a086898 100644 --- a/modules/twitter/keyboard.go +++ b/modules/twitter/keyboard.go @@ -6,14 +6,14 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.Prev) - widget.SetKeyboardChar("l", widget.Next) - widget.SetKeyboardChar("o", widget.openFile) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.Prev, "Select previous item") + widget.SetKeyboardChar("l", widget.Next, "Select next item") + widget.SetKeyboardChar("o", widget.openFile, "Open item") - widget.SetKeyboardKey(tcell.KeyEnter, widget.openFile) - widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.Next) + widget.SetKeyboardKey(tcell.KeyEnter, widget.openFile, "Open item") + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") } func (widget *Widget) openFile() { diff --git a/modules/twitter/widget.go b/modules/twitter/widget.go index f26564a0..e21b5de2 100644 --- a/modules/twitter/widget.go +++ b/modules/twitter/widget.go @@ -10,20 +10,7 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Twitter: - - /: Show/hide this help window - h: Previous Twitter name - l: Next Twitter name - o: Open the Twitter handle in a browser - - arrow left: Previous Twitter name - arrow right: Next Twitter name -` - type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.MultiSourceWidget wtf.TextWidget @@ -36,8 +23,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: wtf.NewMultiSourceWidget(settings.common, "screenName", "screenNames"), TextWidget: wtf.NewTextWidget(app, settings.common, true), @@ -56,7 +42,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.View.SetWrap(true) widget.View.SetWordWrap(true) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/victorops/widget.go b/modules/victorops/widget.go index 735c3dcd..1fb79d2c 100644 --- a/modules/victorops/widget.go +++ b/modules/victorops/widget.go @@ -7,15 +7,6 @@ import ( "github.com/wtfutil/wtf/wtf" ) -// HelpText to display to users -const HelpText = ` - Keyboard commands for VictorOps - - /: Show/hide this help window - arrow down: Scroll down the list - arrow up: Scroll up the list -` - // Widget contains text info type Widget struct { wtf.TextWidget diff --git a/modules/weatherservices/weather/keyboard.go b/modules/weatherservices/weather/keyboard.go index c1db5727..76f2a555 100644 --- a/modules/weatherservices/weather/keyboard.go +++ b/modules/weatherservices/weather/keyboard.go @@ -3,10 +3,10 @@ package weather import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("/", widget.ShowHelp) - widget.SetKeyboardChar("h", widget.Prev) - widget.SetKeyboardChar("l", widget.Next) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("h", widget.Prev, "Select previous item") + widget.SetKeyboardChar("l", widget.Next, "Select next item") - widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev) - widget.SetKeyboardKey(tcell.KeyRight, widget.Next) + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") } diff --git a/modules/weatherservices/weather/widget.go b/modules/weatherservices/weather/widget.go index 458d08af..aca9af6d 100644 --- a/modules/weatherservices/weather/widget.go +++ b/modules/weatherservices/weather/widget.go @@ -6,20 +6,8 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Weather: - - /: Show/hide this help window - h: Previous weather location - l: Next weather location - - arrow left: Previous weather location - arrow right: Next weather location -` - // Widget is the container for weather data. type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.TextWidget @@ -33,8 +21,7 @@ type Widget struct { // NewWidget creates and returns a new instance of the weather Widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), TextWidget: wtf.NewTextWidget(app, settings.common, true), Idx: 0, @@ -45,7 +32,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) - widget.HelpfulWidget.SetView(widget.View) + widget.KeyboardWidget.SetView(widget.View) return &widget } diff --git a/modules/zendesk/keyboard.go b/modules/zendesk/keyboard.go index 0c59044c..73d36661 100644 --- a/modules/zendesk/keyboard.go +++ b/modules/zendesk/keyboard.go @@ -3,12 +3,13 @@ package zendesk import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.SetKeyboardChar("j", widget.Next) - widget.SetKeyboardChar("k", widget.Prev) - widget.SetKeyboardChar("o", widget.openTicket) + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("j", widget.Next, "Select next item") + widget.SetKeyboardChar("k", widget.Prev, "Select previous item") + widget.SetKeyboardChar("o", widget.openTicket, "Open item") - widget.SetKeyboardKey(tcell.KeyDown, widget.Next) - widget.SetKeyboardKey(tcell.KeyUp, widget.Prev) - widget.SetKeyboardKey(tcell.KeyEnter, widget.openTicket) - widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect) + widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select next item") + widget.SetKeyboardKey(tcell.KeyUp, widget.Prev, "Select previous item") + widget.SetKeyboardKey(tcell.KeyEnter, widget.openTicket, "Open item") + widget.SetKeyboardKey(tcell.KeyEsc, widget.Unselect, "Clear selection") } diff --git a/modules/zendesk/widget.go b/modules/zendesk/widget.go index 47a20ebf..cd05a60a 100644 --- a/modules/zendesk/widget.go +++ b/modules/zendesk/widget.go @@ -8,23 +8,8 @@ import ( "github.com/wtfutil/wtf/wtf" ) -const HelpText = ` - Keyboard commands for Zendesk: - - /: Show/hide this help window - j: Select the next item in the list - k: Select the previous item in the list - o: Open the selected item in a browser - - arrow down: Select the next item in the list - arrow up: Select the previous item in the list - - return: Open the selected item in a browser -` - // A Widget represents a Zendesk widget type Widget struct { - wtf.HelpfulWidget wtf.KeyboardWidget wtf.ScrollableWidget @@ -35,10 +20,9 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), - KeyboardWidget: wtf.NewKeyboardWidget(), - ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), - + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), + ScrollableWidget: wtf.NewScrollableWidget(app, settings.common, true), + settings: settings, } @@ -46,6 +30,8 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) + widget.KeyboardWidget.SetView(widget.View) + return &widget } diff --git a/wtf/helpful_widget.go b/wtf/helpful_widget.go deleted file mode 100644 index 3ca5807c..00000000 --- a/wtf/helpful_widget.go +++ /dev/null @@ -1,40 +0,0 @@ -package wtf - -import ( - "github.com/rivo/tview" -) - -type HelpfulWidget struct { - app *tview.Application - helpText string - pages *tview.Pages - view *tview.TextView -} - -func NewHelpfulWidget(app *tview.Application, pages *tview.Pages, helpText string) HelpfulWidget { - return HelpfulWidget{ - app: app, - helpText: helpText, - pages: pages, - } -} - -func (widget *HelpfulWidget) SetView(view *tview.TextView) { - widget.view = view -} - -func (widget *HelpfulWidget) ShowHelp() { - closeFunc := func() { - widget.pages.RemovePage("help") - widget.app.SetFocus(widget.view) - } - - modal := NewBillboardModal(widget.helpText, closeFunc) - - widget.pages.AddPage("help", modal, false, true) - widget.app.SetFocus(modal) - - widget.app.QueueUpdate(func() { - widget.app.Draw() - }) -} diff --git a/wtf/keyboard_widget.go b/wtf/keyboard_widget.go index 3c216fe5..b86bff82 100644 --- a/wtf/keyboard_widget.go +++ b/wtf/keyboard_widget.go @@ -1,20 +1,39 @@ package wtf import ( + "fmt" + "github.com/gdamore/tcell" + "github.com/rivo/tview" + "github.com/wtfutil/wtf/cfg" ) +type helpItem struct { + Key string + Text string +} + // KeyboardWidget manages keyboard control for a widget type KeyboardWidget struct { + app *tview.Application + pages *tview.Pages + view *tview.TextView + settings *cfg.Common + charMap map[string]func() keyMap map[tcell.Key]func() + helpMap []helpItem } // NewKeyboardWidget creates and returns a new instance of KeyboardWidget -func NewKeyboardWidget() KeyboardWidget { +func NewKeyboardWidget(app *tview.Application, pages *tview.Pages, settings *cfg.Common) KeyboardWidget { return KeyboardWidget{ - charMap: make(map[string]func()), - keyMap: make(map[tcell.Key]func()), + app: app, + pages: pages, + settings: settings, + charMap: make(map[string]func()), + keyMap: make(map[tcell.Key]func()), + helpMap: []helpItem{}, } } @@ -23,8 +42,9 @@ func NewKeyboardWidget() KeyboardWidget { // // widget.SetKeyboardChar("d", widget.deleteSelectedItem) // -func (widget *KeyboardWidget) SetKeyboardChar(char string, fn func()) { +func (widget *KeyboardWidget) SetKeyboardChar(char string, fn func(), helpText string) { widget.charMap[char] = fn + widget.helpMap = append(widget.helpMap, helpItem{char, helpText}) } // SetKeyboardKey sets a tcell.Key/function combination that responds to key presses @@ -32,8 +52,9 @@ func (widget *KeyboardWidget) SetKeyboardChar(char string, fn func()) { // // widget.SetKeyboardKey(tcell.KeyCtrlD, widget.deleteSelectedItem) // -func (widget *KeyboardWidget) SetKeyboardKey(key tcell.Key, fn func()) { +func (widget *KeyboardWidget) SetKeyboardKey(key tcell.Key, fn func(), helpText string) { widget.keyMap[key] = fn + widget.helpMap = append(widget.helpMap, helpItem{tcell.KeyNames[key], helpText}) } // InputCapture is the function passed to tview's SetInputCapture() function @@ -56,3 +77,34 @@ func (widget *KeyboardWidget) InputCapture(event *tcell.EventKey) *tcell.EventKe return event } + +func (widget *KeyboardWidget) helpText() string { + + str := "Keyboard commands for " + widget.settings.Module.Type + "\n\n" + + for _, item := range widget.helpMap { + str = str + fmt.Sprintf("%s: %s\n", item.Key, item.Text) + } + + return str +} + +func (widget *KeyboardWidget) SetView(view *tview.TextView) { + widget.view = view +} + +func (widget *KeyboardWidget) ShowHelp() { + closeFunc := func() { + widget.pages.RemovePage("help") + widget.app.SetFocus(widget.view) + } + + modal := NewBillboardModal(widget.helpText(), closeFunc) + + widget.pages.AddPage("help", modal, false, true) + widget.app.SetFocus(modal) + + widget.app.QueueUpdate(func() { + widget.app.Draw() + }) +}