github.com/wtfutil/wtf@v0.43.0/app/widget_maker.go (about)

     1  package app
     2  
     3  import (
     4  	"github.com/olebedev/config"
     5  	"github.com/rivo/tview"
     6  	"github.com/wtfutil/wtf/modules/airbrake"
     7  	"github.com/wtfutil/wtf/modules/asana"
     8  	"github.com/wtfutil/wtf/modules/azuredevops"
     9  	"github.com/wtfutil/wtf/modules/bamboohr"
    10  	"github.com/wtfutil/wtf/modules/bargraph"
    11  	"github.com/wtfutil/wtf/modules/buildkite"
    12  	cdsfavorites "github.com/wtfutil/wtf/modules/cds/favorites"
    13  	cdsqueue "github.com/wtfutil/wtf/modules/cds/queue"
    14  	cdsstatus "github.com/wtfutil/wtf/modules/cds/status"
    15  	"github.com/wtfutil/wtf/modules/circleci"
    16  	"github.com/wtfutil/wtf/modules/clocks"
    17  	"github.com/wtfutil/wtf/modules/cmdrunner"
    18  	"github.com/wtfutil/wtf/modules/covid"
    19  	"github.com/wtfutil/wtf/modules/cryptocurrency/bittrex"
    20  	"github.com/wtfutil/wtf/modules/cryptocurrency/blockfolio"
    21  	"github.com/wtfutil/wtf/modules/cryptocurrency/cryptolive"
    22  	"github.com/wtfutil/wtf/modules/cryptocurrency/mempool"
    23  	"github.com/wtfutil/wtf/modules/datadog"
    24  	"github.com/wtfutil/wtf/modules/devto"
    25  	"github.com/wtfutil/wtf/modules/digitalclock"
    26  	"github.com/wtfutil/wtf/modules/digitalocean"
    27  	"github.com/wtfutil/wtf/modules/docker"
    28  	"github.com/wtfutil/wtf/modules/feedreader"
    29  	"github.com/wtfutil/wtf/modules/football"
    30  	"github.com/wtfutil/wtf/modules/gcal"
    31  	"github.com/wtfutil/wtf/modules/gerrit"
    32  	"github.com/wtfutil/wtf/modules/git"
    33  	"github.com/wtfutil/wtf/modules/github"
    34  	"github.com/wtfutil/wtf/modules/gitlab"
    35  	"github.com/wtfutil/wtf/modules/gitlabtodo"
    36  	"github.com/wtfutil/wtf/modules/gitter"
    37  	"github.com/wtfutil/wtf/modules/googleanalytics"
    38  	"github.com/wtfutil/wtf/modules/grafana"
    39  	"github.com/wtfutil/wtf/modules/gspreadsheets"
    40  	"github.com/wtfutil/wtf/modules/hackernews"
    41  	"github.com/wtfutil/wtf/modules/healthchecks"
    42  	"github.com/wtfutil/wtf/modules/hibp"
    43  	"github.com/wtfutil/wtf/modules/ipaddresses/ipapi"
    44  	"github.com/wtfutil/wtf/modules/ipaddresses/ipinfo"
    45  	"github.com/wtfutil/wtf/modules/jenkins"
    46  	"github.com/wtfutil/wtf/modules/jira"
    47  	"github.com/wtfutil/wtf/modules/krisinformation"
    48  	"github.com/wtfutil/wtf/modules/kubernetes"
    49  	"github.com/wtfutil/wtf/modules/logger"
    50  	"github.com/wtfutil/wtf/modules/lunarphase"
    51  	"github.com/wtfutil/wtf/modules/mercurial"
    52  	"github.com/wtfutil/wtf/modules/nbascore"
    53  	"github.com/wtfutil/wtf/modules/newrelic"
    54  	"github.com/wtfutil/wtf/modules/nextbus"
    55  	"github.com/wtfutil/wtf/modules/opsgenie"
    56  	"github.com/wtfutil/wtf/modules/pagerduty"
    57  	"github.com/wtfutil/wtf/modules/pihole"
    58  	"github.com/wtfutil/wtf/modules/pivotal"
    59  	"github.com/wtfutil/wtf/modules/pocket"
    60  	"github.com/wtfutil/wtf/modules/power"
    61  	"github.com/wtfutil/wtf/modules/progress"
    62  	"github.com/wtfutil/wtf/modules/resourceusage"
    63  	"github.com/wtfutil/wtf/modules/rollbar"
    64  	"github.com/wtfutil/wtf/modules/security"
    65  	"github.com/wtfutil/wtf/modules/spacex"
    66  	"github.com/wtfutil/wtf/modules/spotify"
    67  	"github.com/wtfutil/wtf/modules/spotifyweb"
    68  	"github.com/wtfutil/wtf/modules/status"
    69  	"github.com/wtfutil/wtf/modules/steam"
    70  	"github.com/wtfutil/wtf/modules/stocks/finnhub"
    71  	"github.com/wtfutil/wtf/modules/stocks/yfinance"
    72  	"github.com/wtfutil/wtf/modules/subreddit"
    73  	"github.com/wtfutil/wtf/modules/textfile"
    74  	"github.com/wtfutil/wtf/modules/todo"
    75  	"github.com/wtfutil/wtf/modules/todo_plus"
    76  	"github.com/wtfutil/wtf/modules/transmission"
    77  	"github.com/wtfutil/wtf/modules/travisci"
    78  	"github.com/wtfutil/wtf/modules/twitch"
    79  	"github.com/wtfutil/wtf/modules/twitter"
    80  	"github.com/wtfutil/wtf/modules/twitterstats"
    81  	"github.com/wtfutil/wtf/modules/unknown"
    82  	"github.com/wtfutil/wtf/modules/updown"
    83  	"github.com/wtfutil/wtf/modules/uptimerobot"
    84  	"github.com/wtfutil/wtf/modules/urlcheck"
    85  	"github.com/wtfutil/wtf/modules/victorops"
    86  	"github.com/wtfutil/wtf/modules/weatherservices/arpansagovau"
    87  	"github.com/wtfutil/wtf/modules/weatherservices/prettyweather"
    88  	"github.com/wtfutil/wtf/modules/weatherservices/weather"
    89  	"github.com/wtfutil/wtf/modules/zendesk"
    90  	"github.com/wtfutil/wtf/wtf"
    91  )
    92  
    93  // MakeWidget creates and returns instances of widgets
    94  func MakeWidget(
    95  	tviewApp *tview.Application,
    96  	pages *tview.Pages,
    97  	moduleName string,
    98  	config *config.Config,
    99  	redrawChan chan bool,
   100  ) wtf.Wtfable {
   101  	var widget wtf.Wtfable
   102  
   103  	moduleConfig, _ := config.Get("wtf.mods." + moduleName)
   104  
   105  	// Don' try to initialize modules that don't exist
   106  	if moduleConfig == nil {
   107  		return nil
   108  	}
   109  
   110  	// Don't try to initialize modules that aren't enabled
   111  	if enabled := moduleConfig.UBool("enabled", false); !enabled {
   112  		return nil
   113  	}
   114  
   115  	// Always in alphabetical order
   116  	switch moduleConfig.UString("type", moduleName) {
   117  	case "airbrake":
   118  		settings := airbrake.NewSettingsFromYAML(moduleName, moduleConfig, config)
   119  		widget = airbrake.NewWidget(tviewApp, redrawChan, pages, settings)
   120  	case "arpansagovau":
   121  		settings := arpansagovau.NewSettingsFromYAML(moduleName, moduleConfig, config)
   122  		widget = arpansagovau.NewWidget(tviewApp, redrawChan, settings)
   123  	case "asana":
   124  		settings := asana.NewSettingsFromYAML(moduleName, moduleConfig, config)
   125  		widget = asana.NewWidget(tviewApp, redrawChan, pages, settings)
   126  	case "azuredevops":
   127  		settings := azuredevops.NewSettingsFromYAML(moduleName, moduleConfig, config)
   128  		widget = azuredevops.NewWidget(tviewApp, redrawChan, pages, settings)
   129  	case "bamboohr":
   130  		settings := bamboohr.NewSettingsFromYAML(moduleName, moduleConfig, config)
   131  		widget = bamboohr.NewWidget(tviewApp, redrawChan, settings)
   132  	case "bargraph":
   133  		settings := bargraph.NewSettingsFromYAML(moduleName, moduleConfig, config)
   134  		widget = bargraph.NewWidget(tviewApp, redrawChan, settings)
   135  	case "bittrex":
   136  		settings := bittrex.NewSettingsFromYAML(moduleName, moduleConfig, config)
   137  		widget = bittrex.NewWidget(tviewApp, redrawChan, settings)
   138  	case "blockfolio":
   139  		settings := blockfolio.NewSettingsFromYAML(moduleName, moduleConfig, config)
   140  		widget = blockfolio.NewWidget(tviewApp, redrawChan, settings)
   141  	case "buildkite":
   142  		settings := buildkite.NewSettingsFromYAML(moduleName, moduleConfig, config)
   143  		widget = buildkite.NewWidget(tviewApp, redrawChan, pages, settings)
   144  	case "cdsFavorites":
   145  		settings := cdsfavorites.NewSettingsFromYAML(moduleName, moduleConfig, config)
   146  		widget = cdsfavorites.NewWidget(tviewApp, redrawChan, pages, settings)
   147  	case "cdsQueue":
   148  		settings := cdsqueue.NewSettingsFromYAML(moduleName, moduleConfig, config)
   149  		widget = cdsqueue.NewWidget(tviewApp, redrawChan, pages, settings)
   150  	case "cdsStatus":
   151  		settings := cdsstatus.NewSettingsFromYAML(moduleName, moduleConfig, config)
   152  		widget = cdsstatus.NewWidget(tviewApp, redrawChan, pages, settings)
   153  	case "circleci":
   154  		settings := circleci.NewSettingsFromYAML(moduleName, moduleConfig, config)
   155  		widget = circleci.NewWidget(tviewApp, redrawChan, settings)
   156  	case "clocks":
   157  		settings := clocks.NewSettingsFromYAML(moduleName, moduleConfig, config)
   158  		widget = clocks.NewWidget(tviewApp, redrawChan, settings)
   159  	case "covid":
   160  		settings := covid.NewSettingsFromYAML(moduleName, moduleConfig, config)
   161  		widget = covid.NewWidget(tviewApp, redrawChan, settings)
   162  	case "cmdrunner":
   163  		settings := cmdrunner.NewSettingsFromYAML(moduleName, moduleConfig, config)
   164  		widget = cmdrunner.NewWidget(tviewApp, redrawChan, settings)
   165  	case "cryptolive":
   166  		settings := cryptolive.NewSettingsFromYAML(moduleName, moduleConfig, config)
   167  		widget = cryptolive.NewWidget(tviewApp, redrawChan, settings)
   168  	case "datadog":
   169  		settings := datadog.NewSettingsFromYAML(moduleName, moduleConfig, config)
   170  		widget = datadog.NewWidget(tviewApp, redrawChan, pages, settings)
   171  	case "devto":
   172  		settings := devto.NewSettingsFromYAML(moduleName, moduleConfig, config)
   173  		widget = devto.NewWidget(tviewApp, redrawChan, pages, settings)
   174  	case "digitalclock":
   175  		settings := digitalclock.NewSettingsFromYAML(moduleName, moduleConfig, config)
   176  		widget = digitalclock.NewWidget(tviewApp, redrawChan, settings)
   177  	case "digitalocean":
   178  		settings := digitalocean.NewSettingsFromYAML(moduleName, moduleConfig, config)
   179  		widget = digitalocean.NewWidget(tviewApp, redrawChan, pages, settings)
   180  	case "docker":
   181  		settings := docker.NewSettingsFromYAML(moduleName, moduleConfig, config)
   182  		widget = docker.NewWidget(tviewApp, redrawChan, pages, settings)
   183  	case "feedreader":
   184  		settings := feedreader.NewSettingsFromYAML(moduleName, moduleConfig, config)
   185  		widget = feedreader.NewWidget(tviewApp, redrawChan, pages, settings)
   186  	case "football":
   187  		settings := football.NewSettingsFromYAML(moduleName, moduleConfig, config)
   188  		widget = football.NewWidget(tviewApp, redrawChan, pages, settings)
   189  	case "gcal":
   190  		settings := gcal.NewSettingsFromYAML(moduleName, moduleConfig, config)
   191  		widget = gcal.NewWidget(tviewApp, redrawChan, settings)
   192  	case "gerrit":
   193  		settings := gerrit.NewSettingsFromYAML(moduleName, moduleConfig, config)
   194  		widget = gerrit.NewWidget(tviewApp, redrawChan, pages, settings)
   195  	case "git":
   196  		settings := git.NewSettingsFromYAML(moduleName, moduleConfig, config)
   197  		widget = git.NewWidget(tviewApp, redrawChan, pages, settings)
   198  	case "github":
   199  		settings := github.NewSettingsFromYAML(moduleName, moduleConfig, config)
   200  		widget = github.NewWidget(tviewApp, redrawChan, pages, settings)
   201  	case "gitlab":
   202  		settings := gitlab.NewSettingsFromYAML(moduleName, moduleConfig, config)
   203  		widget = gitlab.NewWidget(tviewApp, redrawChan, pages, settings)
   204  	case "gitlabtodo":
   205  		settings := gitlabtodo.NewSettingsFromYAML(moduleName, moduleConfig, config)
   206  		widget = gitlabtodo.NewWidget(tviewApp, redrawChan, pages, settings)
   207  	case "gitter":
   208  		settings := gitter.NewSettingsFromYAML(moduleName, moduleConfig, config)
   209  		widget = gitter.NewWidget(tviewApp, redrawChan, pages, settings)
   210  	case "googleanalytics":
   211  		settings := googleanalytics.NewSettingsFromYAML(moduleName, moduleConfig, config)
   212  		widget = googleanalytics.NewWidget(tviewApp, redrawChan, settings)
   213  	case "gspreadsheets":
   214  		settings := gspreadsheets.NewSettingsFromYAML(moduleName, moduleConfig, config)
   215  		widget = gspreadsheets.NewWidget(tviewApp, redrawChan, settings)
   216  	case "grafana":
   217  		settings := grafana.NewSettingsFromYAML(moduleName, moduleConfig, config)
   218  		widget = grafana.NewWidget(tviewApp, redrawChan, pages, settings)
   219  	case "hackernews":
   220  		settings := hackernews.NewSettingsFromYAML(moduleName, moduleConfig, config)
   221  		widget = hackernews.NewWidget(tviewApp, redrawChan, pages, settings)
   222  	case "healthchecks":
   223  		settings := healthchecks.NewSettingsFromYAML(moduleName, moduleConfig, config)
   224  		widget = healthchecks.NewWidget(tviewApp, redrawChan, pages, settings)
   225  	case "hibp":
   226  		settings := hibp.NewSettingsFromYAML(moduleName, moduleConfig, config)
   227  		widget = hibp.NewWidget(tviewApp, redrawChan, settings)
   228  	case "ipapi":
   229  		settings := ipapi.NewSettingsFromYAML(moduleName, moduleConfig, config)
   230  		widget = ipapi.NewWidget(tviewApp, redrawChan, settings)
   231  	case "ipinfo":
   232  		settings := ipinfo.NewSettingsFromYAML(moduleName, moduleConfig, config)
   233  		widget = ipinfo.NewWidget(tviewApp, redrawChan, settings)
   234  	case "jenkins":
   235  		settings := jenkins.NewSettingsFromYAML(moduleName, moduleConfig, config)
   236  		widget = jenkins.NewWidget(tviewApp, redrawChan, pages, settings)
   237  	case "jira":
   238  		settings := jira.NewSettingsFromYAML(moduleName, moduleConfig, config)
   239  		widget = jira.NewWidget(tviewApp, redrawChan, pages, settings)
   240  	case "kubernetes":
   241  		settings := kubernetes.NewSettingsFromYAML(moduleName, moduleConfig, config)
   242  		widget = kubernetes.NewWidget(tviewApp, redrawChan, settings)
   243  	case "krisinformation":
   244  		settings := krisinformation.NewSettingsFromYAML(moduleName, moduleConfig, config)
   245  		widget = krisinformation.NewWidget(tviewApp, redrawChan, settings)
   246  	case "logger":
   247  		settings := logger.NewSettingsFromYAML(moduleName, moduleConfig, config)
   248  		widget = logger.NewWidget(tviewApp, redrawChan, settings)
   249  	case "lunarphase":
   250  		settings := lunarphase.NewSettingsFromYAML(moduleName, moduleConfig, config)
   251  		widget = lunarphase.NewWidget(tviewApp, redrawChan, pages, settings)
   252  	case "mercurial":
   253  		settings := mercurial.NewSettingsFromYAML(moduleName, moduleConfig, config)
   254  		widget = mercurial.NewWidget(tviewApp, redrawChan, pages, settings)
   255  	case "mempool":
   256  		settings := mempool.NewSettingsFromYAML(moduleName, moduleConfig, config)
   257  		widget = mempool.NewWidget(tviewApp, redrawChan, pages, settings)
   258  	case "nbascore":
   259  		settings := nbascore.NewSettingsFromYAML(moduleName, moduleConfig, config)
   260  		widget = nbascore.NewWidget(tviewApp, redrawChan, pages, settings)
   261  	case "newrelic":
   262  		settings := newrelic.NewSettingsFromYAML(moduleName, moduleConfig, config)
   263  		widget = newrelic.NewWidget(tviewApp, redrawChan, pages, settings)
   264  	case "nextbus":
   265  		settings := nextbus.NewSettingsFromYAML(moduleName, moduleConfig, config)
   266  		widget = nextbus.NewWidget(tviewApp, redrawChan, pages, settings)
   267  	case "opsgenie":
   268  		settings := opsgenie.NewSettingsFromYAML(moduleName, moduleConfig, config)
   269  		widget = opsgenie.NewWidget(tviewApp, redrawChan, settings)
   270  	case "pagerduty":
   271  		settings := pagerduty.NewSettingsFromYAML(moduleName, moduleConfig, config)
   272  		widget = pagerduty.NewWidget(tviewApp, redrawChan, settings)
   273  	case "pihole":
   274  		settings := pihole.NewSettingsFromYAML(moduleName, moduleConfig, config)
   275  		widget = pihole.NewWidget(tviewApp, redrawChan, pages, settings)
   276  	case "power":
   277  		settings := power.NewSettingsFromYAML(moduleName, moduleConfig, config)
   278  		widget = power.NewWidget(tviewApp, redrawChan, settings)
   279  	case "prettyweather":
   280  		settings := prettyweather.NewSettingsFromYAML(moduleName, moduleConfig, config)
   281  		widget = prettyweather.NewWidget(tviewApp, redrawChan, settings)
   282  	case "progress":
   283  		settings := progress.NewSettingsFromYAML(moduleName, moduleConfig, config)
   284  		widget = progress.NewWidget(tviewApp, redrawChan, settings)
   285  	case "pocket":
   286  		settings := pocket.NewSettingsFromYAML(moduleName, moduleConfig, config)
   287  		widget = pocket.NewWidget(tviewApp, redrawChan, pages, settings)
   288  	case "resourceusage":
   289  		settings := resourceusage.NewSettingsFromYAML(moduleName, moduleConfig, config)
   290  		widget = resourceusage.NewWidget(tviewApp, redrawChan, settings)
   291  	case "rollbar":
   292  		settings := rollbar.NewSettingsFromYAML(moduleName, moduleConfig, config)
   293  		widget = rollbar.NewWidget(tviewApp, redrawChan, pages, settings)
   294  	case "security":
   295  		settings := security.NewSettingsFromYAML(moduleName, moduleConfig, config)
   296  		widget = security.NewWidget(tviewApp, redrawChan, settings)
   297  	case "spacex":
   298  		settings := spacex.NewSettingsFromYAML(moduleName, moduleConfig, config)
   299  		widget = spacex.NewWidget(tviewApp, redrawChan, settings)
   300  	case "spotify":
   301  		settings := spotify.NewSettingsFromYAML(moduleName, moduleConfig, config)
   302  		widget = spotify.NewWidget(tviewApp, redrawChan, pages, settings)
   303  	case "spotifyweb":
   304  		settings := spotifyweb.NewSettingsFromYAML(moduleName, moduleConfig, config)
   305  		widget = spotifyweb.NewWidget(tviewApp, redrawChan, pages, settings)
   306  	case "status":
   307  		settings := status.NewSettingsFromYAML(moduleName, moduleConfig, config)
   308  		widget = status.NewWidget(tviewApp, redrawChan, settings)
   309  	case "steam":
   310  		settings := steam.NewSettingsFromYAML(moduleName, moduleConfig, config)
   311  		widget = steam.NewWidget(tviewApp, redrawChan, pages, settings)
   312  	case "subreddit":
   313  		settings := subreddit.NewSettingsFromYAML(moduleName, moduleConfig, config)
   314  		widget = subreddit.NewWidget(tviewApp, redrawChan, pages, settings)
   315  	case "textfile":
   316  		settings := textfile.NewSettingsFromYAML(moduleName, moduleConfig, config)
   317  		widget = textfile.NewWidget(tviewApp, redrawChan, pages, settings)
   318  	case "todo":
   319  		settings := todo.NewSettingsFromYAML(moduleName, moduleConfig, config)
   320  		widget = todo.NewWidget(tviewApp, redrawChan, pages, settings)
   321  	case "todo_plus":
   322  		settings := todo_plus.NewSettingsFromYAML(moduleName, moduleConfig, config)
   323  		widget = todo_plus.NewWidget(tviewApp, redrawChan, pages, settings)
   324  	case "todoist":
   325  		settings := todo_plus.FromTodoist(moduleName, moduleConfig, config)
   326  		widget = todo_plus.NewWidget(tviewApp, redrawChan, pages, settings)
   327  	case "transmission":
   328  		settings := transmission.NewSettingsFromYAML(moduleName, moduleConfig, config)
   329  		widget = transmission.NewWidget(tviewApp, redrawChan, pages, settings)
   330  	case "travisci":
   331  		settings := travisci.NewSettingsFromYAML(moduleName, moduleConfig, config)
   332  		widget = travisci.NewWidget(tviewApp, redrawChan, pages, settings)
   333  	case "trello":
   334  		settings := todo_plus.FromTrello(moduleName, moduleConfig, config)
   335  		widget = todo_plus.NewWidget(tviewApp, redrawChan, pages, settings)
   336  	case "twitch":
   337  		settings := twitch.NewSettingsFromYAML(moduleName, moduleConfig, config)
   338  		widget = twitch.NewWidget(tviewApp, redrawChan, pages, settings)
   339  	case "twitter":
   340  		settings := twitter.NewSettingsFromYAML(moduleName, moduleConfig, config)
   341  		widget = twitter.NewWidget(tviewApp, redrawChan, pages, settings)
   342  	case "twitterstats":
   343  		settings := twitterstats.NewSettingsFromYAML(moduleName, moduleConfig, config)
   344  		widget = twitterstats.NewWidget(tviewApp, redrawChan, pages, settings)
   345  	case "updown":
   346  		settings := updown.NewSettingsFromYAML(moduleName, moduleConfig, config)
   347  		widget = updown.NewWidget(tviewApp, redrawChan, pages, settings)
   348  	case "uptimerobot":
   349  		settings := uptimerobot.NewSettingsFromYAML(moduleName, moduleConfig, config)
   350  		widget = uptimerobot.NewWidget(tviewApp, redrawChan, pages, settings)
   351  	case "urlcheck":
   352  		settings := urlcheck.NewSettingsFromYAML(moduleName, moduleConfig, config)
   353  		widget = urlcheck.NewWidget(tviewApp, redrawChan, settings)
   354  	case "victorops":
   355  		settings := victorops.NewSettingsFromYAML(moduleName, moduleConfig, config)
   356  		widget = victorops.NewWidget(tviewApp, redrawChan, settings)
   357  	case "weather":
   358  		settings := weather.NewSettingsFromYAML(moduleName, moduleConfig, config)
   359  		widget = weather.NewWidget(tviewApp, redrawChan, pages, settings)
   360  	case "zendesk":
   361  		settings := zendesk.NewSettingsFromYAML(moduleName, moduleConfig, config)
   362  		widget = zendesk.NewWidget(tviewApp, redrawChan, pages, settings)
   363  	case "pivotal":
   364  		settings := pivotal.NewSettingsFromYAML(moduleName, moduleConfig, config)
   365  		widget = pivotal.NewWidget(tviewApp, redrawChan, pages, settings)
   366  	case "finnhub":
   367  		settings := finnhub.NewSettingsFromYAML(moduleName, moduleConfig, config)
   368  		widget = finnhub.NewWidget(tviewApp, redrawChan, settings)
   369  	case "yfinance":
   370  		settings := yfinance.NewSettingsFromYAML(moduleName, moduleConfig, config)
   371  		widget = yfinance.NewWidget(tviewApp, redrawChan, settings)
   372  	default:
   373  		settings := unknown.NewSettingsFromYAML(moduleName, moduleConfig, config)
   374  		widget = unknown.NewWidget(tviewApp, redrawChan, settings)
   375  	}
   376  
   377  	return widget
   378  }
   379  
   380  // MakeWidgets creates and returns a collection of enabled widgets
   381  func MakeWidgets(tviewApp *tview.Application, pages *tview.Pages, config *config.Config, redrawChan chan bool) []wtf.Wtfable {
   382  	var widgets []wtf.Wtfable
   383  
   384  	moduleNames, _ := config.Map("wtf.mods")
   385  
   386  	for moduleName := range moduleNames {
   387  		widget := MakeWidget(tviewApp, pages, moduleName, config, redrawChan)
   388  
   389  		if widget != nil {
   390  			widgets = append(widgets, widget)
   391  		}
   392  	}
   393  
   394  	return widgets
   395  }