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

Common help code into HelpfulWidget

This commit is contained in:
Chris Cummer 2018-08-01 15:54:29 -07:00
parent 00abe70309
commit 9154441c32
10 changed files with 90 additions and 173 deletions

View File

@ -26,11 +26,9 @@ const HelpText = `
`
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
pages *tview.Pages
gerrit *glb.Client
GerritProjects []*GerritProject
@ -74,16 +72,16 @@ func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
}
widget := Widget{
TextWidget: wtf.NewTextWidget("Gerrit", "gerrit", true),
app: app,
pages: pages,
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("Gerrit", "gerrit", true),
gerrit: gerrit,
Idx: 0,
}
widget.HelpfulWidget.SetView(widget.View)
widget.GerritProjects = widget.buildProjectCollection(wtf.Config.UList("wtf.mods.gerrit.projects"))
widget.View.SetInputCapture(widget.keyboardIntercept)
@ -148,7 +146,7 @@ func (widget *Widget) currentGerritProject() *GerritProject {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
widget.showHelp()
widget.ShowHelp()
return nil
case "h":
widget.Prev()
@ -172,16 +170,3 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event
}
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}

View File

@ -24,6 +24,7 @@ const modalWidth = 80
const modalHeight = 7
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
@ -34,13 +35,15 @@ type Widget struct {
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget("Git", "git", true),
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("Git", "git", true),
app: app,
Idx: 0,
pages: pages,
}
widget.HelpfulWidget.SetView(widget.View)
widget.View.SetInputCapture(widget.keyboardIntercept)
return &widget
@ -173,7 +176,7 @@ func (widget *Widget) gitRepos(repoPaths []string) []*GitRepo {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
widget.showHelp()
widget.ShowHelp()
return nil
case "h":
widget.Prev()
@ -200,16 +203,3 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event
}
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}

View File

@ -19,26 +19,24 @@ const HelpText = `
`
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
pages *tview.Pages
GithubRepos []*GithubRepo
Idx int
}
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget("GitHub", "github", true),
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("GitHub", "github", true),
app: app,
Idx: 0,
pages: pages,
Idx: 0,
}
widget.GithubRepos = widget.buildRepoCollection(wtf.Config.UMap("wtf.mods.github.repositories"))
widget.HelpfulWidget.SetView(widget.View)
widget.View.SetInputCapture(widget.keyboardIntercept)
return &widget
@ -101,7 +99,7 @@ func (widget *Widget) currentGithubRepo() *GithubRepo {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
widget.showHelp()
widget.ShowHelp()
return nil
case "h":
widget.Prev()
@ -125,16 +123,3 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event
}
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}

View File

@ -22,11 +22,9 @@ const HelpText = `
`
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
pages *tview.Pages
gitlab *glb.Client
GitlabProjects []*GitlabProject
@ -47,10 +45,8 @@ func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
}
widget := Widget{
TextWidget: wtf.NewTextWidget("Gitlab", "gitlab", true),
app: app,
pages: pages,
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("Gitlab", "gitlab", true),
gitlab: gitlab,
@ -59,6 +55,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget.GitlabProjects = widget.buildProjectCollection(wtf.Config.UMap("wtf.mods.gitlab.projects"))
widget.HelpfulWidget.SetView(widget.View)
widget.View.SetInputCapture(widget.keyboardIntercept)
return &widget
@ -121,7 +118,7 @@ func (widget *Widget) currentGitlabProject() *GitlabProject {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
widget.showHelp()
widget.ShowHelp()
return nil
case "h":
widget.Prev()
@ -145,16 +142,3 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event
}
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}

View File

@ -22,21 +22,20 @@ const HelpText = `
`
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
pages *tview.Pages
result *SearchResult
selected int
}
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget("Jira", "jira", true),
app: app,
pages: pages,
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("Jira", "jira", true),
}
widget.HelpfulWidget.SetView(widget.View)
widget.unselect()
widget.View.SetInputCapture(widget.keyboardIntercept)
@ -173,7 +172,7 @@ func getProjects() []string {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
widget.showHelp()
widget.ShowHelp()
case "j":
// Select the next item down
widget.next()
@ -210,16 +209,3 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event
}
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}

