Переглянути джерело

d01 Добавление нового десктопа

SVI 2 роки тому
батько
коміт
bac22e81de
2 змінених файлів з 52 додано та 0 видалено
  1. 17 0
      desktop/desktop.go
  2. 35 0
      desktop/win_main/win_main.go

+ 17 - 0
desktop/desktop.go

@@ -1,6 +1,23 @@
 // package desktop -- десктопный клиент к серверу
 package desktop
 
+import "wartank/desktop/win_main"
+
 // Desktop -- десктопный клиент к серверу
 type Desktop struct {
+	winMain *win_main.WinMain
+}
+
+// NewDesktop -- возвращает новое окно десктопа
+func NewDesktop() (*Desktop, error) {
+	sf := &Desktop{
+		winMain: win_main.NewWinMain(),
+	}
+	return sf, nil
+}
+
+// Run -- запускает графику в работу
+func (sf *Desktop) Run() error {
+	sf.winMain.Run()
+	return nil
 }

+ 35 - 0
desktop/win_main/win_main.go

@@ -0,0 +1,35 @@
+// package win_main -- главное окно приложения
+package win_main
+
+import (
+	"github.com/visualfc/atk/tk"
+)
+
+type WinMain struct {
+	*tk.Window
+}
+
+// NewWinmain -- возвращает новое главное окно
+func NewWinMain() *WinMain {
+	sf := &WinMain{
+		Window: tk.RootWindow(),
+	}
+	lbl := tk.NewLabel(sf, "Hello ATK")
+	btn := tk.NewButton(sf, "Quit")
+	btn.OnCommand(func() {
+		tk.Quit()
+	})
+	tk.NewVPackLayout(sf).AddWidgets(lbl, tk.NewLayoutSpacer(sf, 0, true), btn)
+	sf.ResizeN(300, 200)
+	return sf
+}
+
+// Запускает графику в работу
+func (sf *WinMain) Run() {
+	fnMake := func() {
+		sf.SetTitle("ATK Sample")
+		sf.Center(nil)
+		sf.ShowNormal()
+	}
+	tk.MainLoop(fnMake)
+}