-
Notifications
You must be signed in to change notification settings - Fork 5
/
tui.go
54 lines (43 loc) · 1.34 KB
/
tui.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
package main
import (
"fmt"
"io"
"time"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
func renderHeader(frame *tview.Frame) {
frame.Clear()
frame.AddText(fmt.Sprintf("servers %v", serversCount), true, tview.AlignLeft, tcell.ColorWhite)
frame.AddText(fmt.Sprintf("shares %v", sharesCount), true, tview.AlignLeft, tcell.ColorWhite)
frame.AddText(fmt.Sprintf("folders %v", foldersCount), true, tview.AlignLeft, tcell.ColorWhite)
frame.AddText(fmt.Sprintf("files %v", filesCount), true, tview.AlignLeft, tcell.ColorWhite)
frame.
AddText("smbwatch v0.1", true, tview.AlignRight, tcell.ColorWhite).
AddText(fmt.Sprintf("commit %v", commitHash), true, tview.AlignRight, tcell.ColorWhite).
AddText("telekom security", true, tview.AlignRight, tcell.ColorWhite)
}
func renderTui() (*tview.Application, io.Writer) {
var app = tview.NewApplication()
tview.Styles.PrimitiveBackgroundColor = tcell.ColorDefault
body := tview.NewTextView().
SetWrap(true).
SetDynamicColors(true)
body.SetChangedFunc(func() {
if body.HasFocus() {
app.Draw()
}
})
frame := tview.NewFrame(body).SetBorders(2, 2, 2, 2, 4, 4)
renderHeader(frame)
go func() {
for {
app.QueueUpdateDraw(func() {
renderHeader(frame)
})
time.Sleep(100 * time.Millisecond)
}
}()
app.SetRoot(frame, true).SetFocus(frame)
return app, body
}