Compare commits

...

1 Commits

Author SHA1 Message Date
Lea Anthony def40786c8 Refactored events 2023-10-05 21:44:13 +11:00
5 changed files with 507 additions and 481 deletions
+5 -1
View File
@@ -980,8 +980,12 @@ func (w *WebviewWindow) DispatchWailsEvent(event *WailsEvent) {
func (w *WebviewWindow) dispatchWindowEvent(id uint) {
// TODO: Make this more efficient by keeping a list of which events have been registered
// and only dispatching those.
eventType := "common"
if id < 4096 {
eventType = runtime.GOOS
}
jsEvent := &WailsEvent{
Name: events.JSEvent(id),
Name: events.JSEvent(eventType, id),
}
w.DispatchWailsEvent(jsEvent)
}
+335 -328
View File
File diff suppressed because it is too large Load Diff
+124 -124
View File
@@ -6,131 +6,131 @@
extern void processApplicationEvent(unsigned int, void* data);
extern void processWindowEvent(unsigned int, unsigned int);
#define EventApplicationDidBecomeActive 1024
#define EventApplicationDidChangeBackingProperties 1025
#define EventApplicationDidChangeEffectiveAppearance 1026
#define EventApplicationDidChangeIcon 1027
#define EventApplicationDidChangeOcclusionState 1028
#define EventApplicationDidChangeScreenParameters 1029
#define EventApplicationDidChangeStatusBarFrame 1030
#define EventApplicationDidChangeStatusBarOrientation 1031
#define EventApplicationDidFinishLaunching 1032
#define EventApplicationDidHide 1033
#define EventApplicationDidResignActiveNotification 1034
#define EventApplicationDidUnhide 1035
#define EventApplicationDidUpdate 1036
#define EventApplicationWillBecomeActive 1037
#define EventApplicationWillFinishLaunching 1038
#define EventApplicationWillHide 1039
#define EventApplicationWillResignActive 1040
#define EventApplicationWillTerminate 1041
#define EventApplicationWillUnhide 1042
#define EventApplicationWillUpdate 1043
#define EventApplicationDidChangeTheme 1044
#define EventWindowDidBecomeKey 1045
#define EventWindowDidBecomeMain 1046
#define EventWindowDidBeginSheet 1047
#define EventWindowDidChangeAlpha 1048
#define EventWindowDidChangeBackingLocation 1049
#define EventWindowDidChangeBackingProperties 1050
#define EventWindowDidChangeCollectionBehavior 1051
#define EventWindowDidChangeEffectiveAppearance 1052
#define EventWindowDidChangeOcclusionState 1053
#define EventWindowDidChangeOrderingMode 1054
#define EventWindowDidChangeScreen 1055
#define EventWindowDidChangeScreenParameters 1056
#define EventWindowDidChangeScreenProfile 1057
#define EventWindowDidChangeScreenSpace 1058
#define EventWindowDidChangeScreenSpaceProperties 1059
#define EventWindowDidChangeSharingType 1060
#define EventWindowDidChangeSpace 1061
#define EventWindowDidChangeSpaceOrderingMode 1062
#define EventWindowDidChangeTitle 1063
#define EventWindowDidChangeToolbar 1064
#define EventWindowDidChangeVisibility 1065
#define EventWindowDidDeminiaturize 1066
#define EventWindowDidEndSheet 1067
#define EventWindowDidEnterFullScreen 1068
#define EventWindowDidEnterVersionBrowser 1069
#define EventWindowDidExitFullScreen 1070
#define EventWindowDidExitVersionBrowser 1071
#define EventWindowDidExpose 1072
#define EventWindowDidFocus 1073
#define EventWindowDidMiniaturize 1074
#define EventWindowDidMove 1075
#define EventWindowDidOrderOffScreen 1076
#define EventWindowDidOrderOnScreen 1077
#define EventWindowDidResignKey 1078
#define EventWindowDidResignMain 1079
#define EventWindowDidResize 1080
#define EventWindowDidUpdate 1081
#define EventWindowDidUpdateAlpha 1082
#define EventWindowDidUpdateCollectionBehavior 1083
#define EventWindowDidUpdateCollectionProperties 1084
#define EventWindowDidUpdateShadow 1085
#define EventWindowDidUpdateTitle 1086
#define EventWindowDidUpdateToolbar 1087
#define EventWindowDidUpdateVisibility 1088
#define EventWindowShouldClose 1089
#define EventWindowWillBecomeKey 1090
#define EventWindowWillBecomeMain 1091
#define EventWindowWillBeginSheet 1092
#define EventWindowWillChangeOrderingMode 1093
#define EventWindowWillClose 1094
#define EventWindowWillDeminiaturize 1095
#define EventWindowWillEnterFullScreen 1096
#define EventWindowWillEnterVersionBrowser 1097
#define EventWindowWillExitFullScreen 1098
#define EventWindowWillExitVersionBrowser 1099
#define EventWindowWillFocus 1100
#define EventWindowWillMiniaturize 1101
#define EventWindowWillMove 1102
#define EventWindowWillOrderOffScreen 1103
#define EventWindowWillOrderOnScreen 1104
#define EventWindowWillResignMain 1105
#define EventWindowWillResize 1106
#define EventWindowWillUnfocus 1107
#define EventWindowWillUpdate 1108
#define EventWindowWillUpdateAlpha 1109
#define EventWindowWillUpdateCollectionBehavior 1110
#define EventWindowWillUpdateCollectionProperties 1111
#define EventWindowWillUpdateShadow 1112
#define EventWindowWillUpdateTitle 1113
#define EventWindowWillUpdateToolbar 1114
#define EventWindowWillUpdateVisibility 1115
#define EventWindowWillUseStandardFrame 1116
#define EventMenuWillOpen 1117
#define EventMenuDidOpen 1118
#define EventMenuDidClose 1119
#define EventMenuWillSendAction 1120
#define EventMenuDidSendAction 1121
#define EventMenuWillHighlightItem 1122
#define EventMenuDidHighlightItem 1123
#define EventMenuWillDisplayItem 1124
#define EventMenuDidDisplayItem 1125
#define EventMenuWillAddItem 1126
#define EventMenuDidAddItem 1127
#define EventMenuWillRemoveItem 1128
#define EventMenuDidRemoveItem 1129
#define EventMenuWillBeginTracking 1130
#define EventMenuDidBeginTracking 1131
#define EventMenuWillEndTracking 1132
#define EventMenuDidEndTracking 1133
#define EventMenuWillUpdate 1134
#define EventMenuDidUpdate 1135
#define EventMenuWillPopUp 1136
#define EventMenuDidPopUp 1137
#define EventMenuWillSendActionToItem 1138
#define EventMenuDidSendActionToItem 1139
#define EventWebViewDidStartProvisionalNavigation 1140
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1141
#define EventWebViewDidFinishNavigation 1142
#define EventWebViewDidCommitNavigation 1143
#define EventWindowFileDraggingEntered 1144
#define EventWindowFileDraggingPerformed 1145
#define EventWindowFileDraggingExited 1146
#define EventApplicationDidBecomeActive 0
#define EventApplicationDidChangeBackingProperties 1
#define EventApplicationDidChangeEffectiveAppearance 2
#define EventApplicationDidChangeIcon 3
#define EventApplicationDidChangeOcclusionState 4
#define EventApplicationDidChangeScreenParameters 5
#define EventApplicationDidChangeStatusBarFrame 6
#define EventApplicationDidChangeStatusBarOrientation 7
#define EventApplicationDidFinishLaunching 8
#define EventApplicationDidHide 9
#define EventApplicationDidResignActiveNotification 10
#define EventApplicationDidUnhide 11
#define EventApplicationDidUpdate 12
#define EventApplicationWillBecomeActive 13
#define EventApplicationWillFinishLaunching 14
#define EventApplicationWillHide 15
#define EventApplicationWillResignActive 16
#define EventApplicationWillTerminate 17
#define EventApplicationWillUnhide 18
#define EventApplicationWillUpdate 19
#define EventApplicationDidChangeTheme 20
#define EventWindowDidBecomeKey 20
#define EventWindowDidBecomeMain 21
#define EventWindowDidBeginSheet 22
#define EventWindowDidChangeAlpha 23
#define EventWindowDidChangeBackingLocation 24
#define EventWindowDidChangeBackingProperties 25
#define EventWindowDidChangeCollectionBehavior 26
#define EventWindowDidChangeEffectiveAppearance 27
#define EventWindowDidChangeOcclusionState 28
#define EventWindowDidChangeOrderingMode 29
#define EventWindowDidChangeScreen 30
#define EventWindowDidChangeScreenParameters 31
#define EventWindowDidChangeScreenProfile 32
#define EventWindowDidChangeScreenSpace 33
#define EventWindowDidChangeScreenSpaceProperties 34
#define EventWindowDidChangeSharingType 35
#define EventWindowDidChangeSpace 36
#define EventWindowDidChangeSpaceOrderingMode 37
#define EventWindowDidChangeTitle 38
#define EventWindowDidChangeToolbar 39
#define EventWindowDidChangeVisibility 40
#define EventWindowDidDeminiaturize 41
#define EventWindowDidEndSheet 42
#define EventWindowDidEnterFullScreen 43
#define EventWindowDidEnterVersionBrowser 44
#define EventWindowDidExitFullScreen 45
#define EventWindowDidExitVersionBrowser 46
#define EventWindowDidExpose 47
#define EventWindowDidFocus 48
#define EventWindowDidMiniaturize 49
#define EventWindowDidMove 50
#define EventWindowDidOrderOffScreen 51
#define EventWindowDidOrderOnScreen 52
#define EventWindowDidResignKey 53
#define EventWindowDidResignMain 54
#define EventWindowDidResize 55
#define EventWindowDidUpdate 56
#define EventWindowDidUpdateAlpha 57
#define EventWindowDidUpdateCollectionBehavior 58
#define EventWindowDidUpdateCollectionProperties 59
#define EventWindowDidUpdateShadow 60
#define EventWindowDidUpdateTitle 61
#define EventWindowDidUpdateToolbar 62
#define EventWindowDidUpdateVisibility 63
#define EventWindowShouldClose 64
#define EventWindowWillBecomeKey 64
#define EventWindowWillBecomeMain 65
#define EventWindowWillBeginSheet 66
#define EventWindowWillChangeOrderingMode 67
#define EventWindowWillClose 68
#define EventWindowWillDeminiaturize 69
#define EventWindowWillEnterFullScreen 70
#define EventWindowWillEnterVersionBrowser 71
#define EventWindowWillExitFullScreen 72
#define EventWindowWillExitVersionBrowser 73
#define EventWindowWillFocus 74
#define EventWindowWillMiniaturize 75
#define EventWindowWillMove 76
#define EventWindowWillOrderOffScreen 77
#define EventWindowWillOrderOnScreen 78
#define EventWindowWillResignMain 79
#define EventWindowWillResize 80
#define EventWindowWillUnfocus 81
#define EventWindowWillUpdate 82
#define EventWindowWillUpdateAlpha 83
#define EventWindowWillUpdateCollectionBehavior 84
#define EventWindowWillUpdateCollectionProperties 85
#define EventWindowWillUpdateShadow 86
#define EventWindowWillUpdateTitle 87
#define EventWindowWillUpdateToolbar 88
#define EventWindowWillUpdateVisibility 89
#define EventWindowWillUseStandardFrame 90
#define EventMenuWillOpen 91
#define EventMenuDidOpen 92
#define EventMenuDidClose 93
#define EventMenuWillSendAction 94
#define EventMenuDidSendAction 95
#define EventMenuWillHighlightItem 96
#define EventMenuDidHighlightItem 97
#define EventMenuWillDisplayItem 98
#define EventMenuDidDisplayItem 99
#define EventMenuWillAddItem 100
#define EventMenuDidAddItem 101
#define EventMenuWillRemoveItem 102
#define EventMenuDidRemoveItem 103
#define EventMenuWillBeginTracking 104
#define EventMenuDidBeginTracking 105
#define EventMenuWillEndTracking 106
#define EventMenuDidEndTracking 107
#define EventMenuWillUpdate 108
#define EventMenuDidUpdate 109
#define EventMenuWillPopUp 110
#define EventMenuDidPopUp 111
#define EventMenuWillSendActionToItem 112
#define EventMenuDidSendActionToItem 113
#define EventWebViewDidStartProvisionalNavigation 114
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 115
#define EventWebViewDidFinishNavigation 116
#define EventWebViewDidCommitNavigation 117
#define EventWindowFileDraggingEntered 118
#define EventWindowFileDraggingPerformed 119
#define EventWindowFileDraggingExited 120
#define MAX_EVENTS 124
#define MAX_EVENTS 121
#endif
+2 -2
View File
@@ -6,9 +6,9 @@
extern void processApplicationEvent(unsigned int, void* data);
extern void processWindowEvent(unsigned int, unsigned int);
#define EventSystemThemeChanged 1167
#define EventSystemThemeChanged 0
#define MAX_EVENTS 2
#define MAX_EVENTS 1
#endif
+41 -26
View File
@@ -56,12 +56,20 @@ func newWindowsEvents() windowsEvents {
$$WINDOWSEVENTSVALUES }
}
func JSEvent(event uint) string {
return eventToJS[event]
func JSEvent(platform string, event uint) string {
return eventToJS[platform][event]
}
var eventToJS = map[uint]string{
$$EVENTTOJS}
var eventToJS = map[string]map[uint]string{
"windows": {
$$WINDOWSEVENTTOJS },
"mac": {
$$MACEVENTTOJS },
"linux": {
$$LINUXEVENTTOJS },
"common": {
$$COMMONEVENTTOJS },
}
`
@@ -126,22 +134,23 @@ func main() {
windowsJSEvents := bytes.NewBufferString("")
commonJSEvents := bytes.NewBufferString("")
eventToJS := bytes.NewBufferString("")
windowsEventToJS := bytes.NewBufferString("")
macEventToJS := bytes.NewBufferString("")
commonEventToJS := bytes.NewBufferString("")
linuxEventToJS := bytes.NewBufferString("")
linuxEventsDecl := bytes.NewBufferString("")
linuxEventsValues := bytes.NewBufferString("")
linuxJSEvents := bytes.NewBufferString("")
cLinuxHeaderEvents := bytes.NewBufferString("")
var id int
var maxMacEvents int
var maxLinuxEvents int
var currentMacEventNumber int
var currentLinuxEventNumber int
currentCommonEventNumber := 4096
var currentWindowsEventNumber int
var line []byte
// Loop over each line in the file
for id, line = range bytes.Split(eventNames, []byte{'\n'}) {
// First 1024 is reserved
id = id + 1024
for _, line = range bytes.Split(eventNames, []byte{'\n'}) {
// Skip empty lines
if len(line) == 0 {
@@ -173,14 +182,15 @@ func main() {
if strings.HasPrefix(event, "WebView") {
eventType = "WindowEventType"
}
cLinuxHeaderEvents.WriteString("#define Event" + eventTitle + " " + strconv.Itoa(id) + "\n")
cLinuxHeaderEvents.WriteString("#define Event" + eventTitle + " " + strconv.Itoa(currentLinuxEventNumber) + "\n")
linuxEventsDecl.WriteString("\t" + eventTitle + " " + eventType + "\n")
linuxEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(id) + ",\n")
linuxEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(currentLinuxEventNumber) + ",\n")
linuxJSEvents.WriteString("\t\t" + event + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
maxLinuxEvents++
if ignoreEvent {
continue
}
linuxEventToJS.WriteString("\t\t" + strconv.Itoa(currentLinuxEventNumber) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
currentLinuxEventNumber++
case "mac":
eventType := "ApplicationEventType"
if strings.HasPrefix(event, "Window") {
@@ -190,14 +200,14 @@ func main() {
eventType = "WindowEventType"
}
macEventsDecl.WriteString("\t" + eventTitle + " " + eventType + "\n")
macEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(id) + ",\n")
macEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(currentMacEventNumber) + ",\n")
macJSEvents.WriteString("\t\t" + event + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
cDarwinHeaderEvents.WriteString("#define Event" + eventTitle + " " + strconv.Itoa(id) + "\n")
eventToJS.WriteString("\t" + strconv.Itoa(id) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
maxMacEvents++
cDarwinHeaderEvents.WriteString("#define Event" + eventTitle + " " + strconv.Itoa(currentMacEventNumber) + "\n")
if ignoreEvent {
continue
}
macEventToJS.WriteString("\t\t" + strconv.Itoa(currentMacEventNumber) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
currentMacEventNumber++
// Check if this is a window event
if strings.HasPrefix(event, "Window") {
windowDelegateEvents.WriteString(`- (void)` + delegateEventFunction + `:(NSNotification *)notification {
@@ -238,9 +248,10 @@ func main() {
eventType = "WindowEventType"
}
commonEventsDecl.WriteString("\t" + eventTitle + " " + eventType + "\n")
commonEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(id) + ",\n")
commonEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(currentCommonEventNumber) + ",\n")
commonJSEvents.WriteString("\t\t" + event + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
eventToJS.WriteString("\t" + strconv.Itoa(id) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
commonEventToJS.WriteString("\t\t" + strconv.Itoa(currentCommonEventNumber) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
currentCommonEventNumber++
case "windows":
eventType := "ApplicationEventType"
if strings.HasPrefix(event, "Window") {
@@ -250,14 +261,15 @@ func main() {
eventType = "WindowEventType"
}
windowsEventsDecl.WriteString("\t" + eventTitle + " " + eventType + "\n")
windowsEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(id) + ",\n")
windowsEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(currentWindowsEventNumber) + ",\n")
windowsJSEvents.WriteString("\t\t" + event + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
eventToJS.WriteString("\t" + strconv.Itoa(id) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
windowsEventToJS.WriteString("\t\t" + strconv.Itoa(currentWindowsEventNumber) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
currentWindowsEventNumber++
}
}
cLinuxHeaderEvents.WriteString("\n#define MAX_EVENTS " + strconv.Itoa(maxLinuxEvents+1) + "\n")
cDarwinHeaderEvents.WriteString("\n#define MAX_EVENTS " + strconv.Itoa(maxMacEvents+1) + "\n")
cLinuxHeaderEvents.WriteString("\n#define MAX_EVENTS " + strconv.Itoa(currentLinuxEventNumber) + "\n")
cDarwinHeaderEvents.WriteString("\n#define MAX_EVENTS " + strconv.Itoa(currentMacEventNumber) + "\n")
// Save the eventsGo template substituting the values and decls
templateToWrite := strings.ReplaceAll(eventsGo, "$$MACEVENTSDECL", macEventsDecl.String())
@@ -268,7 +280,10 @@ func main() {
templateToWrite = strings.ReplaceAll(templateToWrite, "$$WINDOWSEVENTSVALUES", windowsEventsValues.String())
templateToWrite = strings.ReplaceAll(templateToWrite, "$$COMMONEVENTSDECL", commonEventsDecl.String())
templateToWrite = strings.ReplaceAll(templateToWrite, "$$COMMONEVENTSVALUES", commonEventsValues.String())
templateToWrite = strings.ReplaceAll(templateToWrite, "$$EVENTTOJS", eventToJS.String())
templateToWrite = strings.ReplaceAll(templateToWrite, "$$WINDOWSEVENTTOJS", windowsEventToJS.String())
templateToWrite = strings.ReplaceAll(templateToWrite, "$$MACEVENTTOJS", macEventToJS.String())
templateToWrite = strings.ReplaceAll(templateToWrite, "$$LINUXEVENTTOJS", linuxEventToJS.String())
templateToWrite = strings.ReplaceAll(templateToWrite, "$$COMMONEVENTTOJS", commonEventToJS.String())
err = os.WriteFile("../../pkg/events/events.go", []byte(templateToWrite), 0644)
if err != nil {
panic(err)