-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwindowimpl.go
94 lines (80 loc) · 1.67 KB
/
windowimpl.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//go:build impl
package faithtop
import (
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/gui"
"github.com/therecipe/qt/widgets"
)
type WindowImpl struct {
window *widgets.QMainWindow
deferShow bool
qtBridge *QtBridge
}
func init() {
newWindowImpl = func() IWindow {
v := &WindowImpl{
window: widgets.NewQMainWindow(nil, 0),
}
v.qtBridge = NewQtBridge(v.window)
return v
}
}
func (w *WindowImpl) Title(title string) IWindow {
w.window.SetWindowTitle(title)
return w
}
func (w *WindowImpl) Size(width, height int) IWindow {
w.window.SetMinimumSize2(width, height)
return w
}
func (w *WindowImpl) DeferShow() IWindow {
w.deferShow = true
return w
}
func (w *WindowImpl) Show() IWindow {
w.window.Show()
return w
}
func (w *WindowImpl) CenterWidget(widget IWidget) IWindow {
w.window.SetCentralWidget(widget.getWidget().(*WidgetImpl).widget)
if w.deferShow {
w.Show()
}
return w
}
func (w *WindowImpl) Assign(v *IWindow) IWindow {
*v = w
return w
}
func (w *WindowImpl) MenuBar(menubar IMenuBar) IWindow {
w.window.SetMenuBar(menubar.(*MenuBarImpl).menubar)
return w
}
func (w *WindowImpl) OnClose(fn func() bool) IWindow {
w.window.ConnectCloseEvent(func(event *gui.QCloseEvent) {
if fn() {
event.Ignore()
} else {
event.Accept()
}
})
return w
}
func (w *WindowImpl) IsActiveWindow() bool {
return w.window.IsActiveWindow()
}
func (w *WindowImpl) OnChanged(fn func()) IWindow {
w.window.ConnectChangeEvent(func(event *core.QEvent) {
fn()
})
return w
}
func (w *WindowImpl) Close() {
w.RunOnUIThread(func() {
w.window.Close()
})
}
func (w *WindowImpl) RunOnUIThread(fn func()) IWindow {
w.qtBridge.RunOnUIThread(fn)
return w
}