From 027e6d3f958091fab07a00ccc9fba31ead37901f Mon Sep 17 00:00:00 2001 From: harveyshao Date: Sat, 9 Apr 2022 17:58:13 +0800 Subject: [PATCH] opt webview --- go.mod | 6 +++++- go.sum | 20 ------------------- src/debug/go.sum | 20 ------------------- src/webview.go | 51 +++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 51 insertions(+), 46 deletions(-) diff --git a/go.mod b/go.mod index 6cba2e20..34ac7139 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,17 @@ go 1.11 require shylinux.com/x/ice v0.8.9 require ( + github.com/kr/pty v1.1.8 // indirect + github.com/sqweek/dialog v0.0.0-20220227145630-7a1c9e333fcf + github.com/webview/webview v0.0.0-20220407190137-85a0d5c36d07 // indirect + golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect shylinux.com/x/golang-story v0.3.8 shylinux.com/x/icebergs v1.1.6 shylinux.com/x/linux-story v0.3.6 shylinux.com/x/mysql-story v0.3.9 shylinux.com/x/nginx-story v0.3.9 shylinux.com/x/redis-story v0.3.9 - shylinux.com/x/webview v0.0.1 + shylinux.com/x/webview v0.0.1 // indirect ) replace ( diff --git a/go.sum b/go.sum index 404e7f02..744aee98 100644 --- a/go.sum +++ b/go.sum @@ -1,23 +1,3 @@ -github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf/go.mod h1:peYoMncQljjNS6tZwI9WVyQB3qZS6u79/N3mBOcnd3I= -github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -github.com/sqweek/dialog v0.0.0-20220227145630-7a1c9e333fcf h1:ug6+uVJ1DgQznhPLlZGtndR/NNNadNAzhzhskHOem3Y= -github.com/sqweek/dialog v0.0.0-20220227145630-7a1c9e333fcf/go.mod h1:/qNPSY91qTz/8TgHEMioAUc6q7+3SOybeKczHMXFcXw= -github.com/webview/webview v0.0.0-20220407190137-85a0d5c36d07 h1:dKxptGWk9AWi4Ptx0p/+CYSdREre1fIF7FOqkOFJcxQ= -github.com/webview/webview v0.0.0-20220407190137-85a0d5c36d07/go.mod h1:rpXAuuHgyEJb6kXcXldlkOjU6y4x+YcASKKXJNUhh0Y= -golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= -golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= shylinux.com/x/go-qrcode v0.0.1 h1:/eOGqMj1qtgs9Ymd12zTUa1gcJZs9S92kj2lb0QzKsE= shylinux.com/x/go-qrcode v0.0.1/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po= shylinux.com/x/go-sql-mysql v0.0.1 h1:VX5SrwLBKzfkRouj39LgJ9reIXOWmMsScRpr+e0qdp0= diff --git a/src/debug/go.sum b/src/debug/go.sum index 404e7f02..744aee98 100644 --- a/src/debug/go.sum +++ b/src/debug/go.sum @@ -1,23 +1,3 @@ -github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf/go.mod h1:peYoMncQljjNS6tZwI9WVyQB3qZS6u79/N3mBOcnd3I= -github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -github.com/sqweek/dialog v0.0.0-20220227145630-7a1c9e333fcf h1:ug6+uVJ1DgQznhPLlZGtndR/NNNadNAzhzhskHOem3Y= -github.com/sqweek/dialog v0.0.0-20220227145630-7a1c9e333fcf/go.mod h1:/qNPSY91qTz/8TgHEMioAUc6q7+3SOybeKczHMXFcXw= -github.com/webview/webview v0.0.0-20220407190137-85a0d5c36d07 h1:dKxptGWk9AWi4Ptx0p/+CYSdREre1fIF7FOqkOFJcxQ= -github.com/webview/webview v0.0.0-20220407190137-85a0d5c36d07/go.mod h1:rpXAuuHgyEJb6kXcXldlkOjU6y4x+YcASKKXJNUhh0Y= -golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= -golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= shylinux.com/x/go-qrcode v0.0.1 h1:/eOGqMj1qtgs9Ymd12zTUa1gcJZs9S92kj2lb0QzKsE= shylinux.com/x/go-qrcode v0.0.1/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po= shylinux.com/x/go-sql-mysql v0.0.1 h1:VX5SrwLBKzfkRouj39LgJ9reIXOWmMsScRpr+e0qdp0= diff --git a/src/webview.go b/src/webview.go index 8d26dce5..cb5985b3 100644 --- a/src/webview.go +++ b/src/webview.go @@ -2,13 +2,54 @@ package main import ( "os" + "strings" "time" "shylinux.com/x/ice" + "shylinux.com/x/icebergs/base/nfs" kit "shylinux.com/x/toolkits" "shylinux.com/x/webview" ) +type view struct{ w webview.WebView } + +func (v view) Title(text string) { v.w.SetTitle(text) } +func (v view) Webview(url string) { v.w.Navigate(url) } +func (v view) Open(url string) { v.w.Navigate(url) } +func (v view) Terminate() { v.w.Terminate() } +func (v view) Close() { + if !menu(v.w) { + v.Terminate() + } +} + +func menu(w webview.WebView) bool { + kit.Reflect(view{w: w}, func(name string, value interface{}) { w.Bind(name, value) }) + list := []string{} + ice.Pulse.Cmd(nfs.CAT, "src/webview.txt", func(ls []string, line string) { + if len(ls) > 1 { + list = append(list, kit.Format(``, ls[0], ls[0])) + w.Bind(ls[0], func() { + w.SetSize(1200, 800, webview.HintNone) + w.Navigate(ls[1]) + }) + } + }) + + if len(list) == 0 { + return false + } + + w.SetTitle("contexts") + w.SetSize(200, 60*len(list), webview.HintNone) + w.Navigate(kit.Format(`data:text/html, + + + + %s + `, strings.Join(list, ""))) + return true +} func main() { os.Chdir(kit.HomePath("contexts")) go ice.Run("serve", "start") @@ -16,9 +57,9 @@ func main() { w := webview.New(true) defer w.Destroy() - - w.SetTitle("contexts") - w.SetSize(1200, 800, webview.HintNone) - w.Navigate("http://localhost:9020") - w.Run() + defer w.Run() + if !menu(w) { + w.SetSize(1200, 800, webview.HintNone) + w.Navigate("http://localhost:9020") + } }