-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscrollingspinner.go
39 lines (32 loc) · 1.09 KB
/
scrollingspinner.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package ttyprogress
import (
"github.com/mandelsoft/ttyprogress/specs"
)
// ScrollingScrollingSpinner is a progress indicator without information about
// the concrete progress using a scrolling text to indicate the progress.
type ScrollingSpinner interface {
specs.ScrollingSpinnerInterface
}
type ScrollingSpinnerDefinition struct {
specs.ScrollingSpinnerDefinition[*ScrollingSpinnerDefinition]
}
func NewScrollingSpinner(text string, length int) *ScrollingSpinnerDefinition {
d := &ScrollingSpinnerDefinition{}
d.ScrollingSpinnerDefinition = specs.NewScrollingSpinnerDefinition(specs.NewSelf(d), text, length)
return d
}
func (d *ScrollingSpinnerDefinition) GetGroupNotifier() specs.GroupNotifier {
return &specs.VoidGroupNotifier{}
}
func (d *ScrollingSpinnerDefinition) Dup() *ScrollingSpinnerDefinition {
dup := &ScrollingSpinnerDefinition{}
dup.ScrollingSpinnerDefinition = d.ScrollingSpinnerDefinition.Dup(specs.NewSelf(dup))
return dup
}
func (d *ScrollingSpinnerDefinition) Add(c Container) (Spinner, error) {
s, err := newSpinner(c, d)
if s != nil {
s.Flush()
}
return s, err
}