// package win_main -- главное окно приложения package win_main import ( "github.com/sirupsen/logrus" "github.com/visualfc/atk/tk" ) type WinMain struct { win *tk.Window pack *tk.PackLayout } // NewWinmain -- возвращает новое главное окно func NewWinMain() *WinMain { sf := &WinMain{} return sf } func (sf *WinMain) quit() { logrus.Infoln("Winmain.quit()") tk.Quit() } // Вызывается в отдельном потоке, как значение 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() { tk.MainLoop(sf.newWindow) }