From badacdd45b33eaa89c278b6b418a82f96e626fbb Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Wed, 15 Sep 2021 22:43:25 +1000 Subject: [PATCH] [mac] Get wails CLI to compile --- v2/go.mod | 9 +- v2/go.sum | 37 -- v2/internal/app/dev.go | 5 +- v2/internal/appng/app_darwin.go | 15 + .../frontend/desktop/darwin/browser.go | 11 + v2/internal/frontend/desktop/darwin/dialog.go | 33 ++ .../frontend/desktop/darwin/frontend.go | 418 ++++++++++++++++++ v2/internal/frontend/desktop/darwin/menu.go | 97 ++++ .../frontend/desktop/desktop_darwin.go | 19 + 9 files changed, 599 insertions(+), 45 deletions(-) create mode 100644 v2/internal/appng/app_darwin.go create mode 100644 v2/internal/frontend/desktop/darwin/browser.go create mode 100644 v2/internal/frontend/desktop/darwin/dialog.go create mode 100644 v2/internal/frontend/desktop/darwin/frontend.go create mode 100644 v2/internal/frontend/desktop/darwin/menu.go create mode 100644 v2/internal/frontend/desktop/desktop_darwin.go diff --git a/v2/go.mod b/v2/go.mod index 60aab615e..d85f5ace4 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -16,7 +16,6 @@ require ( github.com/gorilla/websocket v1.4.1 github.com/imdario/mergo v0.3.12 github.com/jackmordaunt/icns v1.0.0 - github.com/klauspost/compress v1.12.2 // indirect github.com/leaanthony/clir v1.0.4 github.com/leaanthony/debme v1.2.1 github.com/leaanthony/go-ansi-parser v1.0.1 @@ -38,11 +37,9 @@ require ( github.com/tdewolff/test v1.0.6 // indirect github.com/tidwall/sjson v1.1.7 github.com/tkrajina/typescriptify-golang-structs v0.1.6 - github.com/wailsapp/wails v1.16.6 github.com/wzshiming/ctc v1.2.3 github.com/xyproto/xpm v1.2.1 github.com/ztrue/tracerr v0.3.0 - golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect golang.org/x/mod v0.4.1 // indirect golang.org/x/net v0.0.0-20210510120150-4163338589ed golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf @@ -52,7 +49,6 @@ require ( require ( github.com/Microsoft/go-winio v0.4.16 // indirect - github.com/abadojack/whatlanggo v1.0.1 // indirect github.com/andybalholm/brotli v1.0.2 // indirect github.com/emirpasic/gods v1.12.0 // indirect github.com/fasthttp/websocket v0.0.0-20200320073529-1554a54587ab // indirect @@ -62,14 +58,13 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jchv/go-winloader v0.0.0-20200815041850-dec1ee9a7fd5 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect + github.com/klauspost/compress v1.12.2 // indirect github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e // indirect github.com/mattn/go-runewidth v0.0.7 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect github.com/savsgio/gotils v0.0.0-20200117113501-90175b0fbe3f // indirect github.com/sergi/go-diff v1.1.0 // indirect - github.com/sirupsen/logrus v1.4.1 // indirect github.com/tidwall/gjson v1.8.0 // indirect github.com/tidwall/match v1.0.3 // indirect github.com/tidwall/pretty v1.1.0 // indirect @@ -79,8 +74,8 @@ require ( github.com/valyala/tcplisten v1.0.0 // indirect github.com/wzshiming/winseq v0.0.0-20200112104235-db357dc107ae // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect + golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect golang.org/x/image v0.0.0-20201208152932-35266b937fa6 // indirect - golang.org/x/text v0.3.6 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/v2/go.sum b/v2/go.sum index 39130671a..762a95c0a 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -1,12 +1,8 @@ -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= -github.com/abadojack/whatlanggo v1.0.1 h1:19N6YogDnf71CTHm3Mp2qhYfkRdyvbgwWdd2EPxJRG4= -github.com/abadojack/whatlanggo v1.0.1/go.mod h1:66WiQbSbJBIlOZMsvbKe5m6pzQovxCH9B/K8tQB2uoc= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/andybalholm/brotli v1.0.2 h1:JKnhI/XQ75uFBTiuzXpzFrUriDPiZjlOSzh6wXogP0E= @@ -23,7 +19,6 @@ github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/fasthttp/websocket v0.0.0-20200320073529-1554a54587ab h1:9e2joQGp642wHGFP5m86SDptAavrdGBe8/x9DGEEAaI= github.com/fasthttp/websocket v0.0.0-20200320073529-1554a54587ab/go.mod h1:smsv/h4PBEBaU0XDTY5UwJTpZv69fQ0FfcLJr21mA6Y= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= @@ -51,7 +46,6 @@ github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNI github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/colors v1.2.0/go.mod h1:miw1R2JIE19cclPxsXqNdzLZsk4DP4iF+m88bRc7kfM= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= @@ -82,10 +76,8 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/jackmordaunt/icns v1.0.0 h1:RYSxplerf/l/DUd09AHtITwckkv/mqjVv4DjYdPmAMQ= @@ -97,8 +89,6 @@ github.com/jchv/go-winloader v0.0.0-20200815041850-dec1ee9a7fd5/go.mod h1:alcuEE github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kennygrant/sanitize v1.2.4/go.mod h1:LGsjYYtgxbetdg5owWB2mpgUL6e2nfw2eObZ0u0qvak= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= @@ -107,8 +97,6 @@ github.com/klauspost/compress v1.12.2 h1:2KCfW3I9M7nSc5wOqXAlW2v2U6v+w6cbjvbfp+O github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -131,16 +119,12 @@ github.com/leaanthony/gosod v1.0.1 h1:F+4c3DmEBfigi7oAswCV2RpQ+k4DcNbhuCZUGdBHac github.com/leaanthony/gosod v1.0.1/go.mod h1:W8RyeSFBXu7RpIxPGEJfW4moSyGGEjlJMLV25wEbAdU= github.com/leaanthony/idgen v1.0.0 h1:IZreR+JGEzFV4yeVuBZA25gM0keUoFy+RDUldncQ+Jw= github.com/leaanthony/idgen v1.0.0/go.mod h1:4nBZnt8ml/f/ic/EVQuLxuj817RccT2fyrUaZFxrcVA= -github.com/leaanthony/slicer v1.4.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY= github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY= github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY= -github.com/leaanthony/spinner v0.5.3/go.mod h1:oHlrvWicr++CVV7ALWYi+qHk/XNA91D9IJ48IqmpVUo= -github.com/leaanthony/synx v0.1.0/go.mod h1:Iz7eybeeG8bdq640iR+CwYb8p+9EOsgMWghkSRyZcqs= github.com/leaanthony/webview2runtime v1.1.0 h1:N0pv55ift8XtqozIp4PNOtRCJ/Qdd/qzx80lUpalS4c= github.com/leaanthony/webview2runtime v1.1.0/go.mod h1:hH9GnWCve3DYzNaPOcPbhHQ7fodXR1QJNsnwixid4Tk= github.com/leaanthony/winc v0.0.0-20210906113646-fd400754f6ba h1:JalbOARv2XoT3RtJg7XGKKYcp7IndycC7pccLlfVRZI= github.com/leaanthony/winc v0.0.0-20210906113646-fd400754f6ba/go.mod h1:KEbMsKoznsebyGHwLk5LqkFOxL5uXSRdvpP4+avmAMs= -github.com/leaanthony/wincursor v0.1.0/go.mod h1:7TVwwrzSH/2Y9gLOGH+VhA+bZhoWXBRgbGNTMk+yimE= github.com/leaanthony/winicon v1.0.0 h1:ZNt5U5dY71oEoKZ97UVwJRT4e+5xo5o/ieKuHuk8NqQ= github.com/leaanthony/winicon v1.0.0/go.mod h1:en5xhijl92aphrJdmRPlh4NI1L6wq3gEm0LpXAPghjU= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= @@ -149,17 +133,10 @@ github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e h1:9MlwzLdW7QSD github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= @@ -171,7 +148,6 @@ github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 h1:acNfDZXmm28D2Yg/c3ALnZStzNaZMSagpbr96vY6Zjc= github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -183,17 +159,14 @@ github.com/savsgio/gotils v0.0.0-20200117113501-90175b0fbe3f h1:PgA+Olipyj258EIE github.com/savsgio/gotils v0.0.0-20200117113501-90175b0fbe3f/go.mod h1:lHhJedqxCoHN+zMtwGNTXWmF0u9Jt363FYRhV6g0CdY= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/syossan27/tebata v0.0.0-20180602121909-b283fe4bc5ba/go.mod h1:iLnlXG2Pakcii2CU0cbY07DRCSvpWNa7nFxtevhOChk= github.com/tc-hib/winres v0.1.5 h1:2dA5yfjdoEA3UyRaOC92HNMt3jap66pLzoW4MjpC/0M= github.com/tc-hib/winres v0.1.5/go.mod h1:pe6dOR40VOrGz8PkzreVKNvEKnlE8t4yR8A8naL+t7A= github.com/tdewolff/minify v2.3.6+incompatible h1:2hw5/9ZvxhWLvBUnHE06gElGYz+Jv9R4Eys0XUzItYo= @@ -227,8 +200,6 @@ github.com/valyala/fasthttp v1.28.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfY github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/wailsapp/wails v1.16.6 h1:iN0tP0O/Gwr8SKWwgH4t+IqDlMCGeVquWoHTegk8JlQ= -github.com/wailsapp/wails v1.16.6/go.mod h1:aADbAvTzZrKGd4Td7d1l4Dp5Hx7lLJEvVH7guIHoDf8= github.com/wzshiming/ctc v1.2.3 h1:q+hW3IQNsjIlOFBTGZZZeIXTElFM4grF4spW/errh/c= github.com/wzshiming/ctc v1.2.3/go.mod h1:2tVAtIY7SUyraSk0JxvwmONNPFL4ARavPuEsg5+KA28= github.com/wzshiming/winseq v0.0.0-20200112104235-db357dc107ae h1:tpXvBXC3hpQBDCc9OojJZCQMVRAbT3TTdUMP8WguXkY= @@ -240,7 +211,6 @@ github.com/xyproto/xpm v1.2.1/go.mod h1:cMnesLsD0PBXLgjDfTDEaKr8XyTFsnP1QycSqRw7 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/ztrue/tracerr v0.3.0 h1:lDi6EgEYhPYPnKcjsYzmWw4EkFEoA/gfe+I9Y5f+h6Y= github.com/ztrue/tracerr v0.3.0/go.mod h1:qEalzze4VN9O8tnhBXScfCrmoJo10o8TN5ciKjm6Mww= -golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -257,7 +227,6 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= @@ -266,11 +235,8 @@ golang.org/x/net v0.0.0-20210510120150-4163338589ed h1:p9UgmWI9wKpfYmgaV/IZKGdXc golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180606202747-9527bec2660b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -278,7 +244,6 @@ golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -312,7 +277,6 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/AlecAivazis/survey.v1 v1.8.4/go.mod h1:iBNOmqKz/NUbZx3bA+4hAGLRC7fSK7tgtVDT4tB22XA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -325,7 +289,6 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20190709130402-674ba3eaed22/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= diff --git a/v2/internal/app/dev.go b/v2/internal/app/dev.go index dcbe59e42..3b7be059f 100644 --- a/v2/internal/app/dev.go +++ b/v2/internal/app/dev.go @@ -3,11 +3,13 @@ package app +/* import ( "context" - "github.com/wailsapp/wails/runtime" "sync" + "github.com/wailsapp/wails/runtime" + "github.com/wailsapp/wails/v2/internal/bridge" "github.com/wailsapp/wails/v2/internal/menumanager" @@ -244,3 +246,4 @@ func (a *App) Run() error { return nil } +*/ diff --git a/v2/internal/appng/app_darwin.go b/v2/internal/appng/app_darwin.go new file mode 100644 index 000000000..57eb0a3d3 --- /dev/null +++ b/v2/internal/appng/app_darwin.go @@ -0,0 +1,15 @@ +//go:build darwin + +package appng + +import ( + "github.com/wailsapp/wails/v2/internal/logger" + "github.com/wailsapp/wails/v2/pkg/options" +) + +func PreflightChecks(options *options.App, logger *logger.Logger) error { + + _ = options + + return nil +} diff --git a/v2/internal/frontend/desktop/darwin/browser.go b/v2/internal/frontend/desktop/darwin/browser.go new file mode 100644 index 000000000..e0b048f7e --- /dev/null +++ b/v2/internal/frontend/desktop/darwin/browser.go @@ -0,0 +1,11 @@ +package darwin + +import ( + "github.com/pkg/browser" +) + +// BrowserOpenURL Use the default browser to open the url +func (f *Frontend) BrowserOpenURL(url string) { + // Specific method implementation + _ = browser.OpenURL(url) +} diff --git a/v2/internal/frontend/desktop/darwin/dialog.go b/v2/internal/frontend/desktop/darwin/dialog.go new file mode 100644 index 000000000..a80290763 --- /dev/null +++ b/v2/internal/frontend/desktop/darwin/dialog.go @@ -0,0 +1,33 @@ +//go:build darwin + +package darwin + +import "C" +import ( + "github.com/wailsapp/wails/v2/internal/frontend" +) + +// OpenDirectoryDialog prompts the user to select a directory +func (f *Frontend) OpenDirectoryDialog(options frontend.OpenDialogOptions) (string, error) { + return "", nil +} + +// OpenFileDialog prompts the user to select a file +func (f *Frontend) OpenFileDialog(options frontend.OpenDialogOptions) (string, error) { + return "", nil +} + +// OpenMultipleFilesDialog prompts the user to select a file +func (f *Frontend) OpenMultipleFilesDialog(dialogOptions frontend.OpenDialogOptions) ([]string, error) { + return []string{}, nil +} + +// SaveFileDialog prompts the user to select a file +func (f *Frontend) SaveFileDialog(dialogOptions frontend.SaveDialogOptions) (string, error) { + return "", nil +} + +// MessageDialog show a message dialog to the user +func (f *Frontend) MessageDialog(options frontend.MessageDialogOptions) (string, error) { + return "", nil +} diff --git a/v2/internal/frontend/desktop/darwin/frontend.go b/v2/internal/frontend/desktop/darwin/frontend.go new file mode 100644 index 000000000..f3a38609d --- /dev/null +++ b/v2/internal/frontend/desktop/darwin/frontend.go @@ -0,0 +1,418 @@ +//go:build darwin + +package darwin + +import ( + "context" + "encoding/json" + "log" + "runtime" + + "github.com/leaanthony/winc" + "github.com/wailsapp/wails/v2/internal/binding" + "github.com/wailsapp/wails/v2/internal/frontend" + "github.com/wailsapp/wails/v2/internal/frontend/assetserver" + "github.com/wailsapp/wails/v2/internal/logger" + "github.com/wailsapp/wails/v2/pkg/options" +) + +type Frontend struct { + + // Context + ctx context.Context + + frontendOptions *options.App + logger *logger.Logger + debug bool + + // Assets + assets *assetserver.DesktopAssetServer + + // main window handle + //mainWindow *Window + minWidth, minHeight, maxWidth, maxHeight int + bindings *binding.Bindings + dispatcher frontend.Dispatcher + servingFromDisk bool +} + +func NewFrontend(ctx context.Context, appoptions *options.App, myLogger *logger.Logger, appBindings *binding.Bindings, dispatcher frontend.Dispatcher) *Frontend { + + result := &Frontend{ + frontendOptions: appoptions, + logger: myLogger, + bindings: appBindings, + dispatcher: dispatcher, + ctx: ctx, + minHeight: appoptions.MinHeight, + minWidth: appoptions.MinWidth, + maxHeight: appoptions.MaxHeight, + maxWidth: appoptions.MaxWidth, + } + + // Check if we have been given a directory to serve assets from. + // If so, this means we are in dev mode and are serving assets off disk. + // We indicate this through the `servingFromDisk` flag to ensure requests + // aren't cached by WebView2 in dev mode + _assetdir := ctx.Value("assetdir") + if _assetdir != nil { + result.servingFromDisk = true + } + + bindingsJSON, err := appBindings.ToJSON() + if err != nil { + log.Fatal(err) + } + assets, err := assetserver.NewDesktopAssetServer(ctx, appoptions.Assets, bindingsJSON) + if err != nil { + log.Fatal(err) + } + result.assets = assets + + return result +} + +func (f *Frontend) WindowReload() { + f.ExecJS("runtime.WindowReload();") +} + +func (f *Frontend) Run(ctx context.Context) error { + + f.ctx = context.WithValue(ctx, "frontend", f) + + //mainWindow := NewWindow(nil, f.frontendOptions) + //f.mainWindow = mainWindow + // + //var _debug = ctx.Value("debug") + //if _debug != nil { + // f.debug = _debug.(bool) + //} + // + //f.WindowCenter() + //f.setupChromium() + // + //mainWindow.OnSize().Bind(func(arg *winc.Event) { + // f.chromium.Resize() + //}) + // + //mainWindow.OnClose().Bind(func(arg *winc.Event) { + // if f.frontendOptions.HideWindowOnClose { + // f.WindowHide() + // } else { + // f.Quit() + // } + //}) + // + //// TODO: Move this into a callback from frontend + //go func() { + // if f.frontendOptions.OnStartup != nil { + // f.frontendOptions.OnStartup(f.ctx) + // } + //}() + // + //mainWindow.Run() + return nil +} + +func (f *Frontend) WindowCenter() { + runtime.LockOSThread() + //f.mainWindow.Center() +} + +func (f *Frontend) WindowSetPos(x, y int) { + runtime.LockOSThread() + //f.mainWindow.SetPos(x, y) +} +func (f *Frontend) WindowGetPos() (int, int) { + runtime.LockOSThread() + //return f.mainWindow.Pos() + return 0, 0 +} + +func (f *Frontend) WindowSetSize(width, height int) { + runtime.LockOSThread() + //f.mainWindow.SetSize(width, height) +} + +func (f *Frontend) WindowGetSize() (int, int) { + runtime.LockOSThread() + //return f.mainWindow.Size() + return 0, 0 +} + +func (f *Frontend) WindowSetTitle(title string) { + runtime.LockOSThread() + //f.mainWindow.SetText(title) +} + +func (f *Frontend) WindowFullscreen() { + runtime.LockOSThread() + //f.mainWindow.SetMaxSize(0, 0) + //f.mainWindow.SetMinSize(0, 0) + //f.mainWindow.Fullscreen() +} + +func (f *Frontend) WindowUnFullscreen() { + runtime.LockOSThread() + //f.mainWindow.UnFullscreen() + //f.mainWindow.SetMaxSize(f.maxWidth, f.maxHeight) + //f.mainWindow.SetMinSize(f.minWidth, f.minHeight) +} + +func (f *Frontend) WindowShow() { + runtime.LockOSThread() + //f.mainWindow.Show() +} + +func (f *Frontend) WindowHide() { + runtime.LockOSThread() + //f.mainWindow.Hide() +} +func (f *Frontend) WindowMaximise() { + runtime.LockOSThread() + //f.mainWindow.Maximise() +} +func (f *Frontend) WindowUnmaximise() { + runtime.LockOSThread() + //f.mainWindow.Restore() +} +func (f *Frontend) WindowMinimise() { + runtime.LockOSThread() + //f.mainWindow.Minimise() +} +func (f *Frontend) WindowUnminimise() { + runtime.LockOSThread() + //f.mainWindow.Restore() +} + +func (f *Frontend) WindowSetMinSize(width int, height int) { + runtime.LockOSThread() + f.minWidth = width + f.minHeight = height + //f.mainWindow.SetMinSize(width, height) +} +func (f *Frontend) WindowSetMaxSize(width int, height int) { + runtime.LockOSThread() + f.maxWidth = width + f.maxHeight = height + //f.mainWindow.SetMaxSize(width, height) +} + +func (f *Frontend) WindowSetRGBA(col *options.RGBA) { + runtime.LockOSThread() + if col == nil { + return + } + /* + + //f.mainWindow.Dispatch(func() { + controller := f.chromium.GetController() + controller2 := controller.GetICoreWebView2Controller2() + + backgroundCol := edge.COREWEBVIEW2_COLOR{ + A: col.A, + R: col.R, + G: col.G, + B: col.B, + } + + // Webview2 only has 0 and 255 as valid values. + if backgroundCol.A > 0 && backgroundCol.A < 255 { + backgroundCol.A = 255 + } + + if f.frontendOptions.Windows != nil && f.frontendOptions.Windows.WebviewIsTransparent { + backgroundCol.A = 0 + } + + err := controller2.PutDefaultBackgroundColor(backgroundCol) + if err != nil { + log.Fatal(err) + } + }) + */ +} + +func (f *Frontend) Quit() { + winc.Exit() +} + +/* +const ( + ctrlZ int = 90 + ctrlX = 88 + ctrlC = 67 + ctrlV = 86 +) + +func (f *Frontend) setupChromium() { + chromium := edge.NewChromium() + f.chromium = chromium + chromium.MessageCallback = f.processMessage + chromium.WebResourceRequestedCallback = f.processRequest + chromium.NavigationCompletedCallback = f.navigationCompleted + acceleratorsWebviewShouldProcess := slicer.Int([]int{ctrlV, ctrlC, ctrlX, ctrlZ}) + chromium.AcceleratorKeyCallback = func(vkey uint) bool { + // We want webview to handle ctrl-C, ctrl-Z, ctrl-v, ctrl-x + if acceleratorsWebviewShouldProcess.Contains(int(vkey)) { + return false + } + // Post keypress + //w32.PostMessage(f.mainWindow.Handle(), w32.WM_KEYDOWN, uintptr(vkey), 0) + return true + } + chromium.Embed(f.mainWindow.Handle()) + chromium.Resize() + settings, err := chromium.GetSettings() + if err != nil { + log.Fatal(err) + } + err = settings.PutAreDefaultContextMenusEnabled(f.debug) + if err != nil { + log.Fatal(err) + } + err = settings.PutAreDevToolsEnabled(f.debug) + if err != nil { + log.Fatal(err) + } + err = settings.PutIsZoomControlEnabled(false) + if err != nil { + log.Fatal(err) + } + err = settings.PutIsStatusBarEnabled(false) + if err != nil { + log.Fatal(err) + } + err = settings.PutIsStatusBarEnabled(false) + if err != nil { + log.Fatal(err) + } + + // Set background colour + f.WindowSetRGBA(f.frontendOptions.RGBA) + + chromium.AddWebResourceRequestedFilter("*", edge.COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL) + chromium.Navigate("file://wails/") +} +*/ + +type EventNotify struct { + Name string `json:"name"` + Data []interface{} `json:"data"` +} + +func (f *Frontend) Notify(name string, data ...interface{}) { + notification := EventNotify{ + Name: name, + Data: data, + } + payload, err := json.Marshal(notification) + if err != nil { + f.logger.Error(err.Error()) + return + } + f.ExecJS(`window.wails.EventsNotify('` + string(payload) + `');`) +} + +//func (f *Frontend) processRequest(req *edge.ICoreWebView2WebResourceRequest, args *edge.ICoreWebView2WebResourceRequestedEventArgs) { +// //Get the request +// uri, _ := req.GetUri() +// +// // Translate URI +// uri = strings.TrimPrefix(uri, "file://wails") +// if !strings.HasPrefix(uri, "/") { +// return +// } +// +// // Load file from asset store +// content, mimeType, err := f.assets.Load(uri) +// if err != nil { +// return +// } +// +// env := f.chromium.Environment() +// headers := "Content-Type: " + mimeType +// if f.servingFromDisk { +// headers += "\nPragma: no-cache" +// } +// response, err := env.CreateWebResourceResponse(content, 200, "OK", headers) +// if err != nil { +// return +// } +// // Send response back +// err = args.PutResponse(response) +// if err != nil { +// return +// } +// return +//} + +func (f *Frontend) processMessage(message string) { + if message == "drag" { + err := f.startDrag() + if err != nil { + f.logger.Error(err.Error()) + } + return + } + result, err := f.dispatcher.ProcessMessage(message, f) + if err != nil { + f.logger.Error(err.Error()) + f.Callback(result) + return + } + if result == "" { + return + } + + switch result[0] { + case 'c': + // Callback from a method call + f.Callback(result[1:]) + default: + f.logger.Info("Unknown message returned from dispatcher: %+v", result) + } +} + +func (f *Frontend) Callback(message string) { + //f.mainWindow.Dispatch(func() { + // f.chromium.Eval(`window.wails.Callback(` + strconv.Quote(message) + `);`) + //}) +} + +func (f *Frontend) startDrag() error { + //if !w32.ReleaseCapture() { + // return fmt.Errorf("unable to release mouse capture") + //} + //w32.SendMessage(f.mainWindow.Handle(), w32.WM_NCLBUTTONDOWN, w32.HTCAPTION, 0) + return nil +} + +func (f *Frontend) ExecJS(js string) { + //f.mainWindow.Dispatch(func() { + // f.chromium.Eval(js) + //}) +} + +//func (f *Frontend) navigationCompleted(sender *edge.ICoreWebView2, args *edge.ICoreWebView2NavigationCompletedEventArgs) { +// if f.frontendOptions.OnDomReady != nil { +// go f.frontendOptions.OnDomReady(f.ctx) +// } +// +// // If you want to start hidden, return +// if f.frontendOptions.StartHidden { +// return +// } +// +// // Hack to make it visible: https://github.com/MicrosoftEdge/WebView2Feedback/issues/1077#issuecomment-825375026 +// err := f.chromium.Hide() +// if err != nil { +// log.Fatal(err) +// } +// err = f.chromium.Show() +// if err != nil { +// log.Fatal(err) +// } +// f.mainWindow.Show() +// +//} diff --git a/v2/internal/frontend/desktop/darwin/menu.go b/v2/internal/frontend/desktop/darwin/menu.go new file mode 100644 index 000000000..315aa4d27 --- /dev/null +++ b/v2/internal/frontend/desktop/darwin/menu.go @@ -0,0 +1,97 @@ +//go:build darwin + +package darwin + +import ( + "github.com/wailsapp/wails/v2/pkg/menu" +) + +//func (w *Window) SetApplicationMenu(menu *menu.Menu) { +//w.applicationMenu = menu +//processMenu(w, menu) +//} + +//func processMenu(window *Window, menu *menu.Menu) { +//mainMenu := window.NewMenu() +//for _, menuItem := range menu.Items { +// submenu := mainMenu.AddSubMenu(menuItem.Label) +// for _, menuItem := range menuItem.SubMenu.Items { +// processMenuItem(submenu, menuItem) +// } +//} +//mainMenu.Show() +//} + +//func processMenuItem(parent *winc.MenuItem, menuItem *menu.MenuItem) { +// if menuItem.Hidden { +// return +// } +// switch menuItem.Type { +// case menu.SeparatorType: +// parent.AddSeparator() +// case menu.TextType: +// shortcut := acceleratorToWincShortcut(menuItem.Accelerator) +// newItem := parent.AddItem(menuItem.Label, shortcut) +// if menuItem.Tooltip != "" { +// newItem.SetToolTip(menuItem.Tooltip) +// } +// if menuItem.Click != nil { +// newItem.OnClick().Bind(func(e *winc.Event) { +// menuItem.Click(&menu.CallbackData{ +// MenuItem: menuItem, +// }) +// }) +// } +// newItem.SetEnabled(!menuItem.Disabled) +// +// case menu.CheckboxType: +// shortcut := acceleratorToWincShortcut(menuItem.Accelerator) +// newItem := parent.AddItem(menuItem.Label, shortcut) +// newItem.SetCheckable(true) +// newItem.SetChecked(menuItem.Checked) +// if menuItem.Tooltip != "" { +// newItem.SetToolTip(menuItem.Tooltip) +// } +// if menuItem.Click != nil { +// newItem.OnClick().Bind(func(e *winc.Event) { +// toggleCheckBox(menuItem) +// menuItem.Click(&menu.CallbackData{ +// MenuItem: menuItem, +// }) +// }) +// } +// newItem.SetEnabled(!menuItem.Disabled) +// addCheckBoxToMap(menuItem, newItem) +// case menu.RadioType: +// shortcut := acceleratorToWincShortcut(menuItem.Accelerator) +// newItem := parent.AddItemRadio(menuItem.Label, shortcut) +// newItem.SetCheckable(true) +// newItem.SetChecked(menuItem.Checked) +// if menuItem.Tooltip != "" { +// newItem.SetToolTip(menuItem.Tooltip) +// } +// if menuItem.Click != nil { +// newItem.OnClick().Bind(func(e *winc.Event) { +// toggleRadioItem(menuItem) +// menuItem.Click(&menu.CallbackData{ +// MenuItem: menuItem, +// }) +// }) +// } +// newItem.SetEnabled(!menuItem.Disabled) +// addRadioItemToMap(menuItem, newItem) +// case menu.SubmenuType: +// submenu := parent.AddSubMenu(menuItem.Label) +// for _, menuItem := range menuItem.SubMenu.Items { +// processMenuItem(submenu, menuItem) +// } +// } +//} + +func (f *Frontend) MenuSetApplicationMenu(menu *menu.Menu) { + //f.mainWindow.SetApplicationMenu(menu) +} + +func (f *Frontend) MenuUpdateApplicationMenu() { + //processMenu(f.mainWindow, f.mainWindow.applicationMenu) +} diff --git a/v2/internal/frontend/desktop/desktop_darwin.go b/v2/internal/frontend/desktop/desktop_darwin.go new file mode 100644 index 000000000..fbf977fd5 --- /dev/null +++ b/v2/internal/frontend/desktop/desktop_darwin.go @@ -0,0 +1,19 @@ +//go:build darwin + +package desktop + +import ( + "context" + + "github.com/wailsapp/wails/v2/internal/frontend/desktop/darwin" + + "github.com/wailsapp/wails/v2/internal/binding" + "github.com/wailsapp/wails/v2/internal/frontend" + + "github.com/wailsapp/wails/v2/internal/logger" + "github.com/wailsapp/wails/v2/pkg/options" +) + +func NewFrontend(ctx context.Context, appoptions *options.App, logger *logger.Logger, appBindings *binding.Bindings, dispatcher frontend.Dispatcher) frontend.Frontend { + return darwin.NewFrontend(ctx, appoptions, logger, appBindings, dispatcher) +}