View File

@ -22,25 +22,24 @@ const HelpText = `
`
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
filePath string
pages *tview.Pages
}
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget("TextFile", "textfile", true),
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("TextFile", "textfile", true),
app: app,
filePath: wtf.Config.UString("wtf.mods.textfile.filePath"),
pages: pages,
}
widget.HelpfulWidget.SetView(widget.View)
widget.View.SetWrap(true)
widget.View.SetWordWrap(true)
widget.View.SetInputCapture(widget.keyboardIntercept)
return &widget
@ -155,7 +154,7 @@ func (widget *Widget) fileName() string {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
widget.showHelp()
widget.ShowHelp()
return nil
case "o":
wtf.OpenFile(widget.filePath)
@ -164,16 +163,3 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}

View File

@ -36,6 +36,7 @@ const modalWidth = 80
const modalHeight = 7
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
@ -46,7 +47,8 @@ type Widget struct {
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget("Todo", "todo", true),
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("Todo", "todo", true),
app: app,
filePath: wtf.Config.UString("wtf.mods.todo.filename"),
@ -55,6 +57,8 @@ func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
}
widget.init()
widget.HelpfulWidget.SetView(widget.View)
widget.View.SetScrollable(true)
widget.View.SetRegions(true)
widget.View.SetInputCapture(widget.keyboardIntercept)
@ -116,7 +120,7 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
widget.display()
return nil
case "/":
widget.showHelp()
widget.ShowHelp()
return nil
case "j":
// Select the next item down
@ -222,19 +226,6 @@ func (widget *Widget) persist() {
}
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}
/* -------------------- Modal Form -------------------- */
func (widget *Widget) addButtons(form *tview.Form, saveFctn func()) {

View File

@ -28,24 +28,23 @@ const HelpText = `
`
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
pages *tview.Pages
projects []*Project
idx int
}
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{
TextWidget: wtf.NewTextWidget("Todoist", "todoist", true),
app: app,
pages: pages,
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("Todoist", "todoist", true),
}
widget.loadAPICredentials()
widget.projects = loadProjects()
widget.HelpfulWidget.SetView(widget.View)
widget.View.SetInputCapture(widget.keyboardIntercept)
return &widget
@ -139,7 +138,7 @@ func (w *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
w.showHelp()
w.ShowHelp()
return nil
case "r":
w.Refresh()
@ -188,19 +187,6 @@ func loadProjects() []*Project {
return projects
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
widget.app.Draw()
}
func (w *Widget) vimBindings(event *tcell.EventKey) tcell.Key {
switch string(event.Rune()) {
case "h":

View File

@ -22,11 +22,9 @@ const HelpText = `
// Widget is the container for weather data.
type Widget struct {
wtf.HelpfulWidget
wtf.TextWidget
app *tview.Application
pages *tview.Pages
APIKey string
Data []*owm.CurrentWeatherData
Idx int
@ -36,16 +34,15 @@ type Widget struct {
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
configKey := "weather"
widget := Widget{
TextWidget: wtf.NewTextWidget("Weather", configKey, true),
app: app,
pages: pages,
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget("Weather", configKey, true),
Idx: 0,
}
widget.loadAPICredentials()
widget.HelpfulWidget.SetView(widget.View)
widget.View.SetInputCapture(widget.keyboardIntercept)
return &widget
@ -160,7 +157,7 @@ func (widget *Widget) defaultCityCodes() []interface{} {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) {
case "/":
widget.showHelp()
widget.ShowHelp()
return nil
case "h":
widget.Prev()
@ -190,15 +187,3 @@ func (widget *Widget) loadAPICredentials() {
os.Getenv("WTF_OWM_API_KEY"),
)
}
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(HelpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
}

39
wtf/helpful_widget.go Normal file
View File

@ -0,0 +1,39 @@
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 {
widget := HelpfulWidget{
app: app,
helpText: helpText,
pages: pages,
}
return widget
}
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.Draw()
}