|
|
@@ -2,42 +2,48 @@
|
|
|
package win_main
|
|
|
|
|
|
import (
|
|
|
+ "github.com/sirupsen/logrus"
|
|
|
"github.com/visualfc/atk/tk"
|
|
|
)
|
|
|
|
|
|
type WinMain struct {
|
|
|
- win *tk.Window
|
|
|
+ win *tk.Window
|
|
|
+ pack *tk.PackLayout
|
|
|
}
|
|
|
|
|
|
// NewWinmain -- возвращает новое главное окно
|
|
|
func NewWinMain() *WinMain {
|
|
|
sf := &WinMain{}
|
|
|
-
|
|
|
return sf
|
|
|
}
|
|
|
|
|
|
func (sf *WinMain) quit() {
|
|
|
+ logrus.Infoln("Winmain.quit()")
|
|
|
tk.Quit()
|
|
|
}
|
|
|
|
|
|
-func (sf *WinMain) newWindow() *tk.Window {
|
|
|
- win := tk.RootWindow()
|
|
|
- lbl := tk.NewLabel(win, "Hello ATK")
|
|
|
- btn := tk.NewButton(win, "Выход")
|
|
|
- btn.OnCommand(sf.quit)
|
|
|
- tk.NewVPackLayout(win).AddWidgets(lbl, tk.NewLayoutSpacer(win, 0, true), btn)
|
|
|
- win.ResizeN(300, 200)
|
|
|
- return win
|
|
|
+// Вызывается в отдельном потоке, как значение mainloop
|
|
|
+func (sf *WinMain) newWindow() {
|
|
|
+ sf.win = tk.RootWindow()
|
|
|
+ sf.pack = tk.NewVPackLayout(sf.win)
|
|
|
+ lbl := tk.NewLabel(sf.win, "Hello ATK")
|
|
|
+ btnExit := tk.NewButton(sf.win, "Выход")
|
|
|
+ btnExit.OnCommand(sf.quit)
|
|
|
+ hPack := tk.NewHPackLayout(sf.win)
|
|
|
+ hPack.AddWidgetEx(btnExit, tk.FillX, true, tk.AnchorEast)
|
|
|
+ // Вертикальная раскладка
|
|
|
+ vPack := tk.NewVPackLayout(sf.win)
|
|
|
+ vPack.AddWidgets(lbl, tk.NewLayoutSpacer(sf.win, 0, true))
|
|
|
+ sf.win.ResizeN(300, 200)
|
|
|
+ sf.win.SetTitle("WarTank")
|
|
|
+ sf.win.Center(nil)
|
|
|
+ sf.pack.SetBorderWidth(3)
|
|
|
+ sf.pack.AddWidgetEx(vPack, tk.FillBoth, true, tk.AnchorCenter)
|
|
|
+ sf.pack.AddWidgetEx(hPack, tk.FillX, false, tk.AnchorSouth)
|
|
|
+ sf.win.ShowNormal()
|
|
|
}
|
|
|
|
|
|
// Запускает графику в работу
|
|
|
func (sf *WinMain) Run() {
|
|
|
- fnMake := func() {
|
|
|
- win := sf.newWindow()
|
|
|
- win.SetTitle("WarTank")
|
|
|
- win.Center(nil)
|
|
|
- win.ShowNormal()
|
|
|
- sf.win = win
|
|
|
- }
|
|
|
- tk.MainLoop(fnMake)
|
|
|
+ tk.MainLoop(sf.newWindow)
|
|
|
}
|