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

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
This commit is contained in:
Sean Smith 2019-05-11 11:14:02 -04:00
parent e9e62c2065
commit 7f3daaac59
47 changed files with 269 additions and 641 deletions

View File

@ -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
}

View File

@ -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)
}
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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()

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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() {

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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() {

View File

@ -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
}

View File

@ -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() {

View File

@ -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
}

View File

@ -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() {

View File

@ -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()

View File

@ -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() {

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -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() {

View File

@ -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
}

View File

@ -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

View File

@ -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")
}

View File

@ -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
}

View File

@ -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")
}

View File

@ -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
}

View File

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

View File

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