forked from Arisstath/raknet-dissector
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFilterLogWindow.go
More file actions
65 lines (55 loc) · 1.23 KB
/
FilterLogWindow.go
File metadata and controls
65 lines (55 loc) · 1.23 KB
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
64
65
package main
import (
"github.com/gotk3/gotk3/gtk"
)
type FilterLogWindow struct {
win *gtk.Window
textBuf *gtk.TextBuffer
}
func NewFilterLogWindow(title string) (*FilterLogWindow, error) {
win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
if err != nil {
return nil, err
}
win.SetTitle(title)
box, err := boxWithMargin()
if err != nil {
return nil, err
}
textBuf, err := gtk.TextBufferNew(nil)
if err != nil {
return nil, err
}
logView, err := gtk.TextViewNewWithBuffer(textBuf)
if err != nil {
return nil, err
}
logView.SetProperty("monospace", true)
logView.SetEditable(false)
logView.SetVExpand(true)
scrolled, err := gtk.ScrolledWindowNew(nil, nil)
if err != nil {
return nil, err
}
scrolled.Add(logView)
box.Add(scrolled)
clearButton, err := gtk.ButtonNewWithLabel("Clear")
if err != nil {
return nil, err
}
clearButton.Connect("clicked", func() {
textBuf.Delete(textBuf.GetStartIter(), textBuf.GetEndIter())
})
box.Add(clearButton)
win.Add(box)
return &FilterLogWindow{
win: win,
textBuf: textBuf,
}, nil
}
func (logWin *FilterLogWindow) AppendLog(log string) {
logWin.textBuf.Insert(logWin.textBuf.GetEndIter(), log)
}
func (logWin *FilterLogWindow) Show() {
logWin.win.ShowAll()
}