mirror of
https://github.com/taigrr/wails.git
synced 2026-04-14 19:01:09 -07:00
Compare commits
16 Commits
feature/v2
...
v1.12.0-pr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c249e9c6b | ||
|
|
cb03409e3a | ||
|
|
40db3587cb | ||
|
|
6228328278 | ||
|
|
17a9cf4afb | ||
|
|
3567ec9865 | ||
|
|
1a3cefd180 | ||
|
|
5ced28cb74 | ||
|
|
7c04a854da | ||
|
|
39d687fa31 | ||
|
|
ee04a9235d | ||
|
|
0c2c56e1dd | ||
|
|
5267968151 | ||
|
|
7b31c8ddd2 | ||
|
|
1e2bc5728a | ||
|
|
e0aab7c27f |
@@ -40,4 +40,5 @@ Wails is what it is because of the time and effort given by these great people.
|
|||||||
* [Balakrishna Prasad Ganne](https://github.com/aayush420)
|
* [Balakrishna Prasad Ganne](https://github.com/aayush420)
|
||||||
* [Charaf Rezrazi](https://github.com/Rezrazi)
|
* [Charaf Rezrazi](https://github.com/Rezrazi)
|
||||||
* [misitebao](https://github.com/misitebao)
|
* [misitebao](https://github.com/misitebao)
|
||||||
* [Elie Grenon](https://github.com/DrunkenPoney)
|
* [Elie Grenon](https://github.com/DrunkenPoney)
|
||||||
|
* [SophieAu](https://github.com/SophieAu)
|
||||||
@@ -147,7 +147,12 @@ This project was mainly coded to the following albums:
|
|||||||
|
|
||||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
|
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
|
||||||
|
|
||||||
## Special Thank You
|
## Special Thanks
|
||||||
|
|
||||||
|
<p align="center" style="text-align: center">
|
||||||
|
A *huge* thanks to <a href="https://pace.dev"><img src="pace.jpeg"/> Pace</a> for sponsoring the project and helping the efforts to get Wails ported to Apple Silicon!<br/><br/>
|
||||||
|
If you are looking for a Project Management tool that's powerful but quick and easy to use, check them out!<br/><br/>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p align="center" style="text-align: center">
|
<p align="center" style="text-align: center">
|
||||||
A special thank you to JetBrains for donating licenses to us!<br/><br/>
|
A special thank you to JetBrains for donating licenses to us!<br/><br/>
|
||||||
|
|||||||
@@ -80,7 +80,6 @@ export default {
|
|||||||
{
|
{
|
||||||
targets: '> 0.25%, not dead, IE 11',
|
targets: '> 0.25%, not dead, IE 11',
|
||||||
modules: false,
|
modules: false,
|
||||||
spec: true,
|
|
||||||
useBuiltIns: 'usage',
|
useBuiltIns: 'usage',
|
||||||
forceAllTransforms: true,
|
forceAllTransforms: true,
|
||||||
corejs: 3,
|
corejs: 3,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
// Version - Wails version
|
// Version - Wails version
|
||||||
const Version = "v1.11.0"
|
const Version = "v1.12.0-pre2"
|
||||||
|
|||||||
@@ -42,12 +42,12 @@ func (e *Manager) PushEvent(eventData *messages.EventData) {
|
|||||||
// means it does not expire (default).
|
// means it does not expire (default).
|
||||||
type eventListener struct {
|
type eventListener struct {
|
||||||
callback func(...interface{}) // Function to call with emitted event data
|
callback func(...interface{}) // Function to call with emitted event data
|
||||||
counter int // Expire after counter callbacks. 0 = infinite
|
counter uint // Expire after counter callbacks. 0 = infinite
|
||||||
expired bool // Indicates if the listener has expired
|
expired bool // Indicates if the listener has expired
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a new event listener from the given callback function
|
// Creates a new event listener from the given callback function
|
||||||
func (e *Manager) addEventListener(eventName string, callback func(...interface{}), counter int) error {
|
func (e *Manager) addEventListener(eventName string, callback func(...interface{}), counter uint) error {
|
||||||
|
|
||||||
// Sanity check inputs
|
// Sanity check inputs
|
||||||
if callback == nil {
|
if callback == nil {
|
||||||
@@ -75,7 +75,30 @@ func (e *Manager) addEventListener(eventName string, callback func(...interface{
|
|||||||
// On adds a listener for the given event
|
// On adds a listener for the given event
|
||||||
func (e *Manager) On(eventName string, callback func(...interface{})) {
|
func (e *Manager) On(eventName string, callback func(...interface{})) {
|
||||||
// Add a persistent eventListener (counter = 0)
|
// Add a persistent eventListener (counter = 0)
|
||||||
e.addEventListener(eventName, callback, 0)
|
err := e.addEventListener(eventName, callback, 0)
|
||||||
|
if err != nil {
|
||||||
|
e.log.Error(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Once adds a listener for the given event that will auto remove
|
||||||
|
// after one callback
|
||||||
|
func (e *Manager) Once(eventName string, callback func(...interface{})) {
|
||||||
|
// Add a persistent eventListener (counter = 0)
|
||||||
|
err := e.addEventListener(eventName, callback, 1)
|
||||||
|
if err != nil {
|
||||||
|
e.log.Error(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnMultiple adds a listener for the given event that will trigger
|
||||||
|
// at most <counter> times.
|
||||||
|
func (e *Manager) OnMultiple(eventName string, callback func(...interface{}), counter uint) {
|
||||||
|
// Add a persistent eventListener (counter = 0)
|
||||||
|
err := e.addEventListener(eventName, callback, counter)
|
||||||
|
if err != nil {
|
||||||
|
e.log.Error(err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit broadcasts the given event to the subscribed listeners
|
// Emit broadcasts the given event to the subscribed listeners
|
||||||
@@ -108,10 +131,13 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Notify renderer
|
// Notify renderer
|
||||||
e.renderer.NotifyEvent(event)
|
err := e.renderer.NotifyEvent(event)
|
||||||
|
if err != nil {
|
||||||
|
e.log.Error(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
// Notify Go listeners
|
// Notify Go listeners
|
||||||
var listenersToRemove []*eventListener
|
var listenersToRemove int
|
||||||
|
|
||||||
// Iterate listeners
|
// Iterate listeners
|
||||||
for _, listener := range e.listeners[event.Name] {
|
for _, listener := range e.listeners[event.Name] {
|
||||||
@@ -129,12 +155,13 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
|
|||||||
listener.counter = listener.counter - 1
|
listener.counter = listener.counter - 1
|
||||||
if listener.counter == 0 {
|
if listener.counter == 0 {
|
||||||
listener.expired = true
|
listener.expired = true
|
||||||
|
listenersToRemove++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove expired listeners in place
|
// Remove expired listeners in place
|
||||||
if len(listenersToRemove) > 0 {
|
if listenersToRemove > 0 {
|
||||||
listeners := e.listeners[event.Name][:0]
|
listeners := e.listeners[event.Name][:0]
|
||||||
for _, listener := range listeners {
|
for _, listener := range listeners {
|
||||||
if !listener.expired {
|
if !listener.expired {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import "github.com/wailsapp/wails/lib/messages"
|
|||||||
type EventManager interface {
|
type EventManager interface {
|
||||||
PushEvent(*messages.EventData)
|
PushEvent(*messages.EventData)
|
||||||
Emit(eventName string, optionalData ...interface{})
|
Emit(eventName string, optionalData ...interface{})
|
||||||
|
OnMultiple(eventName string, callback func(...interface{}), counter uint)
|
||||||
|
Once(eventName string, callback func(...interface{}))
|
||||||
On(eventName string, callback func(...interface{}))
|
On(eventName string, callback func(...interface{}))
|
||||||
Start(Renderer)
|
Start(Renderer)
|
||||||
Shutdown()
|
Shutdown()
|
||||||
|
|||||||
@@ -19,6 +19,16 @@ func (r *Events) On(eventName string, callback func(optionalData ...interface{})
|
|||||||
r.eventManager.On(eventName, callback)
|
r.eventManager.On(eventName, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Once pass through
|
||||||
|
func (r *Events) Once(eventName string, callback func(optionalData ...interface{})) {
|
||||||
|
r.eventManager.Once(eventName, callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnMultiple pass through
|
||||||
|
func (r *Events) OnMultiple(eventName string, callback func(optionalData ...interface{}), counter uint) {
|
||||||
|
r.eventManager.OnMultiple(eventName, callback, counter)
|
||||||
|
}
|
||||||
|
|
||||||
// Emit pass through
|
// Emit pass through
|
||||||
func (r *Events) Emit(eventName string, optionalData ...interface{}) {
|
func (r *Events) Emit(eventName string, optionalData ...interface{}) {
|
||||||
r.eventManager.Emit(eventName, optionalData...)
|
r.eventManager.Emit(eventName, optionalData...)
|
||||||
|
|||||||
Reference in New Issue
Block a user