| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // 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)
- }
|