aboutsummaryrefslogtreecommitdiff
path: root/utils/ncfmt/effects.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/ncfmt/effects.go')
-rw-r--r--utils/ncfmt/effects.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/utils/ncfmt/effects.go b/utils/ncfmt/effects.go
new file mode 100644
index 0000000..170ed11
--- /dev/null
+++ b/utils/ncfmt/effects.go
@@ -0,0 +1,54 @@
+package ncfmt
+
+import (
+ "fmt"
+ "time"
+
+ . "github.com/gbin/goncurses"
+)
+
+func BlinkCursorUntilInput(scr *Window, pos_y int, pos_x int, interval time.Duration) Key {
+ scr.Move(pos_y, pos_x)
+ var activation_key Key
+ for {
+ Cursor(2)
+ scr.Timeout(int((interval / 3).Milliseconds()))
+ activation_key = scr.GetChar()
+ if activation_key != 0 {
+ break
+ }
+ time.Sleep(interval / 3)
+ Cursor(0)
+ time.Sleep(interval / 3)
+ }
+ return activation_key
+}
+func BlinkCursorUntilDone(scr *Window, pos_y int, pos_x int, interval time.Duration, done <-chan bool) {
+ scr.Move(pos_y, pos_x)
+ for {
+ Cursor(2)
+ select {
+ case is_done, ok := <-done:
+ if ok && is_done {
+ return
+ } else {
+ fmt.Println("Channel closed?")
+ }
+ default:
+ time.Sleep(interval / 2)
+ Cursor(0)
+ time.Sleep(interval / 2)
+
+ }
+ }
+}
+func BlinkCursorWithTime(scr *Window, pos_y int, pos_x int, duration time.Duration, interval time.Duration) {
+ scr.Move(pos_y, pos_x)
+ n := duration / interval
+ for i := 0; i < int(n); i++ {
+ Cursor(2)
+ time.Sleep(interval / 2)
+ Cursor(0)
+ time.Sleep(interval / 2)
+ }
+}