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

Clean up wtf.go

This commit is contained in:
Chris Cummer 2018-06-15 03:48:31 -07:00
parent 3d1202126f
commit 55be452120

76
wtf.go
View File

@ -42,6 +42,16 @@ import (
"github.com/senorprogrammer/wtf/wtf" "github.com/senorprogrammer/wtf/wtf"
) )
var Config *config.Config
var FocusTracker wtf.FocusTracker
var Widgets []wtf.Wtfable
var (
commit = "dev"
date = "dev"
version = "dev"
)
/* -------------------- Functions -------------------- */ /* -------------------- Functions -------------------- */
func addToGrid(grid *tview.Grid, widget wtf.Wtfable) { func addToGrid(grid *tview.Grid, widget wtf.Wtfable) {
@ -76,6 +86,20 @@ func buildGrid(modules []wtf.Wtfable) *tview.Grid {
return grid return grid
} }
func disableAllWidgets() {
for _, widget := range Widgets {
widget.Disable()
}
}
func initializeFocusTracker(app *tview.Application) {
FocusTracker = wtf.FocusTracker{
App: app,
Idx: -1,
Widgets: Widgets,
}
}
func keyboardIntercept(event *tcell.EventKey) *tcell.EventKey { func keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() { switch event.Key() {
case tcell.KeyCtrlR: case tcell.KeyCtrlR:
@ -93,6 +117,10 @@ func keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event return event
} }
func loadConfig(configFlag string) {
Config = cfg.LoadConfigFile(configFlag)
}
// redrawApp redraws the rendered views to screen on a defined interval (set in config.yml) // redrawApp redraws the rendered views to screen on a defined interval (set in config.yml)
// Use this because each textView widget can have it's own update interval, and I don't want to // Use this because each textView widget can have it's own update interval, and I don't want to
// manage drawing co-ordination amongst them all. If you need to have a // manage drawing co-ordination amongst them all. If you need to have a
@ -118,6 +146,10 @@ func refreshAllWidgets() {
} }
} }
func setTerm() {
os.Setenv("TERM", Config.UString("wtf.term", os.Getenv("TERM")))
}
func watchForConfigChanges(app *tview.Application, configFlag string, grid *tview.Grid, pages *tview.Pages) { func watchForConfigChanges(app *tview.Application, configFlag string, grid *tview.Grid, pages *tview.Pages) {
watch := watcher.New() watch := watcher.New()
@ -132,6 +164,7 @@ func watchForConfigChanges(app *tview.Application, configFlag string, grid *tvie
// Disable all widgets to stop scheduler goroutines and rmeove widgets from memory. // Disable all widgets to stop scheduler goroutines and rmeove widgets from memory.
disableAllWidgets() disableAllWidgets()
makeWidgets(app, pages) makeWidgets(app, pages)
initializeFocusTracker(app)
grid = buildGrid(Widgets) grid = buildGrid(Widgets)
pages.AddPage("grid", grid, true, true) pages.AddPage("grid", grid, true, true)
case err := <-watch.Error: case err := <-watch.Error:
@ -153,24 +186,6 @@ func watchForConfigChanges(app *tview.Application, configFlag string, grid *tvie
} }
} }
/* -------------------- Main -------------------- */
var Config *config.Config
var FocusTracker wtf.FocusTracker
var Widgets []wtf.Wtfable
var (
commit = "dev"
date = "dev"
version = "dev"
)
func disableAllWidgets() {
for _, widget := range Widgets {
widget.Disable()
}
}
func addWidget(app *tview.Application, pages *tview.Pages, widgetName string) { func addWidget(app *tview.Application, pages *tview.Pages, widgetName string) {
// Always in alphabetical order // Always in alphabetical order
switch widgetName { switch widgetName {
@ -180,6 +195,8 @@ func addWidget(app *tview.Application, pages *tview.Pages, widgetName string) {
Widgets = append(Widgets, bargraph.NewWidget()) Widgets = append(Widgets, bargraph.NewWidget())
case "bittrex": case "bittrex":
Widgets = append(Widgets, bittrex.NewWidget()) Widgets = append(Widgets, bittrex.NewWidget())
case "blockfolio":
Widgets = append(Widgets, blockfolio.NewWidget(app, pages))
case "circleci": case "circleci":
Widgets = append(Widgets, circleci.NewWidget()) Widgets = append(Widgets, circleci.NewWidget())
case "clocks": case "clocks":
@ -226,19 +243,16 @@ func addWidget(app *tview.Application, pages *tview.Pages, widgetName string) {
Widgets = append(Widgets, todo.NewWidget(app, pages)) Widgets = append(Widgets, todo.NewWidget(app, pages))
case "weather": case "weather":
Widgets = append(Widgets, weather.NewWidget(app, pages)) Widgets = append(Widgets, weather.NewWidget(app, pages))
case "blockfolio":
Widgets = append(Widgets, blockfolio.NewWidget(app, pages))
default: default:
} }
} }
func makeWidgets(app *tview.Application, pages *tview.Pages) { func makeWidgets(app *tview.Application, pages *tview.Pages) {
Widgets = []wtf.Wtfable{}
// Always in alphabetical order // Always in alphabetical order
bamboohr.Config = Config bamboohr.Config = Config
bargraph.Config = Config bargraph.Config = Config
bittrex.Config = Config bittrex.Config = Config
blockfolio.Config = Config
circleci.Config = Config circleci.Config = Config
clocks.Config = Config clocks.Config = Config
cmdrunner.Config = Config cmdrunner.Config = Config
@ -262,7 +276,6 @@ func makeWidgets(app *tview.Application, pages *tview.Pages) {
textfile.Config = Config textfile.Config = Config
todo.Config = Config todo.Config = Config
weather.Config = Config weather.Config = Config
blockfolio.Config = Config
wtf.Config = Config wtf.Config = Config
mods, _ := Config.Map("wtf.mods") mods, _ := Config.Map("wtf.mods")
@ -272,17 +285,9 @@ func makeWidgets(app *tview.Application, pages *tview.Pages) {
} }
} }
FocusTracker = wtf.FocusTracker{
App: app,
Idx: -1,
Widgets: Widgets,
}
} }
func loadConfig(configFlag string) { /* -------------------- Main -------------------- */
Config = cfg.LoadConfigFile(configFlag)
}
func main() { func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile) log.SetFlags(log.LstdFlags | log.Lshortfile)
@ -294,20 +299,17 @@ func main() {
help.DisplayModuleInfo(cmdFlags.Module) help.DisplayModuleInfo(cmdFlags.Module)
} }
/* -------------------- end flag parsing and handling -------------------- */
// Responsible for creating the configuration directory and default
// configuration file if they don't already exist
cfg.CreateConfigDir() cfg.CreateConfigDir()
cfg.WriteConfigFile() cfg.WriteConfigFile()
loadConfig(cmdFlags.Config) loadConfig(cmdFlags.Config)
os.Setenv("TERM", Config.UString("wtf.term", os.Getenv("TERM"))) setTerm()
app := tview.NewApplication() app := tview.NewApplication()
pages := tview.NewPages() pages := tview.NewPages()
makeWidgets(app, pages) makeWidgets(app, pages)
initializeFocusTracker(app)
grid := buildGrid(Widgets) grid := buildGrid(Widgets)
pages.AddPage("grid", grid, true, true) pages.AddPage("grid", grid, true, true)