diff --git a/app/wtf_app.go b/app/wtf_app.go index b6c799f2..53e5c96b 100644 --- a/app/wtf_app.go +++ b/app/wtf_app.go @@ -22,8 +22,8 @@ type WtfApp struct { config *config.Config configFilePath string display *Display - ghUser *support.GitHubUser focusTracker FocusTracker + ghUser *support.GitHubUser pages *tview.Pages validator *ModuleValidator widgets []wtf.Wtfable diff --git a/modules/azuredevops/widget.go b/modules/azuredevops/widget.go index fa92a587..1d28162d 100644 --- a/modules/azuredevops/widget.go +++ b/modules/azuredevops/widget.go @@ -21,7 +21,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } diff --git a/modules/bamboohr/widget.go b/modules/bamboohr/widget.go index 089819e4..89aa7a50 100644 --- a/modules/bamboohr/widget.go +++ b/modules/bamboohr/widget.go @@ -21,7 +21,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/buildkite/keyboard.go b/modules/buildkite/keyboard.go index d4503c7a..6f7282e1 100644 --- a/modules/buildkite/keyboard.go +++ b/modules/buildkite/keyboard.go @@ -1,5 +1,5 @@ package buildkite func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) } diff --git a/modules/buildkite/widget.go b/modules/buildkite/widget.go index 0d3ca075..b8ff0462 100644 --- a/modules/buildkite/widget.go +++ b/modules/buildkite/widget.go @@ -7,12 +7,7 @@ import ( "github.com/wtfutil/wtf/view" ) -const HelpText = ` - Keyboard commands for Buildkite: -` - type Widget struct { - view.KeyboardWidget view.TextWidget settings *Settings @@ -22,13 +17,11 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - TextWidget: view.NewTextWidget(app, settings.common), - settings: settings, + TextWidget: view.NewTextWidget(app, pages, settings.common), + settings: settings, } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.View.SetScrollable(true) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/cds/favorites/keyboard.go b/modules/cds/favorites/keyboard.go index d58b0e51..1ce418c2 100644 --- a/modules/cds/favorites/keyboard.go +++ b/modules/cds/favorites/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next workflow") widget.SetKeyboardChar("k", widget.Prev, "Select previous workflow") diff --git a/modules/cds/favorites/widget.go b/modules/cds/favorites/widget.go index c447549f..b9d55d21 100644 --- a/modules/cds/favorites/widget.go +++ b/modules/cds/favorites/widget.go @@ -14,7 +14,6 @@ import ( // Widget define wtf widget to register widget later type Widget struct { view.MultiSourceWidget - view.KeyboardWidget view.TextWidget workflows []sdk.Workflow @@ -30,16 +29,14 @@ type Widget struct { // NewWidget creates a new instance of the widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "workflow", "workflows"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } widget.initializeKeyboardControls() widget.View.SetRegions(true) - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) widget.Unselect() @@ -110,11 +107,6 @@ func (widget *Widget) Refresh() { widget.display() } -// HelpText displays the widgets controls -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) buildWorkflowsCollection() []sdk.Workflow { diff --git a/modules/cds/queue/keyboard.go b/modules/cds/queue/keyboard.go index df14e889..3aeab60b 100644 --- a/modules/cds/queue/keyboard.go +++ b/modules/cds/queue/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next workflow") widget.SetKeyboardChar("k", widget.Prev, "Select previous workflow") diff --git a/modules/cds/queue/widget.go b/modules/cds/queue/widget.go index 5706380f..9433ff55 100644 --- a/modules/cds/queue/widget.go +++ b/modules/cds/queue/widget.go @@ -14,7 +14,6 @@ import ( // Widget define wtf widget to register widget later type Widget struct { view.MultiSourceWidget - view.KeyboardWidget view.TextWidget filters []string @@ -30,16 +29,14 @@ type Widget struct { // NewWidget creates a new instance of the widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "workflow", "workflows"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } widget.initializeKeyboardControls() widget.View.SetRegions(true) - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) widget.Unselect() @@ -111,11 +108,6 @@ func (widget *Widget) Refresh() { widget.display() } -// HelpText displays the widgets controls -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) currentFilter() string { diff --git a/modules/cds/status/keyboard.go b/modules/cds/status/keyboard.go index 2129d2a2..bf6cb900 100644 --- a/modules/cds/status/keyboard.go +++ b/modules/cds/status/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next line") widget.SetKeyboardChar("k", widget.Prev, "Select previous line") diff --git a/modules/cds/status/widget.go b/modules/cds/status/widget.go index 79ac05e3..d58b5199 100644 --- a/modules/cds/status/widget.go +++ b/modules/cds/status/widget.go @@ -14,7 +14,6 @@ import ( // Widget define wtf widget to register widget later type Widget struct { view.MultiSourceWidget - view.KeyboardWidget view.TextWidget filters []string @@ -30,16 +29,14 @@ type Widget struct { // NewWidget creates a new instance of the widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "workflow", "workflows"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } widget.initializeKeyboardControls() widget.View.SetRegions(true) - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) widget.Unselect() @@ -111,11 +108,6 @@ func (widget *Widget) Refresh() { widget.display() } -// HelpText displays the widgets controls -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) openWorkflow() { diff --git a/modules/circleci/widget.go b/modules/circleci/widget.go index e9ec1f8e..b3018cbf 100644 --- a/modules/circleci/widget.go +++ b/modules/circleci/widget.go @@ -16,7 +16,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), Client: NewClient(settings.apiKey), settings: settings, diff --git a/modules/clocks/widget.go b/modules/clocks/widget.go index 24c317b2..d25b61ab 100644 --- a/modules/clocks/widget.go +++ b/modules/clocks/widget.go @@ -17,7 +17,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), app: app, settings: settings, diff --git a/modules/cmdrunner/widget.go b/modules/cmdrunner/widget.go index 0eca5aec..3bb0248a 100644 --- a/modules/cmdrunner/widget.go +++ b/modules/cmdrunner/widget.go @@ -29,7 +29,7 @@ type Widget struct { // NewWidget creates a new instance of the widget func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, buffer: &bytes.Buffer{}, diff --git a/modules/cryptoexchanges/bittrex/widget.go b/modules/cryptoexchanges/bittrex/widget.go index 19648e30..f0d14996 100644 --- a/modules/cryptoexchanges/bittrex/widget.go +++ b/modules/cryptoexchanges/bittrex/widget.go @@ -31,7 +31,7 @@ type Widget struct { // NewWidget Make new instance of widget func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, summaryList: summaryList{}, diff --git a/modules/cryptoexchanges/blockfolio/widget.go b/modules/cryptoexchanges/blockfolio/widget.go index 675640c7..d1f15dd4 100644 --- a/modules/cryptoexchanges/blockfolio/widget.go +++ b/modules/cryptoexchanges/blockfolio/widget.go @@ -20,7 +20,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), device_token: settings.deviceToken, settings: settings, diff --git a/modules/cryptoexchanges/cryptolive/widget.go b/modules/cryptoexchanges/cryptolive/widget.go index 75606d07..bf6c8cd4 100644 --- a/modules/cryptoexchanges/cryptolive/widget.go +++ b/modules/cryptoexchanges/cryptolive/widget.go @@ -22,7 +22,7 @@ type Widget struct { // NewWidget Make new instance of widget func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), priceWidget: price.NewWidget(settings.priceSettings), toplistWidget: toplist.NewWidget(settings.toplistSettings), diff --git a/modules/datadog/keyboard.go b/modules/datadog/keyboard.go index 3538fdc2..bf0d3f3c 100644 --- a/modules/datadog/keyboard.go +++ b/modules/datadog/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/datadog/widget.go b/modules/datadog/widget.go index c416a484..e3fe94da 100644 --- a/modules/datadog/widget.go +++ b/modules/datadog/widget.go @@ -10,7 +10,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget monitors []datadog.Monitor @@ -20,15 +19,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) @@ -66,10 +63,6 @@ func (widget *Widget) Render() { widget.Redraw(widget.content) } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) content() (string, string, bool) { diff --git a/modules/devto/keyboard.go b/modules/devto/keyboard.go index 97f549bb..b476d574 100644 --- a/modules/devto/keyboard.go +++ b/modules/devto/keyboard.go @@ -3,7 +3,7 @@ package devto import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("d", widget.Next, "Select next item") widget.SetKeyboardChar("a", widget.Prev, "Select previous item") diff --git a/modules/devto/widget.go b/modules/devto/widget.go index 9ea3cc35..b532e78d 100644 --- a/modules/devto/widget.go +++ b/modules/devto/widget.go @@ -12,8 +12,8 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget + articles []devto.ListedArticle settings *Settings err error @@ -21,8 +21,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := &Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } @@ -30,7 +29,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.SetRenderFunction(widget.Render) widget.View.SetScrollable(true) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/digitalclock/widget.go b/modules/digitalclock/widget.go index 4981a245..ea6fd0ee 100644 --- a/modules/digitalclock/widget.go +++ b/modules/digitalclock/widget.go @@ -16,7 +16,7 @@ type Widget struct { // NewWidget creates a new widget using settings func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), app: app, settings: settings, diff --git a/modules/digitalocean/keyboard.go b/modules/digitalocean/keyboard.go index f33bd506..a33b6c3c 100644 --- a/modules/digitalocean/keyboard.go +++ b/modules/digitalocean/keyboard.go @@ -3,7 +3,7 @@ package digitalocean import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("?", widget.showInfo, "Show info about the selected droplet") diff --git a/modules/digitalocean/widget.go b/modules/digitalocean/widget.go index 08fb731e..3a7df45d 100644 --- a/modules/digitalocean/widget.go +++ b/modules/digitalocean/widget.go @@ -30,7 +30,6 @@ func (t *tokenSource) Token() (*oauth2.Token, error) { // Widget is the container for droplet data type Widget struct { - view.KeyboardWidget view.ScrollableWidget app *tview.Application @@ -45,8 +44,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{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), app: app, pages: pages, @@ -54,7 +52,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.View.SetScrollable(true) @@ -79,11 +76,6 @@ func (widget *Widget) Fetch() error { return err } -// HelpText returns the help text for this widget -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - // Next selects the next item in the list func (widget *Widget) Next() { widget.ScrollableWidget.Next() diff --git a/modules/docker/widget.go b/modules/docker/widget.go index 28632b4d..d0479f7a 100644 --- a/modules/docker/widget.go +++ b/modules/docker/widget.go @@ -18,7 +18,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } diff --git a/modules/exchangerates/widget.go b/modules/exchangerates/widget.go index 59e85a07..8d45b8bc 100644 --- a/modules/exchangerates/widget.go +++ b/modules/exchangerates/widget.go @@ -20,7 +20,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } diff --git a/modules/feedreader/keyboard.go b/modules/feedreader/keyboard.go index d47718c5..928033f7 100644 --- a/modules/feedreader/keyboard.go +++ b/modules/feedreader/keyboard.go @@ -3,7 +3,7 @@ package feedreader import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/feedreader/widget.go b/modules/feedreader/widget.go index af33ac0e..77adbf97 100644 --- a/modules/feedreader/widget.go +++ b/modules/feedreader/widget.go @@ -28,7 +28,6 @@ type FeedItem struct { // Widget is the container for RSS and Atom data type Widget struct { - view.KeyboardWidget view.ScrollableWidget stories []*FeedItem @@ -66,8 +65,7 @@ func getShowText(feedItem *FeedItem, showType ShowType) string { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := &Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), parser: gofeed.NewParser(), settings: settings, @@ -76,7 +74,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/finnhub/widget.go b/modules/finnhub/widget.go index e86563bb..1a105aa7 100644 --- a/modules/finnhub/widget.go +++ b/modules/finnhub/widget.go @@ -19,8 +19,8 @@ type Widget struct { // NewWidget .. func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), Client: NewClient(settings.symbols, settings.apiKey), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/football/widget.go b/modules/football/widget.go index 73eb632b..16bd8edb 100644 --- a/modules/football/widget.go +++ b/modules/football/widget.go @@ -38,6 +38,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { var widget Widget + leagueId, err := getLeague(settings.league) if err != nil { widget = Widget{ @@ -45,14 +46,17 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * Client: NewClient(settings.apiKey), settings: settings, } + return &widget } + widget = Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), Client: NewClient(settings.apiKey), League: leagueId, settings: settings, } + return &widget } diff --git a/modules/gcal/widget.go b/modules/gcal/widget.go index 389a8678..6c365989 100644 --- a/modules/gcal/widget.go +++ b/modules/gcal/widget.go @@ -16,7 +16,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), app: app, settings: settings, diff --git a/modules/gerrit/keyboard.go b/modules/gerrit/keyboard.go index d9307caa..50c13ffe 100644 --- a/modules/gerrit/keyboard.go +++ b/modules/gerrit/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("h", widget.prevProject, "Select previous project") widget.SetKeyboardChar("l", widget.nextProject, "Select next project") diff --git a/modules/gerrit/widget.go b/modules/gerrit/widget.go index 61c4cdb9..585e43fa 100644 --- a/modules/gerrit/widget.go +++ b/modules/gerrit/widget.go @@ -13,7 +13,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.TextWidget gerrit *glb.Client @@ -32,8 +31,7 @@ var ( func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), Idx: 0, @@ -41,7 +39,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) @@ -92,10 +89,6 @@ func (widget *Widget) Refresh() { widget.display() } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) nextProject() { diff --git a/modules/git/keyboard.go b/modules/git/keyboard.go index 783a1fcf..65092e34 100644 --- a/modules/git/keyboard.go +++ b/modules/git/keyboard.go @@ -3,7 +3,7 @@ package git import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("l", widget.NextSource, "Select next source") widget.SetKeyboardChar("h", widget.PrevSource, "Select previous source") diff --git a/modules/git/settings.go b/modules/git/settings.go index 5da03364..7cf4e0f9 100644 --- a/modules/git/settings.go +++ b/modules/git/settings.go @@ -36,7 +36,3 @@ func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *co func (widget *Widget) ConfigText() string { return utils.HelpFromInterface(Settings{}) } - -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} diff --git a/modules/git/widget.go b/modules/git/widget.go index 91163b69..80e99bdb 100644 --- a/modules/git/widget.go +++ b/modules/git/widget.go @@ -18,7 +18,6 @@ const ( ) type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.TextWidget @@ -31,9 +30,8 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "repository", "repositories"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), app: app, pages: pages, @@ -41,7 +39,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) diff --git a/modules/github/keyboard.go b/modules/github/keyboard.go index 9ea92554..13aec5f6 100644 --- a/modules/github/keyboard.go +++ b/modules/github/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/github/widget.go b/modules/github/widget.go index 9d05e354..33ea2a80 100644 --- a/modules/github/widget.go +++ b/modules/github/widget.go @@ -12,7 +12,6 @@ import ( // Widget define wtf widget to register widget later type Widget struct { view.MultiSourceWidget - view.KeyboardWidget view.TextWidget GithubRepos []*Repo @@ -26,9 +25,8 @@ type Widget struct { // NewWidget creates a new instance of the widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "repository", "repositories"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } @@ -37,7 +35,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetRegions(true) - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) widget.Unselect() @@ -103,11 +100,6 @@ func (widget *Widget) Refresh() { widget.display() } -// HelpText displays the widgets controls -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) buildRepoCollection(repoData []string) []*Repo { diff --git a/modules/gitlab/keyboard.go b/modules/gitlab/keyboard.go index eb655b72..0bbee06c 100644 --- a/modules/gitlab/keyboard.go +++ b/modules/gitlab/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/gitlab/widget.go b/modules/gitlab/widget.go index a875dd01..27293520 100644 --- a/modules/gitlab/widget.go +++ b/modules/gitlab/widget.go @@ -15,7 +15,6 @@ type ContentItem struct { type Widget struct { view.MultiSourceWidget - view.KeyboardWidget view.TextWidget GitlabProjects []*GitlabProject @@ -34,9 +33,8 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * context, err := newContext(settings) widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "repository", "repositories"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), context: context, settings: settings, @@ -48,7 +46,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetRegions(true) - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) widget.Unselect() @@ -73,10 +70,6 @@ func (widget *Widget) Refresh() { widget.display() } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - // SetItemCount sets the amount of PRs RRs and other PRs throughout the widgets display creation func (widget *Widget) SetItemCount(items int) { widget.maxItems = items diff --git a/modules/gitlabtodo/widget.go b/modules/gitlabtodo/widget.go index 0b98500e..19555433 100644 --- a/modules/gitlabtodo/widget.go +++ b/modules/gitlabtodo/widget.go @@ -10,7 +10,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget todos []*gitlab.Todo @@ -21,8 +20,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := &Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } @@ -31,7 +29,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/gitter/keyboard.go b/modules/gitter/keyboard.go index 4bfe71c7..39607c4e 100644 --- a/modules/gitter/keyboard.go +++ b/modules/gitter/keyboard.go @@ -3,7 +3,7 @@ package gitter import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/gitter/widget.go b/modules/gitter/widget.go index 2507c9dc..6ab8ac0b 100644 --- a/modules/gitter/widget.go +++ b/modules/gitter/widget.go @@ -10,7 +10,6 @@ import ( // A Widget represents a Gitter widget type Widget struct { - view.KeyboardWidget view.ScrollableWidget messages []Message @@ -20,15 +19,13 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Refresh) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) @@ -65,10 +62,6 @@ func (widget *Widget) Refresh() { widget.display() } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) display() { diff --git a/modules/googleanalytics/widget.go b/modules/googleanalytics/widget.go index d3a30094..fad91a0d 100644 --- a/modules/googleanalytics/widget.go +++ b/modules/googleanalytics/widget.go @@ -13,7 +13,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/grafana/widget.go b/modules/grafana/widget.go index e83d853b..2af2bfbb 100644 --- a/modules/grafana/widget.go +++ b/modules/grafana/widget.go @@ -10,7 +10,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.TextWidget Client *Client @@ -23,8 +22,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), Client: NewClient(settings), Selected: -1, @@ -34,7 +32,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetRegions(true) - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) @@ -91,10 +88,6 @@ func (widget *Widget) Unselect() { /* -------------------- Unexported Functions -------------------- */ -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - func (widget *Widget) openAlert() { currentSelection := widget.View.GetHighlights() if widget.Selected >= 0 && currentSelection[0] != "" { diff --git a/modules/gspreadsheets/widget.go b/modules/gspreadsheets/widget.go index b51d79c9..f399e40b 100644 --- a/modules/gspreadsheets/widget.go +++ b/modules/gspreadsheets/widget.go @@ -19,7 +19,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/hackernews/keyboard.go b/modules/hackernews/keyboard.go index b6d1db87..bb572599 100644 --- a/modules/hackernews/keyboard.go +++ b/modules/hackernews/keyboard.go @@ -3,7 +3,7 @@ package hackernews import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/hackernews/widget.go b/modules/hackernews/widget.go index 52def0e8..4da25c2b 100644 --- a/modules/hackernews/widget.go +++ b/modules/hackernews/widget.go @@ -11,7 +11,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget stories []Story @@ -21,15 +20,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := &Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/hibp/widget.go b/modules/hibp/widget.go index 91cb4e60..862d4d13 100644 --- a/modules/hibp/widget.go +++ b/modules/hibp/widget.go @@ -19,7 +19,7 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := &Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/ipaddresses/ipapi/widget.go b/modules/ipaddresses/ipapi/widget.go index ace0ef92..7d0c3b90 100644 --- a/modules/ipaddresses/ipapi/widget.go +++ b/modules/ipaddresses/ipapi/widget.go @@ -38,7 +38,7 @@ type ipinfo struct { // NewWidget constructor func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/ipaddresses/ipinfo/widget.go b/modules/ipaddresses/ipinfo/widget.go index ce6fdf01..451417ad 100644 --- a/modules/ipaddresses/ipinfo/widget.go +++ b/modules/ipaddresses/ipinfo/widget.go @@ -32,7 +32,7 @@ type ipinfo struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/jenkins/keyboard.go b/modules/jenkins/keyboard.go index b6fc1110..9aa3155d 100644 --- a/modules/jenkins/keyboard.go +++ b/modules/jenkins/keyboard.go @@ -3,7 +3,7 @@ package jenkins import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/jenkins/widget.go b/modules/jenkins/widget.go index 6f466a33..36b05a36 100644 --- a/modules/jenkins/widget.go +++ b/modules/jenkins/widget.go @@ -10,7 +10,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget settings *Settings @@ -20,15 +19,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/jira/keyboard.go b/modules/jira/keyboard.go index 34083a7d..dcbf9b67 100644 --- a/modules/jira/keyboard.go +++ b/modules/jira/keyboard.go @@ -5,7 +5,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/jira/widget.go b/modules/jira/widget.go index 10b4c97d..92c458dc 100644 --- a/modules/jira/widget.go +++ b/modules/jira/widget.go @@ -9,7 +9,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget result *SearchResult @@ -19,15 +18,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/kubernetes/widget.go b/modules/kubernetes/widget.go index 0d40d8d1..d36193eb 100644 --- a/modules/kubernetes/widget.go +++ b/modules/kubernetes/widget.go @@ -25,7 +25,7 @@ type Widget struct { // NewWidget creates a new instance of the widget func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), objects: settings.objects, title: settings.title, diff --git a/modules/logger/widget.go b/modules/logger/widget.go index 9f18a04e..d45ff99d 100644 --- a/modules/logger/widget.go +++ b/modules/logger/widget.go @@ -24,7 +24,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), app: app, filePath: log.LogFilePath(), diff --git a/modules/mercurial/keyboard.go b/modules/mercurial/keyboard.go index b775ce10..daa9b5a9 100644 --- a/modules/mercurial/keyboard.go +++ b/modules/mercurial/keyboard.go @@ -3,7 +3,7 @@ package mercurial import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("l", widget.NextSource, "Select next source") widget.SetKeyboardChar("h", widget.PrevSource, "Select previous source") diff --git a/modules/mercurial/widget.go b/modules/mercurial/widget.go index d7677624..efe7a104 100644 --- a/modules/mercurial/widget.go +++ b/modules/mercurial/widget.go @@ -15,7 +15,6 @@ const ( // A Widget represents a Mercurial widget type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.TextWidget @@ -28,9 +27,8 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "repository", "repositories"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), app: app, pages: pages, @@ -40,7 +38,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.SetDisplayFunction(widget.display) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) @@ -82,10 +79,6 @@ func (widget *Widget) Refresh() { widget.display() } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) addCheckoutButton(form *tview.Form, fctn func()) { diff --git a/modules/nbascore/keyboard.go b/modules/nbascore/keyboard.go index 5861961a..47f8d32f 100644 --- a/modules/nbascore/keyboard.go +++ b/modules/nbascore/keyboard.go @@ -3,7 +3,7 @@ package nbascore import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("l", widget.next, "Select next item") widget.SetKeyboardChar("h", widget.prev, "Select previous item") diff --git a/modules/nbascore/widget.go b/modules/nbascore/widget.go index 57bbe944..a38132c8 100644 --- a/modules/nbascore/widget.go +++ b/modules/nbascore/widget.go @@ -17,7 +17,6 @@ var offset = 0 // A Widget represents an NBA Score widget type Widget struct { - view.KeyboardWidget view.TextWidget language string @@ -27,14 +26,12 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.View.SetScrollable(true) @@ -47,10 +44,6 @@ func (widget *Widget) Refresh() { widget.Redraw(widget.nbascore) } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - func (widget *Widget) nbascore() (string, string, bool) { title := widget.CommonSettings().Title cur := time.Now().AddDate(0, 0, offset) // Go back/forward offset days diff --git a/modules/newrelic/widget.go b/modules/newrelic/widget.go index 16a6348e..0a748228 100644 --- a/modules/newrelic/widget.go +++ b/modules/newrelic/widget.go @@ -9,7 +9,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.TextWidget @@ -20,15 +19,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "applicationID", "applicationIDs"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) for _, id := range utils.ToInts(widget.settings.applicationIDs) { widget.Clients = append(widget.Clients, NewClient(widget.settings.apiKey, id)) @@ -53,10 +50,6 @@ func (widget *Widget) Refresh() { /* -------------------- Unexported Functions -------------------- */ -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) currentData() *Client2 { diff --git a/modules/opsgenie/widget.go b/modules/opsgenie/widget.go index 1e53f65d..c6d1ee0e 100644 --- a/modules/opsgenie/widget.go +++ b/modules/opsgenie/widget.go @@ -17,7 +17,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/pagerduty/widget.go b/modules/pagerduty/widget.go index 1361c780..eaf64fe4 100644 --- a/modules/pagerduty/widget.go +++ b/modules/pagerduty/widget.go @@ -25,7 +25,7 @@ type Widget struct { // NewWidget creates and returns an instance of PagerDuty widget func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/pihole/keyboard.go b/modules/pihole/keyboard.go index 36309793..0d61e141 100644 --- a/modules/pihole/keyboard.go +++ b/modules/pihole/keyboard.go @@ -1,7 +1,7 @@ package pihole func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("d", widget.disable, "disable Pi-hole") widget.SetKeyboardChar("e", widget.enable, "enable Pi-hole") diff --git a/modules/pihole/widget.go b/modules/pihole/widget.go index 4f108c17..571f7dd3 100644 --- a/modules/pihole/widget.go +++ b/modules/pihole/widget.go @@ -8,7 +8,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.TextWidget @@ -19,13 +18,11 @@ type Widget struct { //func NewWidget(app *tview.Application, settings *Settings) *Widget { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - TextWidget: view.NewTextWidget(app, settings.common), - settings: settings, + TextWidget: view.NewTextWidget(app, nil, settings.common), + settings: settings, } widget.settings.common.RefreshInterval = 30 - widget.View.SetInputCapture(widget.InputCapture) widget.initializeKeyboardControls() widget.SetDisplayFunction(widget.Refresh) widget.View.SetWordWrap(true) @@ -46,10 +43,6 @@ func (widget *Widget) Refresh() { widget.Redraw(widget.content) } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) content() (string, string, bool) { diff --git a/modules/pocket/keyboard.go b/modules/pocket/keyboard.go index 2b3263c0..b51a0226 100644 --- a/modules/pocket/keyboard.go +++ b/modules/pocket/keyboard.go @@ -3,8 +3,8 @@ package pocket import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { + widget.InitializeRefreshKeyboardControl(widget.Refresh) - widget.InitializeCommonControls(widget.Refresh) widget.SetKeyboardChar("a", widget.toggleLink, "Toggle Link") widget.SetKeyboardChar("t", widget.toggleView, "Toggle view (links ,archived links)") widget.SetKeyboardKey(tcell.KeyDown, widget.Next, "Select Next Link") diff --git a/modules/pocket/widget.go b/modules/pocket/widget.go index 5ef56927..1e2a6959 100644 --- a/modules/pocket/widget.go +++ b/modules/pocket/widget.go @@ -14,7 +14,6 @@ import ( type Widget struct { view.ScrollableWidget - view.KeyboardWidget settings *Settings client *Client @@ -24,15 +23,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, nil, settings.common), settings: settings, client: NewClient(settings.consumerKey, "http://localhost"), archivedView: false, } widget.CommonSettings() - widget.View.SetInputCapture(widget.InputCapture) widget.SetRenderFunction(widget.Render) widget.View.SetScrollable(true) widget.View.SetRegions(true) diff --git a/modules/power/widget.go b/modules/power/widget.go index 218c339c..bc474090 100644 --- a/modules/power/widget.go +++ b/modules/power/widget.go @@ -17,7 +17,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), Battery: NewBattery(), diff --git a/modules/rollbar/keyboard.go b/modules/rollbar/keyboard.go index 09870c6a..2d4c5a5a 100644 --- a/modules/rollbar/keyboard.go +++ b/modules/rollbar/keyboard.go @@ -3,7 +3,7 @@ package rollbar import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/rollbar/widget.go b/modules/rollbar/widget.go index a9e4d9aa..e9894cbe 100644 --- a/modules/rollbar/widget.go +++ b/modules/rollbar/widget.go @@ -10,7 +10,6 @@ import ( // A Widget represents a Rollbar widget type Widget struct { - view.KeyboardWidget view.ScrollableWidget items *Result @@ -21,15 +20,13 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/security/widget.go b/modules/security/widget.go index fb3511ea..0a6e1604 100644 --- a/modules/security/widget.go +++ b/modules/security/widget.go @@ -16,7 +16,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/spacex/widget.go b/modules/spacex/widget.go index 492cf512..bfbf6258 100644 --- a/modules/spacex/widget.go +++ b/modules/spacex/widget.go @@ -17,7 +17,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := &Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } return widget diff --git a/modules/spotify/keyboard.go b/modules/spotify/keyboard.go index cbdedc3f..70f105cb 100644 --- a/modules/spotify/keyboard.go +++ b/modules/spotify/keyboard.go @@ -7,7 +7,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("l", widget.next, "Select next item") widget.SetKeyboardChar("h", widget.previous, "Select previous item") diff --git a/modules/spotify/widget.go b/modules/spotify/widget.go index 803e80cb..71d4afa5 100644 --- a/modules/spotify/widget.go +++ b/modules/spotify/widget.go @@ -11,7 +11,6 @@ import ( // A Widget represents a Spotify widget type Widget struct { - view.KeyboardWidget view.TextWidget client spotigopher.SpotifyClient @@ -22,8 +21,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{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), Info: spotigopher.Info{}, client: spotigopher.NewClient(), @@ -34,7 +32,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.settings.common.RefreshInterval = 5 widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.View.SetWrap(true) widget.View.SetWordWrap(true) @@ -54,10 +51,6 @@ func (w *Widget) Refresh() { w.Redraw(w.createOutput) } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - func (w *Widget) createOutput() (string, string, bool) { var content string err := w.refreshSpotifyInfos() diff --git a/modules/spotifyweb/keyboard.go b/modules/spotifyweb/keyboard.go index ce08599e..7cf7610e 100644 --- a/modules/spotifyweb/keyboard.go +++ b/modules/spotifyweb/keyboard.go @@ -7,7 +7,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("h", widget.selectPrevious, "Select previous item") widget.SetKeyboardChar("l", widget.selectNext, "Select next item") diff --git a/modules/spotifyweb/widget.go b/modules/spotifyweb/widget.go index 5c166f44..858987d1 100644 --- a/modules/spotifyweb/widget.go +++ b/modules/spotifyweb/widget.go @@ -32,7 +32,6 @@ type Info struct { // Widget is the struct used by all WTF widgets to transfer to the main widget controller type Widget struct { - view.KeyboardWidget view.TextWidget Info @@ -72,8 +71,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * var playerState *spotify.PlayerState widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), Info: Info{}, @@ -124,7 +122,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.settings.common.RefreshInterval = 5 widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.View.SetWrap(true) widget.View.SetWordWrap(true) @@ -165,10 +162,6 @@ func (w *Widget) Refresh() { w.Redraw(w.createOutput) } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - func (w *Widget) createOutput() (string, string, bool) { var output string diff --git a/modules/status/widget.go b/modules/status/widget.go index 1b6f844e..867089dd 100644 --- a/modules/status/widget.go +++ b/modules/status/widget.go @@ -15,7 +15,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), CurrentIcon: 0, diff --git a/modules/subreddit/keyboard.go b/modules/subreddit/keyboard.go index 011aa598..ee5ab9f3 100644 --- a/modules/subreddit/keyboard.go +++ b/modules/subreddit/keyboard.go @@ -3,7 +3,7 @@ package subreddit import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/subreddit/widget.go b/modules/subreddit/widget.go index e9fc7762..b58c0cbe 100644 --- a/modules/subreddit/widget.go +++ b/modules/subreddit/widget.go @@ -9,7 +9,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget settings *Settings @@ -19,15 +18,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := &Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/system/widget.go b/modules/system/widget.go index 2ac98cc5..4edc1d00 100644 --- a/modules/system/widget.go +++ b/modules/system/widget.go @@ -21,7 +21,7 @@ type Widget struct { func NewWidget(app *tview.Application, date, version string, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), Date: date, diff --git a/modules/textfile/keyboard.go b/modules/textfile/keyboard.go index bfeeb25a..08654947 100644 --- a/modules/textfile/keyboard.go +++ b/modules/textfile/keyboard.go @@ -6,7 +6,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(nil) + widget.InitializeRefreshKeyboardControl(nil) widget.SetKeyboardChar("l", widget.NextSource, "Select next file") widget.SetKeyboardChar("h", widget.PrevSource, "Select previous file") diff --git a/modules/textfile/widget.go b/modules/textfile/widget.go index 959b63a9..6204e0b8 100644 --- a/modules/textfile/widget.go +++ b/modules/textfile/widget.go @@ -22,7 +22,6 @@ const ( ) type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.TextWidget @@ -32,9 +31,8 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "filePath", "filePaths"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), settings: settings, } @@ -43,7 +41,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.settings.common.RefreshInterval = 0 widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.Refresh) widget.View.SetWordWrap(true) @@ -64,10 +61,6 @@ func (widget *Widget) Refresh() { widget.Redraw(widget.content) } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) content() (string, string, bool) { diff --git a/modules/todo/keyboard.go b/modules/todo/keyboard.go index 8d2422ea..ec132d25 100644 --- a/modules/todo/keyboard.go +++ b/modules/todo/keyboard.go @@ -9,7 +9,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/todo/widget.go b/modules/todo/widget.go index bc24661d..5140127b 100644 --- a/modules/todo/widget.go +++ b/modules/todo/widget.go @@ -22,7 +22,6 @@ const ( // A Widget represents a Todo widget type Widget struct { - view.KeyboardWidget view.ScrollableWidget app *tview.Application @@ -35,8 +34,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{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), app: app, settings: settings, @@ -48,7 +46,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.init() widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.View.SetRegions(true) widget.View.SetScrollable(true) @@ -61,11 +58,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * /* -------------------- Exported Functions -------------------- */ -// HelpText returns the help text for this widget -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - // SelectedItem returns the currently-selected checklist item or nil if no item is selected func (widget *Widget) SelectedItem() *checklist.ChecklistItem { var selectedItem *checklist.ChecklistItem diff --git a/modules/todo_plus/keyboard.go b/modules/todo_plus/keyboard.go index 282b2a28..f1922c26 100644 --- a/modules/todo_plus/keyboard.go +++ b/modules/todo_plus/keyboard.go @@ -3,7 +3,7 @@ package todo_plus import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("d", widget.Delete, "Delete item") widget.SetKeyboardChar("j", widget.Prev, "Select previous item") diff --git a/modules/todo_plus/widget.go b/modules/todo_plus/widget.go index 5a23b5b1..20b0a831 100644 --- a/modules/todo_plus/widget.go +++ b/modules/todo_plus/widget.go @@ -10,7 +10,6 @@ import ( // A Widget represents a Todoist widget type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.ScrollableWidget @@ -22,9 +21,8 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "project", "projects"), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } @@ -35,7 +33,6 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.SetRenderFunction(widget.display) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) widget.KeyboardWidget.SetView(widget.View) @@ -83,10 +80,6 @@ func (widget *Widget) Refresh() { widget.display() } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - func (widget *Widget) NextSource() { widget.MultiSourceWidget.NextSource() widget.Selected = widget.CurrentProject().Index diff --git a/modules/transmission/keyboard.go b/modules/transmission/keyboard.go index 36039650..0bd69b4f 100644 --- a/modules/transmission/keyboard.go +++ b/modules/transmission/keyboard.go @@ -3,7 +3,7 @@ package transmission import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(nil) + widget.InitializeRefreshKeyboardControl(nil) widget.SetKeyboardChar("j", widget.Prev, "Select previous item") widget.SetKeyboardChar("k", widget.Next, "Select next item") diff --git a/modules/transmission/widget.go b/modules/transmission/widget.go index 907ebcf5..7a00f119 100644 --- a/modules/transmission/widget.go +++ b/modules/transmission/widget.go @@ -11,7 +11,6 @@ import ( // Widget is the container for transmission data type Widget struct { - view.KeyboardWidget view.ScrollableWidget client *transmissionrpc.Client @@ -24,15 +23,13 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.display) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) @@ -88,11 +85,6 @@ func (widget *Widget) Refresh() { widget.display() } -// HelpText returns the help text for this widget -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - // Next selects the next item in the list func (widget *Widget) Next() { widget.ScrollableWidget.Next() diff --git a/modules/travisci/keyboard.go b/modules/travisci/keyboard.go index c5a91a6a..0ada9d68 100644 --- a/modules/travisci/keyboard.go +++ b/modules/travisci/keyboard.go @@ -3,7 +3,7 @@ package travisci import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/travisci/widget.go b/modules/travisci/widget.go index 51f47b3b..ae74d374 100644 --- a/modules/travisci/widget.go +++ b/modules/travisci/widget.go @@ -10,7 +10,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget builds *Builds @@ -20,15 +19,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/twitch/keyboard.go b/modules/twitch/keyboard.go index eff4fa0a..7f3e11a1 100644 --- a/modules/twitch/keyboard.go +++ b/modules/twitch/keyboard.go @@ -3,7 +3,7 @@ package twitch import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/twitch/widget.go b/modules/twitch/widget.go index 2cbaa63d..230d8ead 100644 --- a/modules/twitch/widget.go +++ b/modules/twitch/widget.go @@ -11,7 +11,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget settings *Settings @@ -30,15 +29,13 @@ type Stream struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := &Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, twitch: NewClient(settings.clientId), } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) return widget diff --git a/modules/twitter/keyboard.go b/modules/twitter/keyboard.go index 959ab9f2..a6142b1e 100644 --- a/modules/twitter/keyboard.go +++ b/modules/twitter/keyboard.go @@ -6,7 +6,7 @@ import ( ) func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("l", widget.NextSource, "Select next source") widget.SetKeyboardChar("h", widget.PrevSource, "Select previous source") diff --git a/modules/twitter/widget.go b/modules/twitter/widget.go index 66864deb..232a7408 100644 --- a/modules/twitter/widget.go +++ b/modules/twitter/widget.go @@ -12,7 +12,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.TextWidget @@ -23,16 +22,14 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "screenName", "screenNames"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), idx: 0, settings: settings, } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.Refresh) @@ -54,10 +51,6 @@ func (widget *Widget) Refresh() { widget.Redraw(widget.content) } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) content() (string, string, bool) { diff --git a/modules/twitterstats/widget.go b/modules/twitterstats/widget.go index c13360b3..1871aac4 100644 --- a/modules/twitterstats/widget.go +++ b/modules/twitterstats/widget.go @@ -16,7 +16,7 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), client: NewClient(settings), settings: settings, diff --git a/modules/unknown/widget.go b/modules/unknown/widget.go index bafde9b3..f34819b5 100644 --- a/modules/unknown/widget.go +++ b/modules/unknown/widget.go @@ -15,7 +15,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/uptimerobot/widget.go b/modules/uptimerobot/widget.go index a905e354..bb773265 100644 --- a/modules/uptimerobot/widget.go +++ b/modules/uptimerobot/widget.go @@ -14,7 +14,6 @@ import ( ) type Widget struct { - view.KeyboardWidget view.ScrollableWidget monitors []Monitor @@ -24,15 +23,13 @@ type Widget struct { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := &Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.KeyboardWidget.SetView(widget.View) diff --git a/modules/victorops/widget.go b/modules/victorops/widget.go index 1c8fcf1c..b9abc112 100644 --- a/modules/victorops/widget.go +++ b/modules/victorops/widget.go @@ -19,7 +19,7 @@ type Widget struct { // NewWidget creates a new widget func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/weatherservices/arpansagovau/widget.go b/modules/weatherservices/arpansagovau/widget.go index 3d29c220..052aa82e 100644 --- a/modules/weatherservices/arpansagovau/widget.go +++ b/modules/weatherservices/arpansagovau/widget.go @@ -9,6 +9,7 @@ import ( type Widget struct { view.TextWidget + location *location lastError error settings *Settings @@ -17,10 +18,11 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { locationData, err := GetLocationData(settings.city) widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), - location: locationData, - lastError: err, - settings: settings, + TextWidget: view.NewTextWidget(app, nil, settings.common), + + location: locationData, + lastError: err, + settings: settings, } widget.View.SetWrap(true) @@ -42,7 +44,6 @@ func (widget *Widget) content() (string, string, bool) { } func (widget *Widget) Refresh() { - widget.Redraw(widget.content) } diff --git a/modules/weatherservices/prettyweather/widget.go b/modules/weatherservices/prettyweather/widget.go index d9799153..270c0015 100644 --- a/modules/weatherservices/prettyweather/widget.go +++ b/modules/weatherservices/prettyweather/widget.go @@ -19,7 +19,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, nil, settings.common), settings: settings, } diff --git a/modules/weatherservices/weather/keyboard.go b/modules/weatherservices/weather/keyboard.go index 080a7ced..bfa8fe75 100644 --- a/modules/weatherservices/weather/keyboard.go +++ b/modules/weatherservices/weather/keyboard.go @@ -3,7 +3,7 @@ package weather import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("h", widget.PrevSource, "Select previous city") widget.SetKeyboardChar("l", widget.NextSource, "Select next city") diff --git a/modules/weatherservices/weather/widget.go b/modules/weatherservices/weather/widget.go index 51da5a2c..cfad69f5 100644 --- a/modules/weatherservices/weather/widget.go +++ b/modules/weatherservices/weather/widget.go @@ -9,7 +9,6 @@ import ( // Widget is the container for weather data. type Widget struct { - view.KeyboardWidget view.MultiSourceWidget view.TextWidget @@ -23,16 +22,14 @@ 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{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), MultiSourceWidget: view.NewMultiSourceWidget(settings.common, "cityid", "cityids"), - TextWidget: view.NewTextWidget(app, settings.common), + TextWidget: view.NewTextWidget(app, pages, settings.common), pages: pages, settings: settings, } widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) widget.SetDisplayFunction(widget.display) @@ -69,10 +66,6 @@ func (widget *Widget) Refresh() { widget.display() } -func (widget *Widget) HelpText() string { - return widget.KeyboardWidget.HelpText() -} - /* -------------------- Unexported Functions -------------------- */ func (widget *Widget) apiKeyValid() bool { diff --git a/modules/zendesk/keyboard.go b/modules/zendesk/keyboard.go index 4c135cd8..2c561181 100644 --- a/modules/zendesk/keyboard.go +++ b/modules/zendesk/keyboard.go @@ -3,7 +3,7 @@ package zendesk import "github.com/gdamore/tcell" func (widget *Widget) initializeKeyboardControls() { - widget.InitializeCommonControls(widget.Refresh) + widget.InitializeRefreshKeyboardControl(widget.Refresh) widget.SetKeyboardChar("j", widget.Next, "Select next item") widget.SetKeyboardChar("k", widget.Prev, "Select previous item") diff --git a/modules/zendesk/widget.go b/modules/zendesk/widget.go index 286a4fb2..d523e249 100644 --- a/modules/zendesk/widget.go +++ b/modules/zendesk/widget.go @@ -10,7 +10,6 @@ import ( // A Widget represents a Zendesk widget type Widget struct { - view.KeyboardWidget view.ScrollableWidget result *TicketArray @@ -21,16 +20,14 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: view.NewKeyboardWidget(app, pages, settings.common), - ScrollableWidget: view.NewScrollableWidget(app, settings.common), + ScrollableWidget: view.NewScrollableWidget(app, pages, settings.common), settings: settings, } widget.SetRenderFunction(widget.Render) - widget.initializeKeyboardControls() - widget.View.SetInputCapture(widget.InputCapture) + widget.initializeKeyboardControls() widget.KeyboardWidget.SetView(widget.View) return &widget diff --git a/view/bargraph.go b/view/bargraph.go index 34fc25d1..e4878d6b 100644 --- a/view/bargraph.go +++ b/view/bargraph.go @@ -16,6 +16,8 @@ type BarGraph struct { starChar string Base + KeyboardWidget + View *tview.TextView } @@ -30,7 +32,8 @@ type Bar struct { // NewBarGraph creates and returns an instance of BarGraph func NewBarGraph(app *tview.Application, name string, commonSettings *cfg.Common) BarGraph { widget := BarGraph{ - Base: NewBase(app, commonSettings), + Base: NewBase(app, commonSettings), + KeyboardWidget: NewKeyboardWidget(app, nil, commonSettings), maxStars: commonSettings.Config.UInt("graphStars", 20), starChar: commonSettings.Config.UString("graphIcon", "|"), diff --git a/view/base.go b/view/base.go index e2fe5952..a0585040 100644 --- a/view/base.go +++ b/view/base.go @@ -23,20 +23,24 @@ type Base struct { enabledMutex *sync.Mutex } +// NewBase creates and returns an instance of the Base module, the lowest-level +// primitive module from which all others are derived func NewBase(app *tview.Application, commonSettings *cfg.Common) Base { base := Base{ - commonSettings: commonSettings, + commonSettings: commonSettings, + app: app, bordered: commonSettings.Bordered, enabled: commonSettings.Enabled, + enabledMutex: &sync.Mutex{}, focusChar: commonSettings.FocusChar(), focusable: commonSettings.Focusable, name: commonSettings.Name, quitChan: make(chan bool), refreshInterval: commonSettings.RefreshInterval, refreshing: false, - enabledMutex: &sync.Mutex{}, } + return base } @@ -108,10 +112,6 @@ func (base *Base) FocusChar() string { return base.focusChar } -func (base *Base) HelpText() string { - return fmt.Sprintf("\n There is no help available for widget %s", base.commonSettings.Module.Type) -} - func (base *Base) Name() string { return base.name } diff --git a/view/keyboard_widget.go b/view/keyboard_widget.go index a516eb26..9e5efc76 100644 --- a/view/keyboard_widget.go +++ b/view/keyboard_widget.go @@ -10,6 +10,8 @@ import ( "github.com/wtfutil/wtf/utils" ) +const refreshKeyChar = "r" + type helpItem struct { Key string Text string @@ -41,9 +43,69 @@ func NewKeyboardWidget(app *tview.Application, pages *tview.Pages, settings *cfg keyHelp: []helpItem{}, } + keyWidget.initializeCommonKeyboardControls() + return keyWidget } +/* -------------------- Exported Functions --------------------- */ + +// HelpText returns the help text and keyboard command info for this widget +func (widget *KeyboardWidget) HelpText() string { + str := " [green::b]Keyboard commands for " + strings.Title(widget.settings.Module.Type) + "[white]\n\n" + + for _, item := range widget.charHelp { + str += fmt.Sprintf(" %s\t%s\n", item.Key, item.Text) + } + + str += "\n\n" + + for _, item := range widget.keyHelp { + str += fmt.Sprintf(" %-*s\t%s\n", widget.maxKey, item.Key, item.Text) + } + + return str +} + +// InitializeRefreshKeyboardControl assigns the module's explicit refresh function to +// the commom refresh key value +func (widget *KeyboardWidget) InitializeRefreshKeyboardControl(refreshFunc func()) { + if refreshFunc != nil { + widget.SetKeyboardChar(refreshKeyChar, refreshFunc, "Refresh widget") + } +} + +// InputCapture is the function passed to tview's SetInputCapture() function +// This is done during the main widget's creation process using the following code: +// +// widget.View.SetInputCapture(widget.InputCapture) +// +func (widget *KeyboardWidget) InputCapture(event *tcell.EventKey) *tcell.EventKey { + if event == nil { + return nil + } + + fn := widget.charMap[string(event.Rune())] + if fn != nil { + fn() + return nil + } + + fn = widget.keyMap[event.Key()] + if fn != nil { + fn() + return nil + } + + return event +} + +// LaunchDocumentation opens the module docs in a browser +func (widget *KeyboardWidget) LaunchDocumentation() { + url := "https://wtfutil.com/modules/" + widget.settings.Name + utils.OpenFile(url) +} + // SetKeyboardChar sets a character/function combination that responds to key presses // Example: // @@ -77,64 +139,6 @@ func (widget *KeyboardWidget) SetKeyboardKey(key tcell.Key, fn func(), helpText } } -// InitializeCommonControls sets up the keyboard controls that are common to -// all widgets that accept keyboard input -func (widget *KeyboardWidget) InitializeCommonControls(refreshFunc func()) { - widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") - widget.SetKeyboardChar("\\", widget.OpenDocs, "Open the docs in a browser") - - if refreshFunc != nil { - widget.SetKeyboardChar("r", refreshFunc, "Refresh widget") - } -} - -// InputCapture is the function passed to tview's SetInputCapture() function -// This is done during the main widget's creation process using the following code: -// -// widget.View.SetInputCapture(widget.InputCapture) -// -func (widget *KeyboardWidget) InputCapture(event *tcell.EventKey) *tcell.EventKey { - if event == nil { - return nil - } - - fn := widget.charMap[string(event.Rune())] - if fn != nil { - fn() - return nil - } - - fn = widget.keyMap[event.Key()] - if fn != nil { - fn() - return nil - } - - return event -} - -// HelpText returns the help text and keyboard command info for this widget -func (widget *KeyboardWidget) HelpText() string { - str := " [green::b]Keyboard commands for " + strings.Title(widget.settings.Module.Type) + "[white]\n\n" - - for _, item := range widget.charHelp { - str += fmt.Sprintf(" %s\t%s\n", item.Key, item.Text) - } - str += "\n\n" - - for _, item := range widget.keyHelp { - str += fmt.Sprintf(" %-*s\t%s\n", widget.maxKey, item.Key, item.Text) - } - - return str -} - -// OpenDocs opens the module docs in a browser -func (widget *KeyboardWidget) OpenDocs() { - url := "https://wtfutil.com/modules/" + widget.settings.Name - utils.OpenFile(url) -} - // SetView assigns the passed-in tview.TextView view to this widget func (widget *KeyboardWidget) SetView(view *tview.TextView) { widget.view = view @@ -142,6 +146,10 @@ func (widget *KeyboardWidget) SetView(view *tview.TextView) { // ShowHelp displays the modal help dialog for a module func (widget *KeyboardWidget) ShowHelp() { + if widget.pages == nil { + return + } + closeFunc := func() { widget.pages.RemovePage("help") widget.app.SetFocus(widget.view) @@ -156,3 +164,12 @@ func (widget *KeyboardWidget) ShowHelp() { widget.app.Draw() }) } + +/* -------------------- Unexported Functions -------------------- */ + +// initializeCommonKeyboardControls sets up the keyboard controls that are common to +// all widgets that accept keyboard input +func (widget *KeyboardWidget) initializeCommonKeyboardControls() { + widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") + widget.SetKeyboardChar("\\", widget.LaunchDocumentation, "Open the documentation for this module in a browser") +} diff --git a/view/keyboard_widget_test.go b/view/keyboard_widget_test.go index b21a2733..a56967a4 100644 --- a/view/keyboard_widget_test.go +++ b/view/keyboard_widget_test.go @@ -174,18 +174,26 @@ func Test_InputCapture(t *testing.T) { } } -func Test_InitializeCommonControls(t *testing.T) { +func Test_initializeCommonKeyboardControls(t *testing.T) { t.Run("nil refreshFunc", func(t *testing.T) { keyWid := testKeyboardWidget() - keyWid.InitializeCommonControls(nil) assert.NotNil(t, keyWid.charMap["/"]) + assert.NotNil(t, keyWid.charMap["\\"]) + }) +} + +func Test_InitializeRefreshKeyboardControl(t *testing.T) { + t.Run("nil refreshFunc", func(t *testing.T) { + keyWid := testKeyboardWidget() + keyWid.InitializeRefreshKeyboardControl(nil) + assert.Nil(t, keyWid.charMap["r"]) }) t.Run("non-nil refreshFunc", func(t *testing.T) { keyWid := testKeyboardWidget() - keyWid.InitializeCommonControls(func() {}) + keyWid.InitializeRefreshKeyboardControl(func() {}) assert.NotNil(t, keyWid.charMap["r"]) }) diff --git a/view/scrollable_widget.go b/view/scrollable_widget.go index 9468a750..57fe816e 100644 --- a/view/scrollable_widget.go +++ b/view/scrollable_widget.go @@ -15,9 +15,9 @@ type ScrollableWidget struct { RenderFunction func() } -func NewScrollableWidget(app *tview.Application, commonSettings *cfg.Common) ScrollableWidget { +func NewScrollableWidget(app *tview.Application, pages *tview.Pages, commonSettings *cfg.Common) ScrollableWidget { widget := ScrollableWidget{ - TextWidget: NewTextWidget(app, commonSettings), + TextWidget: NewTextWidget(app, pages, commonSettings), } widget.Unselect() @@ -84,7 +84,7 @@ func (widget *ScrollableWidget) Unselect() { func (widget *ScrollableWidget) Redraw(data func() (string, string, bool)) { widget.TextWidget.Redraw(data) - widget.app.QueueUpdateDraw(func() { + widget.Base.app.QueueUpdateDraw(func() { widget.View.Highlight(strconv.Itoa(widget.Selected)).ScrollToHighlight() }) } diff --git a/view/text_widget.go b/view/text_widget.go index f143effb..26197593 100644 --- a/view/text_widget.go +++ b/view/text_widget.go @@ -11,36 +11,39 @@ import ( // TextWidget defines the data necessary to make a text widget type TextWidget struct { Base + KeyboardWidget + View *tview.TextView } // NewTextWidget creates and returns an instance of TextWidget -func NewTextWidget(app *tview.Application, commonSettings *cfg.Common) TextWidget { +func NewTextWidget(app *tview.Application, pages *tview.Pages, commonSettings *cfg.Common) TextWidget { widget := TextWidget{ - Base: NewBase(app, commonSettings), + Base: NewBase(app, commonSettings), + KeyboardWidget: NewKeyboardWidget(app, pages, commonSettings), } widget.View = widget.createView(widget.bordered) + widget.View.SetInputCapture(widget.InputCapture) return widget } /* -------------------- Exported Functions -------------------- */ +// TextView returns the tview.TextView instance func (widget *TextWidget) TextView() *tview.TextView { return widget.View } func (widget *TextWidget) Redraw(data func() (string, string, bool)) { - widget.app.QueueUpdateDraw(func() { + widget.Base.app.QueueUpdateDraw(func() { title, content, wrap := data() widget.View.Clear() widget.View.SetWrap(wrap) widget.View.SetTitle(widget.ContextualTitle(title)) - // widget.View.SetText(strings.TrimSpace(content)) widget.View.SetText(strings.TrimRight(content, "\n")) - // widget.View.SetText(content) }) } diff --git a/view/text_widget_test.go b/view/text_widget_test.go index 33a01258..91219b3a 100644 --- a/view/text_widget_test.go +++ b/view/text_widget_test.go @@ -10,6 +10,7 @@ import ( func testTextWidget() TextWidget { txtWid := NewTextWidget( tview.NewApplication(), + tview.NewPages(), &cfg.Common{ Module: cfg.Module{ Name: "test widget",