// package serv_gui -- десктопная графика для сервера package serv_gui import ( "fmt" "github.com/AllenDang/giu" "wartank/pkg/types" ) // ServGui -- десктопная графика для сервера type ServGui struct { serv types.IServer wnd *giu.MasterWindow } // NewServGui -- возвращает новую графику для сервера func NewServGui(serv types.IServer) (*ServGui, error) { if serv == nil { return nil, fmt.Errorf("NewServGui(): IServer==nil") } sf := &ServGui{ serv: serv, wnd: giu.NewMasterWindow("Hello world", 400, 200, 0), } return sf, nil } // Run -- запускает работу графики сервера func (sf *ServGui) Run() { sf.wnd.Run(sf.loop) } func (sf *ServGui) onClickMe() { fmt.Println("War-tank end work!") sf.serv.CancelApp() sf.wnd.Close() } func onImSoCute() { fmt.Println("click btn!!") } func (sf *ServGui) loop() { giu.SingleWindow().Layout( giu.Row( giu.Align(giu.AlignCenter).To( giu.Style().SetFontSize(20).To( giu.Label("[ WarTank ]"), ), ), ), giu.Row( giu.Column( giu.Button("Выход").OnClick(sf.onClickMe), giu.Button("Click me").OnClick(onImSoCute), ), giu.Column( giu.Button("Выход").OnClick(sf.onClickMe), giu.Spacing(), giu.Button("Click me").OnClick(onImSoCute), ), ), giu.Row( giu.Column( giu.Button("Выход").OnClick(sf.onClickMe), giu.Button("Click me").OnClick(onImSoCute), ), giu.Column( giu.Button("Выход").OnClick(sf.onClickMe), giu.Spacing(), giu.Button("Click me").OnClick(onImSoCute), ), ), ) }