/
first.go
63 lines (54 loc) · 1.16 KB
/
first.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package main
import (
"os"
"github.com/nsf/termbox-go"
)
func mainMenu(menu []string, sel int) {
for i := 1; i <= len(menu); i++ {
drawRichLine(1, i, menu[i-1], (sel == i))
}
termbox.Flush()
}
func drawRichLine(x, y int, text string, highlight bool) {
fg := termbox.ColorWhite
bg := termbox.ColorBlack
if highlight {
fg, bg = bg, fg
}
for index, ch := range text {
termbox.SetCell(x+index, y, ch, fg, bg)
}
}
func main() {
err := termbox.Init()
if err != nil {
panic(err)
}
defer termbox.Close()
eventQueue := make(chan termbox.Event)
go func() {
for {
eventQueue <- termbox.PollEvent()
}
}()
menu := []string{"Scanner vers reseau", "Scanner vers email", "ESC pour quitter"}
selMenu := 1
maxMenu := len(menu)
mainMenu(menu, selMenu)
for {
select {
case ev := <-eventQueue:
if ev.Type == termbox.EventKey && ev.Key == termbox.KeyEsc {
os.Exit(0)
}
if ev.Type == termbox.EventKey && ev.Key == termbox.KeyArrowDown && selMenu < maxMenu {
selMenu++
mainMenu(menu, selMenu)
}
if ev.Type == termbox.EventKey && ev.Key == termbox.KeyArrowUp && selMenu > 1 {
selMenu--
mainMenu(menu, selMenu)
}
}
}
}