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() + }) +}