package main

import (
	"fmt"
	"os"

	"github.com/mattn/go-gtk/glib"
	"github.com/mattn/go-gtk/gtk"
)

func HandleSignal(ctx *glib.CallbackContext) {
	arg := ctx.Data()
	data, isok := arg.(string)
	if isok {
		fmt.Printf("%s\n", data)
	}
}
func main() {
	// 初始化环境
	gtk.Init(&os.Args)

	win := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
	win.SetTitle("排盘工具")
	win.SetSizeRequest(800, 600)

	layout := gtk.NewFixed()
	win.Add(layout)

	b1 := gtk.NewButtonWithLabel("button1")
	b1.SetSizeRequest(100, 30)

	b2 := gtk.NewButtonWithLabel("button2")
	b2.SetSizeRequest(100, 30)

	layout.Put(b1, 0, 0)
	layout.Put(b2, 100, 0)

	win.ShowAll()

	// 事件
	str1 := "button1"
	b1.Connect("clicked", HandleSignal, str1) // 给函数传参

	// 匿名函数方式
	str2 := "botton2"
	b2.Connect("clicked", func() {
		fmt.Println(str2) // 直接捕获外部变量
	})

	// 主事件循环
	gtk.Main()
}