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:
parent
3d1202126f
commit
55be452120
76
wtf.go
76
wtf.go
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user