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