Andreas Krennmair f1d2fee386 Add spinner widget.
Signed-off-by: Andreas Krennmair <ak@synflood.at>
2022-10-23 15:21:12 +02:00

68 lines
1.9 KiB
Go

package main
import (
"time"
"github.com/navidys/tvxwidgets"
"github.com/rivo/tview"
)
func main() {
app := tview.NewApplication()
grid := tview.NewGrid()
grid.SetBorder(true).SetTitle("Spinners")
spinners := [][]*tvxwidgets.Spinner{
{
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerDotsCircling),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerDotsUpDown),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerBounce),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerLine),
},
{
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerCircleQuarters),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerSquareCorners),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerCircleHalves),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerCorners),
},
{
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerArrows),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerHamburger),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerStack),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerStar),
},
{
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerGrowHorizontal),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerGrowVertical),
tvxwidgets.NewSpinner().SetStyle(tvxwidgets.SpinnerBoxBounce),
tvxwidgets.NewSpinner().SetCustomStyle([]rune{'🕛', '🕐', '🕑', '🕒', '🕓', '🕔', '🕕', '🕖', '🕗', '🕘', '🕙', '🕚'}),
},
}
for rowIdx, row := range spinners {
for colIdx, spinner := range row {
grid.AddItem(spinner, rowIdx, colIdx, 1, 1, 1, 1, false)
}
}
update := func() {
tick := time.NewTicker(100 * time.Millisecond)
for {
select {
case <-tick.C:
for _, row := range spinners {
for _, spinner := range row {
spinner.Pulse()
}
}
app.Draw()
}
}
}
go update()
if err := app.SetRoot(grid, false).EnableMouse(true).Run(); err != nil {
panic(err)
}
}