mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-03-29 22:07:13 +02:00
47 lines
991 B
Go
47 lines
991 B
Go
package gocui
|
|
|
|
import "time"
|
|
|
|
func (g *Gui) loaderTick() {
|
|
go func() {
|
|
for range time.Tick(time.Millisecond * 50) {
|
|
for _, view := range g.Views() {
|
|
if view.HasLoader {
|
|
g.userEvents <- userEvent{func(g *Gui) error { return nil }}
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}()
|
|
}
|
|
|
|
func (v *View) loaderLines() [][]cell {
|
|
duplicate := make([][]cell, len(v.lines))
|
|
for i := range v.lines {
|
|
if i < len(v.lines)-1 {
|
|
duplicate[i] = make([]cell, len(v.lines[i]))
|
|
copy(duplicate[i], v.lines[i])
|
|
} else {
|
|
duplicate[i] = make([]cell, len(v.lines[i])+2)
|
|
copy(duplicate[i], v.lines[i])
|
|
duplicate[i][len(duplicate[i])-2] = cell{chr: ' '}
|
|
duplicate[i][len(duplicate[i])-1] = Loader()
|
|
}
|
|
}
|
|
|
|
return duplicate
|
|
}
|
|
|
|
// Loader can show a loading animation
|
|
func Loader() cell {
|
|
characters := "|/-\\"
|
|
now := time.Now()
|
|
nanos := now.UnixNano()
|
|
index := nanos / 50000000 % int64(len(characters))
|
|
str := characters[index : index+1]
|
|
chr := []rune(str)[0]
|
|
return cell{
|
|
chr: chr,
|
|
}
|
|
}
|