Compare commits

...

124 Commits

Author SHA1 Message Date
Lea Anthony
544fa7319c fix: force install when node_modules missing 2019-10-24 09:33:26 +11:00
Lea Anthony
96fc70df26 Merge branch 'master' into develop 2019-10-23 14:07:22 +11:00
Lea Anthony
1c8d4c902a Merge branch 'develop' of github.com:wailsapp/wails into develop 2019-10-23 14:06:19 +11:00
Lea Anthony
08fc1d53d0 chore: version bump 2019-10-23 14:06:14 +11:00
Lea Anthony
6c5d5e40f4 262 add wails shutdown method (#264)
* feat: support close in bridge mode

* feat: WailsShutdown callback

Now handles proper shutdown through:
  * runtime.Window.Close()
  * Killing the main window
  * Ctrl-C
2019-10-23 14:04:41 +11:00
Lea Anthony
3f1dfe931c Update CONTRIBUTORS.md 2019-10-14 09:37:01 +11:00
Kris Raney
cb850c9653 Patch for file dialog on OSX (#258)
* Patch for file dialog on OSX
2019-10-14 09:34:50 +11:00
Lea Anthony
8d8f47363a chore: supress warnings 2019-10-12 20:19:05 +11:00
Lea Anthony
d399b7580d Develop (#255)
Hotfix
2019-10-09 19:34:24 +11:00
Lea Anthony
1b04b71254 fix: importing runtime (#254) 2019-10-09 19:33:13 +11:00
Lea Anthony
0b19ad1427 chore: version bump 2019-10-09 19:30:53 +11:00
Lea Anthony
9aca99911e Update CONTRIBUTORS.md 2019-10-09 04:47:00 +11:00
Robin Eklind
a7f61e335e cmd/wails: report error status code to OS (#252)
Fixes #251.
2019-10-09 04:44:32 +11:00
Lea Anthony
9fff0a513e chore: merge master 2019-10-08 06:30:22 +11:00
Lea Anthony
7fd5b77cbe chore: version bump 2019-10-08 06:06:02 +11:00
Lea Anthony
d2cac50f93 fix: update runtime 2019-10-07 22:16:29 +11:00
Lea Anthony
00f1f82520 Merge branch 'master' into develop 2019-10-07 21:35:52 +11:00
Lea Anthony
02fbb14e34 chore: version bump 2019-10-07 21:32:27 +11:00
Byron
f961659ada manjaro (#248)
* manjaro

* Update go.mod
2019-10-06 19:14:05 +11:00
Lea Anthony
93942111bc fix: multiple runtime fixes 2019-10-06 14:20:59 +11:00
Lea Anthony
dc5a68acce feat: add runtime typings 2019-10-06 13:36:20 +11:00
Lea Anthony
12ff0f8c97 fix: binding more than one struct method (#245) 2019-10-01 06:13:55 +10:00
Lea Anthony
c375c281ee chore: remove some debug output 2019-09-19 08:57:40 +10:00
Lea Anthony
7d86b0f7c4 chore: version bump 2019-09-14 05:56:52 +10:00
Byron
990f7dd06c feat: KDE neon support (#234) 2019-09-14 05:51:29 +10:00
Lea Anthony
0b6f256d55 docs: add Mattn 2019-09-10 06:34:40 +10:00
Byron
0a57fa4035 (FIX) 215 support distribution kali (#224)
* fix: kali support
2019-09-04 08:44:08 +10:00
Lea Anthony
af1a1a2498 chore: remove debug output 2019-09-03 19:36:21 +10:00
Lea Anthony
cc0617d247 chore: release v0.17.14-pre 2019-09-03 18:22:27 +10:00
Byron
99a3f87cef duplicate code spotted (#221)
* fix: duplicate code
2019-09-03 18:21:13 +10:00
Lea Anthony
1ccdb1bc4e fix: allow 0 return types 2019-09-01 15:52:35 +10:00
Byron
62b1967e45 215 support distribution kali (#219)
* test: azure pipeline

* fix: azure pipeline yaml

* feat: kali linux support

* feat: kali linux support
2019-08-30 23:21:54 +10:00
Lea Anthony
c10303e7c0 fix: upgrade eslint 2019-08-28 07:01:52 +10:00
Byron
4a61584827 Elementary support + readme update (#210)
* test: azure pipeline

* fix: azure pipeline yaml

* feat: elementary support+readme udpate
2019-08-28 06:19:48 +10:00
Lea Anthony
cf249ba836 chore: bump version 2019-08-26 17:58:20 +10:00
Byron
08fe7b64d6 Yaml bug (#207)
* test: azure pipeline

* fix: azure pipeline yaml

* feat: elementary support

* feat: opensuse support

* fix: 0_setup.go line 27

* fix: 0_setup.go line 27

* fix: opensuse yaml

* fix: opensuse yaml

* fix: opensuse yaml

* fix: opensuse yaml

* fix: opensuse yaml

* fix: opensuse yaml

* fix: yaml

* fix: yaml

* fix: yaml

* fix: opensuse yaml

* fix: opensuse

* fix: opensuse

* fix: opensuse

* fix: opensuse

* fix: string trim os osRelease field NAME

* fix: 0_setup.go if err typo

* test

* test

* fix: typo in linux.go

* test: remove quotes from opensuse case

* test: revert

* test: ""

* test: ""

* test: ""

* test: ""

* fix: replace trim with replace

* fix: drop 0_setup.go and run checks by system.go

* fix: elementary os yaml name

* fix: open suse yaml entry

* fix: commented out result.Release = version

* fix: commented out result.Release = version

* fix: revert Replace to Trim

* fix: Linux Mint yaml entry

* fix: capitalize distros entries

* fix: capitalize distros entries

* fix: capitalize distros entries

* test

* test

* fix: open suse yaml entry

* fix: yaml entris

* test

* test

* test

* test

* test

* test

* branch changing

* fix: bug in setup process

* debugging

* debugging

* debugging

* debugging

* fix: yaml entries & err == nil bug

* Update prerequisites.go

* fix: bug

* fix: 0_setup.go

* fix: yaml bug

* fix: yaml bug
2019-08-26 05:02:49 +10:00
Lea Anthony
77939ea414 Merge pull request #200 from Vaelatern/voidlinux-support
feat: VoidLinux support
2019-08-26 04:23:16 +10:00
Toyam Cox
468394d03c feat: VoidLinux support 2019-08-25 08:41:51 -04:00
Lea Anthony
dc87699a1e Merge pull request #205 from Vaelatern/undefined-webview
fix: undefined: webview during build
2019-08-25 19:44:53 +10:00
Toyam Cox
36e906507d fix: undefined: webview during build 2019-08-25 04:08:21 -04:00
Lea Anthony
a5f9688708 Merge branch 'develop' of github.com:wailsapp/wails into develop 2019-08-25 15:59:02 +10:00
Lea Anthony
880f900e51 Update contributors 2019-08-25 15:58:44 +10:00
Lea Anthony
349306cf73 chore: deduplicate library verificaation code (#203) 2019-08-25 15:56:42 +10:00
Toyam Cox
f140697857 chore: deduplicate library verificaation code 2019-08-25 00:14:39 -04:00
Lea Anthony
26ff8df7e5 chore: remove unused mewn file 2019-08-19 22:43:54 +10:00
Lea Anthony
b7dae216df Merge branch 'develop' of github.com:wailsapp/wails into develop 2019-08-19 22:23:32 +10:00
Byron
0b9d093d6c Azure Pipelines (#192)
* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* test: azure pipeline

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines

* feat: azure pipelines
2019-08-19 19:11:43 +10:00
Lea Anthony
7f282ad071 chore: add inprogress label 2019-08-19 09:01:44 +10:00
Lea Anthony
d6ed583e07 chore: add stale issue bot config 2019-08-19 08:56:58 +10:00
Lea Anthony
930cab2d9d chore: rename webview for clarity 2019-08-16 19:12:55 +10:00
Lea Anthony
ae41f33dcc chore: merge webview back in 2019-08-16 08:28:43 +10:00
Lea Anthony
5af6b7cafe chore: bump version 2019-08-10 10:50:25 +10:00
Lea Anthony
68ac3763d0 chore: update linux db 2019-08-10 10:43:09 +10:00
admin_3.exe
cdc66b556e 188 support distribution linux mint (#189) 2019-08-10 10:42:02 +10:00
admin_3.exe
3ff16322c2 182 linux bd (#183)
* fix: linuxdb.yaml entries

* fix: typo

* fix: yaml syntax error
2019-08-09 20:21:01 +10:00
Lea Anthony
d60066a0b1 chore: linter fixes (#185) 2019-08-09 08:12:50 +10:00
Lea Anthony
9d6ebf0fd4 Linux db (#182)
* feat: refactor linux distro detection

* linux db updates

* feat: add gccversioncommand + windows support

* fix: build-essential
2019-08-08 21:04:59 +10:00
Lea Anthony
839815e2fb chore: bump version 2019-08-05 18:40:34 +10:00
admin_3.exe
846fe479bf 179 parrot distributionsupport (#181)
* feat: parrot support && git push

* feat: parrot support

* feat: parrot support

* fix: arch support

* fix: gentoos support

* Update README.md

* Update README.md
2019-08-05 18:35:04 +10:00
Lea Anthony
62f7070e0c chore: hotfix version bump 2019-07-31 18:26:12 +10:00
Lea Anthony
dd418b36c2 Merge pull request #178 from bh90210/169-improve-wails-issue-linux-quick-fixes
169 improve wails issue linux quick fixes
2019-07-31 18:04:51 +10:00
bh90210
f4f04f2199 fix: typo 2019-07-31 03:20:08 +03:00
bh90210
3a7514bbdc fix: issue report 2019-07-31 02:54:59 +03:00
admin_3.exe
213f07fed4 Merge pull request #3 from wailsapp/develop
Develop
2019-07-31 01:48:54 +03:00
Lea Anthony
ed3ed8aa18 chore: hotfix 2019-07-31 06:57:56 +10:00
Lea Anthony
d038dca37c Merge pull request #177 from wailsapp/gitbash-fixes
fix: gitbash fixes
2019-07-31 06:55:40 +10:00
Lea Anthony
bb86d770a1 fix: gitbash fixes 2019-07-31 06:54:07 +10:00
Lea Anthony
33daa8621e chore: version bump 2019-07-31 06:21:00 +10:00
Lea Anthony
6c124fcff4 Merge pull request #175 from bh90210/174-wails-init-does-not-work-on-centos-7
fixed centos & fedora support
2019-07-31 06:17:42 +10:00
Lea Anthony
45833574b3 Merge branch 'bh90210-169-improve-wails-issue' into develop 2019-07-31 06:09:12 +10:00
Lea Anthony
5cb00eb481 trim gcc string 2019-07-31 06:08:43 +10:00
Lea Anthony
e2105331c1 Merge branch '169-improve-wails-issue' of git://github.com/bh90210/wails into bh90210-169-improve-wails-issue 2019-07-31 06:02:41 +10:00
bh90210
21d2383e63 Merge branch '169-improve-wails-issue' of github.com:bh90210/wails into 169-improve-wails-issue 2019-07-30 16:11:51 +03:00
bh90210
6c945a4eed fix: crashing typo 2019-07-30 16:11:18 +03:00
admin_3.exe
6c8d34dfd3 Delete npm-debug.log 2019-07-30 16:00:16 +03:00
bh90210
b9b42c059e feat: show gcc, node, npm version on issue report 2019-07-30 15:57:51 +03:00
bh90210
3f657b34cf darwin working 2019-07-30 02:12:51 +03:00
bh90210
6e81a36ada linux working 2019-07-30 02:02:01 +03:00
bh90210
ddec01a429 feat: gcc,npm,node versions on issues 2019-07-29 23:53:43 +03:00
bh90210
21fdb3be7d fix(linux): fedora & centos support 2019-07-29 19:12:05 +03:00
admin_3.exe
c1a13ab6d0 Merge pull request #2 from wailsapp/develop
Develop
2019-07-29 16:09:33 +03:00
Lea Anthony
750a02efc6 chore: version bump 2019-07-29 17:54:41 +10:00
Lea Anthony
5e047debfc fix: add support back for ubuntu, redhat 2019-07-29 17:52:22 +10:00
Lea Anthony
9cac336708 docs: updated contributors 2019-07-29 09:03:17 +10:00
Lea Anthony
827c2b9a95 Merge pull request #172 from Chronophylos/dont-use-lsb_release
Drop lsb_release
2019-07-29 09:01:41 +10:00
Chronophylos
b36a3c4abb fix assumption
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-28 13:39:03 +02:00
Chronophylos
0bac205565 show distro id when creating a issue
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-28 13:16:56 +02:00
Chronophylos
67a8ad8e12 change DistributionID to NAME=
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-28 00:44:46 +02:00
Chronophylos
9de2f66f50 drop lsb_release
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-27 21:26:11 +02:00
admin_3.exe
9370030ff3 Merge pull request #1 from wailsapp/develop
Develop
2019-07-27 22:12:15 +03:00
Lea Anthony
e38d6e7ef0 Merge pull request #165 from bt/master
Fix Masterminds/semver reference import path (case-sensitivity)
2019-07-22 18:33:54 +10:00
Bertram Truong
2f21fc3575 Fix Masterminds/semver reference import path (case-sensitivity) 2019-07-22 10:25:23 +10:00
Lea Anthony
63e73f5f64 chore: Version Bump 2019-07-20 19:40:43 +10:00
Lea Anthony
e1adc1ba49 Merge pull request #163 from wailsapp/more-runtime-refactor
More runtime refactor
2019-07-20 19:35:59 +10:00
Lea Anthony
030e911ea4 feat: significant overhaul of runtime 2019-07-20 19:32:30 +10:00
Lea Anthony
d2f114e44e Update contributors 2019-07-19 08:08:26 +10:00
Lea Anthony
700d3f84d3 Merge pull request #161 from fdidron/145-Fix-React-Error-Windows
145 fix react error windows
2019-07-19 00:32:20 +10:00
Florian Didron
1d49042013 style: replace double quotes with single quotes 2019-07-18 21:46:25 +09:00
Florian Didron
8671b1e6cf fix: add promises polyfill for the windows target 2019-07-18 21:10:42 +09:00
Lea Anthony
517d6c44ec fix: Print stdout on error :rolleyes: 2019-07-18 09:12:57 +10:00
Lea Anthony
a082a659ea fix: renamed global logger 2019-07-16 18:29:15 +10:00
Lea Anthony
083153efc9 fix: eslintrc config 2019-07-13 22:32:19 +10:00
Lea Anthony
65a2560153 chore: bump version 2019-07-13 22:30:32 +10:00
Lea Anthony
29535c10a3 Merge pull request #157 from wailsapp/runtime-refactor
Runtime refactor
2019-07-13 22:27:36 +10:00
Lea Anthony
24c7362163 Even more fixes 2019-07-13 22:18:42 +10:00
Lea Anthony
f6ff7d7b16 fix: linting for hound 2019-07-13 22:12:49 +10:00
Lea Anthony
b0a075cdf2 fix: more lint fixes 2019-07-13 22:10:43 +10:00
Lea Anthony
98d4d6b33c config: eslint 2019-07-13 15:42:57 +10:00
Lea Anthony
9ba3e0512b fix: linting 2019-07-13 15:35:50 +10:00
Lea Anthony
eff63175e5 fix: lint 2019-07-13 15:34:00 +10:00
Lea Anthony
75a0b632bc fix: capitalisation and binding fix 2019-07-13 15:30:52 +10:00
Lea Anthony
a2af626477 fix: config errors 2019-07-12 10:22:19 +10:00
Lea Anthony
8aa97f64ef feat: major refactor 2019-07-12 10:12:15 +10:00
Lea Anthony
caa1e04b5a Update README.md 2019-07-08 21:29:59 +10:00
Lea Anthony
cddf6a0204 chore: version bump 2019-07-07 10:28:58 +10:00
Lea Anthony
9fa1f42dc7 Merge pull request #155 from wailsapp/154-Support-Distribution-'Fedora'
feat: test support for Fedora
2019-07-07 10:28:19 +10:00
Lea Anthony
c7e709d487 feat: test support for Fedora 2019-07-07 10:25:59 +10:00
Lea Anthony
6801398f3d docs: update contributors 2019-07-07 10:17:44 +10:00
Lea Anthony
982d14c049 Merge pull request #152 from fallendusk/master
Add support for Gentoo
2019-07-07 10:16:21 +10:00
fallendusk
ddbaf55ae7 Merge branch 'develop' into master 2019-07-06 17:31:21 -04:00
Greg Helton
5552a8501b Add support for Gentoo 2019-07-06 01:43:02 -04:00
Lea Anthony
b997becb2f chore: bump version 2019-07-03 19:47:03 +10:00
Lea Anthony
753516bab7 Merge pull request #149 from wailsapp/148-Support-Distribution-'Zorin'
148 support distribution 'zorin'
2019-07-03 19:46:20 +10:00
Lea Anthony
89992d8636 feat: attempt to support Zorin 2019-07-03 19:42:32 +10:00
21 changed files with 179 additions and 37 deletions

View File

@@ -18,3 +18,5 @@ Wails is what it is because of the time and effort given by these great people.
* [Florian Didran](https://github.com/fdidron)
* [Nikolai Zimmermann](https://github.com/Chronophylos)
* [Toyam Cox](https://github.com/Vaelatern)
* [Robin Eklind](https://github.com/mewmew)
* [Kris Raney](https://github.com/kraney)

39
app.go
View File

@@ -1,6 +1,10 @@
package wails
import (
"os"
"syscall"
"github.com/syossan27/tebata"
"github.com/wailsapp/wails/cmd"
"github.com/wailsapp/wails/lib/binding"
"github.com/wailsapp/wails/lib/event"
@@ -66,6 +70,7 @@ func CreateApp(optionalConfig ...*AppConfig) *App {
// Run the app
func (a *App) Run() error {
if BuildMode != cmd.BuildModeProd {
return a.cli.Run()
}
@@ -97,6 +102,13 @@ func (a *App) start() error {
return err
}
// Start signal handler
t := tebata.New(os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)
t.Reserve(func() {
a.log.Debug("SIGNAL CAUGHT! Starting Shutdown")
a.renderer.Close()
})
// Start event manager and give it our renderer
a.eventManager.Start(a.renderer)
@@ -112,8 +124,33 @@ func (a *App) start() error {
return err
}
// Defer the shutdown
defer a.shutdown()
// Run the renderer
return a.renderer.Run()
err = a.renderer.Run()
if err != nil {
return err
}
return nil
}
// shutdown the app
func (a *App) shutdown() {
// Make sure this is only called once
a.log.Debug("Shutting down")
// Shutdown Binding Manager
a.bindingManager.Shutdown()
// Shutdown IPC Manager
a.ipc.Shutdown()
// Shutdown Event Manager
a.eventManager.Shutdown()
a.log.Debug("Cleanly Shutdown")
}
// Bind allows the user to bind the given object

View File

@@ -219,6 +219,15 @@ func InstallFrontendDeps(projectDir string, projectOptions *ProjectOptions, forc
const md5sumFile = "package.json.md5"
// If node_modules does not exist, force a rebuild.
nodeModulesPath, err := filepath.Abs(filepath.Join(".", "node_modules"))
if err != nil {
return err
}
if !fs.DirExists(nodeModulesPath) {
forceRebuild = true
}
// If we aren't forcing the install and the md5sum file exists
if !forceRebuild && fs.FileExists(md5sumFile) {
// Yes - read contents

View File

@@ -6,7 +6,7 @@ import { environment } from './environments/environment';
import 'zone.js'
import Wails from '@wailsapp/runtime';
import * as Wails from '@wailsapp/runtime';
if (environment.production) {
enableProdMode();

View File

@@ -4,7 +4,7 @@ import 'core-js/stable';
import './index.css';
import App from './App';
import Wails from '@wailsapp/runtime';
import * as Wails from '@wailsapp/runtime';
Wails.Init(() => {
ReactDOM.render(<App />, document.getElementById('app'));

View File

@@ -4,7 +4,7 @@ import App from './App.vue';
Vue.config.productionTip = false;
Vue.config.devtools = true;
import Wails from '@wailsapp/runtime';
import * as Wails from '@wailsapp/runtime';
Wails.Init(() => {
new Vue({

View File

@@ -12,7 +12,7 @@ import App from './App.vue';
Vue.config.productionTip = false;
Vue.config.devtools = true;
import Wails from '@wailsapp/runtime';
import * as Wails from '@wailsapp/runtime';
Wails.Init(() => {
new Vue({

View File

@@ -1,4 +1,4 @@
package cmd
// Version - Wails version
const Version = "v0.18.2"
const Version = "v0.18.4"

View File

@@ -1,6 +1,9 @@
package main
import (
"os"
"os/exec"
"github.com/wailsapp/wails/cmd"
)
@@ -15,5 +18,9 @@ func main() {
err := app.Run()
if err != nil {
logger.Error(err.Error())
if exitErr, ok := err.(*exec.ExitError); ok {
os.Exit(exitErr.ExitCode())
}
os.Exit(1)
}
}

1
go.mod
View File

@@ -22,6 +22,7 @@ require (
github.com/pkg/errors v0.8.1 // indirect
github.com/sirupsen/logrus v1.4.1
github.com/stretchr/testify v1.3.0 // indirect
github.com/syossan27/tebata v0.0.0-20180602121909-b283fe4bc5ba
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529 // indirect
golang.org/x/net v0.0.0-20190509222800-a4d6f7feada5 // indirect
golang.org/x/sys v0.0.0-20190509141414-a5b02f93d862

2
go.sum
View File

@@ -68,6 +68,8 @@ github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/syossan27/tebata v0.0.0-20180602121909-b283fe4bc5ba h1:2DHfQOxcpWdGf5q5IzCUFPNvRX9Icf+09RvQK2VnJq0=
github.com/syossan27/tebata v0.0.0-20180602121909-b283fe4bc5ba/go.mod h1:iLnlXG2Pakcii2CU0cbY07DRCSvpWNa7nFxtevhOChk=
golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/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-20190510104115-cbcb75029529 h1:iMGN4xG0cnqj3t+zOM8wUB0BiPKHEwSxEZCvzcbZuvk=

View File

@@ -16,6 +16,7 @@ type Manager struct {
functions map[string]*boundFunction
internalMethods *internalMethods
initMethods []*boundMethod
shutdownMethods []*boundMethod
log *logger.CustomLogger
renderer interfaces.Renderer
runtime interfaces.Runtime // The runtime object to pass to bound structs
@@ -127,6 +128,9 @@ func (b *Manager) bindMethod(object interface{}) error {
if newMethod.isWailsInit {
b.log.Debugf("Detected WailsInit function: %s", fullMethodName)
b.initMethods = append(b.initMethods, newMethod)
} else if newMethod.isWailsShutdown {
b.log.Debugf("Detected WailsShutdown function: %s", fullMethodName)
b.shutdownMethods = append(b.shutdownMethods, newMethod)
} else {
// Save boundMethod
b.log.Infof("Bound Method: %s()", fullMethodName)
@@ -292,3 +296,13 @@ func (b *Manager) callWailsInitMethods() error {
}
return nil
}
// Shutdown the binding manager
func (b *Manager) Shutdown() {
b.log.Debug("Shutdown called")
for _, method := range b.shutdownMethods {
b.log.Debugf("Calling Shutdown for method: %s", method.fullName)
method.call("[]")
}
b.log.Debug("Shutdown complete")
}

View File

@@ -18,6 +18,7 @@ type boundMethod struct {
log *logger.CustomLogger
hasErrorReturnType bool // Indicates if there is an error return type
isWailsInit bool
isWailsShutdown bool
}
// Creates a new bound method based on the given method + type
@@ -39,6 +40,11 @@ func newBoundMethod(name string, fullName string, method reflect.Value, objectTy
err = result.processWailsInit()
}
// Are we a WailsShutdown method?
if result.Name == "WailsShutdown" {
err = result.processWailsShutdown()
}
return result, err
}
@@ -211,3 +217,20 @@ func (b *boundMethod) processWailsInit() error {
return nil
}
func (b *boundMethod) processWailsShutdown() error {
// We must have only 1 input, it must be *wails.Runtime
if len(b.inputs) != 0 {
return fmt.Errorf("Invalid WailsShutdown() definition. Expected 0 inputs, but got %d", len(b.inputs))
}
// We must have only 1 output, it must be error
if len(b.returnTypes) != 0 {
return fmt.Errorf("Invalid WailsShutdown() definition. Expected 0 return types, but got %d", len(b.returnTypes))
}
// We are indeed a wails Shutdown method
b.isWailsShutdown = true
return nil
}

View File

@@ -3,18 +3,21 @@ package event
import (
"fmt"
"sync"
"time"
"github.com/wailsapp/wails/lib/interfaces"
"github.com/wailsapp/wails/lib/logger"
"github.com/wailsapp/wails/lib/messages"
"github.com/wailsapp/wails/lib/interfaces"
)
// Manager handles and processes events
type Manager struct {
incomingEvents chan *messages.EventData
listeners map[string][]*eventListener
exit bool
running bool
log *logger.CustomLogger
renderer interfaces.Renderer // Messages will be dispatched to the frontend
wg sync.WaitGroup
}
// NewManager creates a new event manager with a 100 event buffer
@@ -22,7 +25,7 @@ func NewManager() interfaces.EventManager {
return &Manager{
incomingEvents: make(chan *messages.EventData, 100),
listeners: make(map[string][]*eventListener),
exit: false,
running: false,
log: logger.NewCustomLogger("Events"),
}
}
@@ -87,15 +90,14 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
// Store renderer
e.renderer = renderer
// Set up waitgroup so we can wait for goroutine to start
var wg sync.WaitGroup
wg.Add(1)
// Set up waitgroup so we can wait for goroutine to quit
e.running = true
e.wg.Add(1)
// Run main loop in separate goroutine
go func() {
wg.Done()
e.log.Info("Listening")
for e.exit == false {
for e.running {
// TODO: Listen for application exit
select {
case event := <-e.incomingEvents:
@@ -139,14 +141,18 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
}
}
}
default:
time.Sleep(1 * time.Millisecond)
}
}
e.wg.Done()
}()
// Wait for goroutine to start
wg.Wait()
}
func (e *Manager) stop() {
e.exit = true
// Shutdown is called when exiting the Application
func (e *Manager) Shutdown() {
e.log.Debug("Shutting Down")
e.running = false
e.log.Debug("Waiting for main loop to exit")
e.wg.Wait()
}

View File

@@ -7,4 +7,5 @@ type BindingManager interface {
Bind(object interface{})
Start(renderer Renderer, runtime Runtime) error
ProcessCall(callData *messages.CallData) (result interface{}, err error)
Shutdown()
}

View File

@@ -8,4 +8,5 @@ type EventManager interface {
Emit(eventName string, optionalData ...interface{})
On(eventName string, callback func(...interface{}))
Start(Renderer)
Shutdown()
}

View File

@@ -5,4 +5,5 @@ type IPCManager interface {
BindRenderer(Renderer)
Dispatch(message string)
Start(eventManager EventManager, bindingManager BindingManager)
Shutdown()
}

View File

@@ -2,6 +2,8 @@ package ipc
import (
"fmt"
"sync"
"time"
"github.com/wailsapp/wails/lib/interfaces"
"github.com/wailsapp/wails/lib/logger"
@@ -12,18 +14,20 @@ import (
type Manager struct {
renderer interfaces.Renderer // The renderer
messageQueue chan *ipcMessage
// quitChannel chan struct{}
quitChannel chan struct{}
// signals chan os.Signal
log *logger.CustomLogger
eventManager interfaces.EventManager
bindingManager interfaces.BindingManager
running bool
wg sync.WaitGroup
}
// NewManager creates a new IPC Manager
func NewManager() interfaces.IPCManager {
result := &Manager{
messageQueue: make(chan *ipcMessage, 100),
// quitChannel: make(chan struct{}),
quitChannel: make(chan struct{}),
// signals: make(chan os.Signal, 1),
log: logger.NewCustomLogger("IPC"),
}
@@ -44,9 +48,12 @@ func (i *Manager) Start(eventManager interfaces.EventManager, bindingManager int
i.log.Info("Starting")
// signal.Notify(manager.signals, os.Interrupt)
i.running = true
// Keep track of this goroutine
i.wg.Add(1)
go func() {
running := true
for running {
for i.running {
select {
case incomingMessage := <-i.messageQueue:
i.log.DebugFields("Processing message", logger.Fields{
@@ -117,15 +124,12 @@ func (i *Manager) Start(eventManager interfaces.EventManager, bindingManager int
i.log.DebugFields("Finished processing message", logger.Fields{
"1D": &incomingMessage,
})
// case <-manager.quitChannel:
// Debug("[MessageQueue] Quit caught")
// running = false
// case <-manager.signals:
// Debug("[MessageQueue] Signal caught")
// running = false
default:
time.Sleep(1 * time.Millisecond)
}
}
i.log.Debug("Stopping")
i.wg.Done()
}()
}
@@ -167,3 +171,11 @@ func (i *Manager) SendResponse(response *ipcResponse) error {
// Call back to the front end
return i.renderer.Callback(data)
}
// Shutdown is called when exiting the Application
func (i *Manager) Shutdown() {
i.log.Debug("Shutdown called")
i.running = false
i.log.Debug("Waiting of main loop shutdown")
i.wg.Wait()
}

View File

@@ -156,7 +156,7 @@ func (h *Bridge) Run() error {
h.log.Info("The frontend will connect automatically.")
err := h.server.ListenAndServe()
if err != nil {
if err != nil && err != http.ErrServerClosed {
h.log.Fatal(err.Error())
}
return err
@@ -250,5 +250,9 @@ func (h *Bridge) SetTitle(title string) {
// Close is unsupported for Bridge but required
// for the Renderer interface
func (h *Bridge) Close() {
h.log.Warn("Close() unsupported in bridge mode")
h.log.Debug("Shutting down")
err := h.server.Close()
if err != nil {
h.log.Errorf(err.Error())
}
}

View File

@@ -11,7 +11,7 @@
package webview
/*
#cgo linux openbsd freebsd CFLAGS: -DWEBVIEW_GTK=1
#cgo linux openbsd freebsd CFLAGS: -DWEBVIEW_GTK=1 -Wno-deprecated-declarations
#cgo linux openbsd freebsd pkg-config: gtk+-3.0 webkit2gtk-4.0
#cgo windows CFLAGS: -DWEBVIEW_WINAPI=1

View File

@@ -86,7 +86,7 @@ struct webview_priv
NSAutoreleasePool *pool;
NSWindow *window;
WebView *webview;
id windowDelegate;
id delegate;
int should_exit;
};
#else
@@ -1894,6 +1894,22 @@ struct webview_priv
[script setValue:self forKey:@"external"];
}
static void webview_run_input_open_panel(id self, SEL cmd, id webview,
id listener, BOOL allowMultiple) {
char filename[256] = "";
struct webview *w =
(struct webview *)objc_getAssociatedObject(self, "webview");
webview_dialog(w, WEBVIEW_DIALOG_TYPE_OPEN, WEBVIEW_DIALOG_FLAG_FILE, "", "",
filename, 255);
if (strlen(filename)) {
[listener chooseFilename:[NSString stringWithUTF8String:filename]];
} else {
[listener cancel];
}
}
static void webview_external_invoke(id self, SEL cmd, id arg)
{
struct webview *w =
@@ -1927,12 +1943,17 @@ struct webview_priv
class_addMethod(webViewDelegateClass,
sel_registerName("webView:didClearWindowObject:forFrame:"),
(IMP)webview_did_clear_window_object, "v@:@@@");
class_addMethod(
webViewDelegateClass,
sel_registerName("webView:runOpenPanelForFileButtonWithResultListener:"
"allowMultipleFiles:"),
(IMP)webview_run_input_open_panel, "v@:@@c");
class_addMethod(webViewDelegateClass, sel_registerName("invoke:"),
(IMP)webview_external_invoke, "v@:@");
objc_registerClassPair(webViewDelegateClass);
w->priv.windowDelegate = [[webViewDelegateClass alloc] init];
objc_setAssociatedObject(w->priv.windowDelegate, "webview", (id)(w),
w->priv.delegate = [[webViewDelegateClass alloc] init];
objc_setAssociatedObject(w->priv.delegate, "webview", (id)(w),
OBJC_ASSOCIATION_ASSIGN);
NSRect r = NSMakeRect(0, 0, w->width, w->height);
@@ -1960,7 +1981,7 @@ struct webview_priv
NSString *nsTitle = [NSString stringWithUTF8String:w->title];
[w->priv.window setTitle:nsTitle];
[w->priv.window setDelegate:w->priv.windowDelegate];
[w->priv.window setDelegate:w->priv.delegate];
[w->priv.window center];
// NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@"wat"];
@@ -1989,7 +2010,8 @@ struct webview_priv
[w->priv.webview setAutoresizesSubviews:YES];
[w->priv.webview
setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
w->priv.webview.frameLoadDelegate = w->priv.windowDelegate;
w->priv.webview.frameLoadDelegate = w->priv.delegate;
w->priv.webview.UIDelegate = w->priv.delegate;
[[w->priv.window contentView] addSubview:w->priv.webview];
[w->priv.window orderFrontRegardless];