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

Make all exported fields unexported in WtfApp

This commit is contained in:
Chris Cummer 2019-07-27 23:23:10 -07:00
parent 4c0f7650dd
commit 8436b74ac1
2 changed files with 37 additions and 32 deletions

View File

@ -17,41 +17,46 @@ import (
// WtfApp is the container for a collection of widgets that are all constructed from a single // WtfApp is the container for a collection of widgets that are all constructed from a single
// configuration file and displayed together // configuration file and displayed together
type WtfApp struct { type WtfApp struct {
App *tview.Application app *tview.Application
Config *config.Config config *config.Config
ConfigFilePath string configFilePath string
Display *Display display *Display
FocusTracker wtf.FocusTracker focusTracker wtf.FocusTracker
IsCustomConfig bool isCustomConfig bool
Pages *tview.Pages pages *tview.Pages
Widgets []wtf.Wtfable widgets []wtf.Wtfable
} }
// NewWtfApp creates and returns an instance of WtfApp // NewWtfApp creates and returns an instance of WtfApp
func NewWtfApp(app *tview.Application, config *config.Config, configFilePath string, isCustom bool) *WtfApp { func NewWtfApp(app *tview.Application, config *config.Config, configFilePath string, isCustom bool) *WtfApp {
wtfApp := WtfApp{ wtfApp := WtfApp{
App: app, app: app,
Config: config, config: config,
ConfigFilePath: configFilePath, configFilePath: configFilePath,
IsCustomConfig: isCustom, isCustomConfig: isCustom,
Pages: tview.NewPages(), pages: tview.NewPages(),
} }
wtfApp.Widgets = maker.MakeWidgets(wtfApp.App, wtfApp.Pages, wtfApp.Config) wtfApp.widgets = maker.MakeWidgets(wtfApp.app, wtfApp.pages, wtfApp.config)
wtfApp.Display = NewDisplay(wtfApp.Widgets, wtfApp.Config) wtfApp.display = NewDisplay(wtfApp.widgets, wtfApp.config)
wtfApp.FocusTracker = wtf.NewFocusTracker(wtfApp.App, wtfApp.Widgets, wtfApp.Config) wtfApp.focusTracker = wtf.NewFocusTracker(wtfApp.app, wtfApp.widgets, wtfApp.config)
wtfApp.App.SetInputCapture(wtfApp.keyboardIntercept) wtfApp.pages.AddPage("grid", wtfApp.display.Grid, true, true)
wtfApp.Pages.AddPage("grid", wtfApp.Display.Grid, true, true) wtfApp.app.SetRoot(wtfApp.pages, true)
wtfApp.App.SetRoot(wtfApp.Pages, true) wtfApp.app.SetInputCapture(wtfApp.keyboardIntercept)
wtf.ValidateWidgets(wtfApp.Widgets) wtf.ValidateWidgets(wtfApp.widgets)
return &wtfApp return &wtfApp
} }
/* -------------------- Exported Functions -------------------- */ /* -------------------- Exported Functions -------------------- */
// App returns the *tview.Application instance
func (wtfApp *WtfApp) App() *tview.Application {
return wtfApp.app
}
// Start initializes the app // Start initializes the app
func (wtfApp *WtfApp) Start() { func (wtfApp *WtfApp) Start() {
wtfApp.scheduleWidgets() wtfApp.scheduleWidgets()
@ -66,7 +71,7 @@ func (wtfApp *WtfApp) Stop() {
/* -------------------- Unexported Functions -------------------- */ /* -------------------- Unexported Functions -------------------- */
func (wtfApp *WtfApp) stopAllWidgets() { func (wtfApp *WtfApp) stopAllWidgets() {
for _, widget := range wtfApp.Widgets { for _, widget := range wtfApp.widgets {
widget.Stop() widget.Stop()
} }
} }
@ -78,23 +83,23 @@ func (wtfApp *WtfApp) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
wtfApp.refreshAllWidgets() wtfApp.refreshAllWidgets()
return nil return nil
case tcell.KeyTab: case tcell.KeyTab:
wtfApp.FocusTracker.Next() wtfApp.focusTracker.Next()
return nil return nil
case tcell.KeyBacktab: case tcell.KeyBacktab:
wtfApp.FocusTracker.Prev() wtfApp.focusTracker.Prev()
return nil return nil
case tcell.KeyEsc: case tcell.KeyEsc:
wtfApp.FocusTracker.None() wtfApp.focusTracker.None()
return nil return nil
} }
// Checks to see if any widget has been assigned the pressed key as its focus key // Checks to see if any widget has been assigned the pressed key as its focus key
if wtfApp.FocusTracker.FocusOn(string(event.Rune())) { if wtfApp.focusTracker.FocusOn(string(event.Rune())) {
return nil return nil
} }
// If no specific widget has focus, then allow the key presses to fall through to the app // If no specific widget has focus, then allow the key presses to fall through to the app
if !wtfApp.FocusTracker.IsFocused { if !wtfApp.focusTracker.IsFocused {
switch string(event.Rune()) { switch string(event.Rune()) {
case "/": case "/":
return nil return nil
@ -105,13 +110,13 @@ func (wtfApp *WtfApp) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
} }
func (wtfApp *WtfApp) refreshAllWidgets() { func (wtfApp *WtfApp) refreshAllWidgets() {
for _, widget := range wtfApp.Widgets { for _, widget := range wtfApp.widgets {
go widget.Refresh() go widget.Refresh()
} }
} }
func (wtfApp *WtfApp) scheduleWidgets() { func (wtfApp *WtfApp) scheduleWidgets() {
for _, widget := range wtfApp.Widgets { for _, widget := range wtfApp.widgets {
go Schedule(widget) go Schedule(widget)
} }
} }
@ -128,9 +133,9 @@ func (wtfApp *WtfApp) watchForConfigChanges() {
case <-watch.Event: case <-watch.Event:
wtfApp.Stop() wtfApp.Stop()
config := cfg.LoadWtfConfigFile(wtfApp.ConfigFilePath, wtfApp.IsCustomConfig) config := cfg.LoadWtfConfigFile(wtfApp.configFilePath, wtfApp.isCustomConfig)
newApp := NewWtfApp(wtfApp.App, config, wtfApp.ConfigFilePath, wtfApp.IsCustomConfig) newApp := NewWtfApp(wtfApp.app, config, wtfApp.configFilePath, wtfApp.isCustomConfig)
newApp.Start() newApp.Start()
case err := <-watch.Error: case err := <-watch.Error:
log.Fatalln(err) log.Fatalln(err)
@ -141,7 +146,7 @@ func (wtfApp *WtfApp) watchForConfigChanges() {
}() }()
// Watch config file for changes. // Watch config file for changes.
absPath, _ := utils.ExpandHomeDir(wtfApp.ConfigFilePath) absPath, _ := utils.ExpandHomeDir(wtfApp.configFilePath)
if err := watch.Add(absPath); err != nil { if err := watch.Add(absPath); err != nil {
log.Fatalln(err) log.Fatalln(err)
} }

View File

@ -69,7 +69,7 @@ func main() {
wtfApp := app.NewWtfApp(tviewApp, config, flags.Config, flags.HasCustomConfig()) wtfApp := app.NewWtfApp(tviewApp, config, flags.Config, flags.HasCustomConfig())
wtfApp.Start() wtfApp.Start()
if err := wtfApp.App.Run(); err != nil { if err := wtfApp.App().Run(); err != nil {
fmt.Printf("\n%s %v\n", aurora.Red("ERROR"), err) fmt.Printf("\n%s %v\n", aurora.Red("ERROR"), err)
os.Exit(1) os.Exit(1)
} }