feat: a ton of input handling and Go TUI logic
Main: Added main interface with big output box and small input box Effects: Added some blinking lights effect for the cursor to prompt user of where to enter stuff
This commit is contained in:
parent
024eb0c2bb
commit
dc16793ad7
3 changed files with 135 additions and 22 deletions
54
utils/helper/effects.go
Normal file
54
utils/helper/effects.go
Normal file
|
@ -0,0 +1,54 @@
|
|||
package helper
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
|
@ -10,8 +10,8 @@ func IncrementalPrint(scr *Window, text string, from_y int, from_x int, interval
|
|||
for i:=0; i < len(text); i++ {
|
||||
ch := string([]rune(text)[i])
|
||||
_, mx := scr.MaxYX()
|
||||
cy := i / mx + 2 + from_y
|
||||
cx := i % mx + 2
|
||||
cy := i / mx + from_y
|
||||
cx := i % mx + 1
|
||||
scr.MovePrint(cy, cx, ch)
|
||||
time.Sleep( time.Duration(1000 / len(text)) * time.Millisecond)
|
||||
scr.Refresh()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue