38 lines
780 B
Go
38 lines
780 B
Go
package ui
|
|
|
|
import "opslag.de/schobers/zntg"
|
|
|
|
type EventEmptyFn func(Context)
|
|
|
|
type EventFn func(Context, interface{})
|
|
|
|
type EventArgs struct {
|
|
Context Context
|
|
State interface{}
|
|
}
|
|
|
|
type Events struct {
|
|
zntg.Events
|
|
}
|
|
|
|
type EventHandler interface {
|
|
AddHandler(EventFn) uint
|
|
AddHandlerEmpty(EventEmptyFn) uint
|
|
RemoveHandler(uint)
|
|
}
|
|
|
|
func (e *Events) Notify(ctx Context, state interface{}) bool {
|
|
return e.Events.Notify(EventArgs{Context: ctx, State: state})
|
|
}
|
|
|
|
func (e *Events) AddHandler(handler EventFn) uint {
|
|
return e.Events.AddHandler(func(state interface{}) {
|
|
args := state.(EventArgs)
|
|
handler(args.Context, args.State)
|
|
})
|
|
}
|
|
|
|
func (e *Events) AddHandlerEmpty(handler EventEmptyFn) uint {
|
|
return e.AddHandler(func(ctx Context, _ interface{}) { handler(ctx) })
|
|
}
|