mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
Have all instances take a function Update the remaining modules to take this into account Numerous smaller refactors to make some widgets work more or less the same
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package view
|
|
|
|
import (
|
|
"github.com/rivo/tview"
|
|
"github.com/wtfutil/wtf/cfg"
|
|
"github.com/wtfutil/wtf/wtf"
|
|
)
|
|
|
|
// TextWidget defines the data necessary to make a text widget
|
|
type TextWidget struct {
|
|
Base
|
|
View *tview.TextView
|
|
}
|
|
|
|
// NewTextWidget creates and returns an instance of TextWidget
|
|
func NewTextWidget(app *tview.Application, commonSettings *cfg.Common, focusable bool) TextWidget {
|
|
widget := TextWidget{
|
|
Base: NewBase(app, commonSettings, focusable),
|
|
}
|
|
|
|
widget.View = widget.createView(widget.bordered)
|
|
|
|
return widget
|
|
}
|
|
|
|
/* -------------------- Exported Functions -------------------- */
|
|
|
|
func (widget *TextWidget) TextView() *tview.TextView {
|
|
return widget.View
|
|
}
|
|
|
|
func (widget *TextWidget) Redraw(data func() (string, string, bool)) {
|
|
widget.app.QueueUpdateDraw(func() {
|
|
title, content, wrap := data()
|
|
widget.View.Clear()
|
|
widget.View.SetWrap(wrap)
|
|
widget.View.SetTitle(widget.ContextualTitle(title))
|
|
widget.View.SetText(content)
|
|
})
|
|
}
|
|
|
|
/* -------------------- Unexported Functions -------------------- */
|
|
|
|
func (widget *TextWidget) createView(bordered bool) *tview.TextView {
|
|
view := tview.NewTextView()
|
|
|
|
view.SetBackgroundColor(wtf.ColorFor(widget.commonSettings.Colors.Background))
|
|
view.SetBorder(bordered)
|
|
view.SetBorderColor(wtf.ColorFor(widget.BorderColor()))
|
|
view.SetDynamicColors(true)
|
|
view.SetTextColor(wtf.ColorFor(widget.commonSettings.Colors.Text))
|
|
view.SetTitleColor(wtf.ColorFor(widget.commonSettings.Colors.Title))
|
|
view.SetWrap(false)
|
|
|
|
return view
|
|
}
|