diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fe53cc6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +dest/ \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c718201 --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +macos: + mkdir -p dest/example.app/Contents/MacOS + # 用于放图标 + mkdir -p dest/example.app/Contents/Resources + go build -o dest/example.app/Contents/MacOS/example webview/main.go \ No newline at end of file diff --git a/go.mod b/go.mod index 2c582f1..17b5dd0 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module myschools.me/suguo/gui-demo go 1.17 require ( - github.com/webview/webview v0.0.0-20210330151455-f540d88dde4e + github.com/webview/webview v0.0.0-20220418180601-150aede5f486 github.com/zserge/lorca v0.1.10 ) diff --git a/go.sum b/go.sum index 3c8905f..aca758b 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/webview/webview v0.0.0-20210330151455-f540d88dde4e h1:z780M7mCrdt6KiICeW9SGirvQjxDlrVU+n99FO93nbI= github.com/webview/webview v0.0.0-20210330151455-f540d88dde4e/go.mod h1:rpXAuuHgyEJb6kXcXldlkOjU6y4x+YcASKKXJNUhh0Y= +github.com/webview/webview v0.0.0-20220418180601-150aede5f486 h1:4jCUgve4ePmTf11eOy47cE5Q+LPNXapD6mvuJtFieZE= +github.com/webview/webview v0.0.0-20220418180601-150aede5f486/go.mod h1:rpXAuuHgyEJb6kXcXldlkOjU6y4x+YcASKKXJNUhh0Y= github.com/zserge/lorca v0.1.10 h1:f/xBJ3D3ipcVRCcvN8XqZnpoKcOXV8I4vwqlFyw7ruc= github.com/zserge/lorca v0.1.10/go.mod h1:bVmnIbIRlOcoV285KIRSe4bUABKi7R7384Ycuum6e4A= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..f8fb8f8 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +webview02 实现部分功能 \ No newline at end of file diff --git a/webview/main.go b/webview/main.go new file mode 100644 index 0000000..ed41b23 --- /dev/null +++ b/webview/main.go @@ -0,0 +1,22 @@ +package main + +import "github.com/webview/webview" + +func main() { + debug := true + w := webview.New(debug) + defer w.Destroy() + w.SetTitle("zhengtan") + w.SetSize(1024, 768, webview.HintNone) + w.Navigate("http://redmine.myschools.me") + w.Bind("tt", TT) + w.Eval("") + w.Run() +} + +func TT(a, b int) (int, error) { + if a > 0 && b > 0 { + return a + b, nil + } + return 0, nil +} diff --git a/webview02/index.html b/webview02/index.html new file mode 100644 index 0000000..0b081b5 --- /dev/null +++ b/webview02/index.html @@ -0,0 +1,23 @@ + + + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/webview02/main.go b/webview02/main.go new file mode 100644 index 0000000..5dcf285 --- /dev/null +++ b/webview02/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "fmt" + + "github.com/webview/webview" +) + +func main() { + w := webview.New(true) + defer w.Destroy() + w.SetTitle("example") + w.SetSize(800, 600, webview.HintNone) + w.Navigate("http://192.168.0.19:8080") + w.Bind("hello", func(followers string) { + fmt.Println("CloudNativeFdn has", followers) + go say(w, followers) + }) + + w.Run() +} + +func say(w webview.WebView, followers string) { + w.Dispatch(func() { + w.Eval("say('asdfasdfasd')") + }) +} diff --git a/webview02/readme.md b/webview02/readme.md new file mode 100644 index 0000000..0a0fbf2 --- /dev/null +++ b/webview02/readme.md @@ -0,0 +1,8 @@ + + +##### 功能 + 1. js调用golang方法,存在的问题Bind存在多次,如有返回需要考虑结构问题 + 2. golang调用js代码,存在问题界面型(如弹框)无法实现 + +#### 其它 + html二进制打包 \ No newline at end of file diff --git a/webview03/main.go b/webview03/main.go new file mode 100644 index 0000000..823c2b9 --- /dev/null +++ b/webview03/main.go @@ -0,0 +1,111 @@ +package main + +import ( + "fmt" + "log" + "net" + "net/http" + + "github.com/webview/webview" +) + +var counter = 0 + +func handleRPC(w webview.WebView, data string) { + switch { + case data == "add": + counter++ + case data == "sub": + counter-- + } + w.Eval(fmt.Sprintf(`counter.innerHTML = "Counter: " + %d;`, counter)) +} + +func main() { + url := startServer() + w := webview.New(true) + defer w.Destroy() + w.SetTitle("example") + w.SetSize(800, 600, webview.HintNone) + w.Bind("add", handleRPC) + w.Navigate(url) + + w.Run() +} + +func startServer() string { + ln, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + log.Fatal(err) + } + go func() { + defer ln.Close() + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(indexHTML)) + }) + log.Fatal(http.Serve(ln, nil)) + }() + fmt.Println("http://" + ln.Addr().String()) + return "http://" + ln.Addr().String() +} + +var indexHTML = ` + + + + + + + + +