mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 01:43:15 +08:00
92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package message
|
|
|
|
import "fmt"
|
|
|
|
// windowMessageParser does what it says on the tin!
|
|
func windowMessageParser(message string) (*parsedMessage, error) {
|
|
|
|
// Sanity check: Window messages must be at least 2 bytes
|
|
if len(message) < 2 {
|
|
return nil, fmt.Errorf("window message was an invalid length")
|
|
}
|
|
|
|
// Extract event type
|
|
windowEvent := message[1]
|
|
parsedMessage := &parsedMessage{}
|
|
|
|
// Switch the windowEvent type
|
|
switch windowEvent {
|
|
|
|
// Closed window
|
|
case 'C':
|
|
parsedMessage.Topic = "quit"
|
|
parsedMessage.Data = "Window Closed"
|
|
|
|
// Center window
|
|
case 'c':
|
|
parsedMessage.Topic = "window:center"
|
|
parsedMessage.Data = ""
|
|
|
|
// Hide window
|
|
case 'H':
|
|
parsedMessage.Topic = "window:hide"
|
|
parsedMessage.Data = ""
|
|
|
|
// Show window
|
|
case 'S':
|
|
parsedMessage.Topic = "window:show"
|
|
parsedMessage.Data = ""
|
|
|
|
// Position window
|
|
case 'p':
|
|
parsedMessage.Topic = "window:position:" + message[3:]
|
|
parsedMessage.Data = ""
|
|
|
|
// Set window size
|
|
case 's':
|
|
parsedMessage.Topic = "window:size:" + message[3:]
|
|
parsedMessage.Data = ""
|
|
|
|
// Maximise window
|
|
case 'M':
|
|
parsedMessage.Topic = "window:maximise"
|
|
parsedMessage.Data = ""
|
|
|
|
// Unmaximise window
|
|
case 'U':
|
|
parsedMessage.Topic = "window:unmaximise"
|
|
parsedMessage.Data = ""
|
|
|
|
// Minimise window
|
|
case 'm':
|
|
parsedMessage.Topic = "window:minimise"
|
|
parsedMessage.Data = ""
|
|
|
|
// Unminimise window
|
|
case 'u':
|
|
parsedMessage.Topic = "window:unminimise"
|
|
parsedMessage.Data = ""
|
|
|
|
// Fullscreen window
|
|
case 'F':
|
|
parsedMessage.Topic = "window:fullscreen"
|
|
parsedMessage.Data = ""
|
|
|
|
// UnFullscreen window
|
|
case 'f':
|
|
parsedMessage.Topic = "window:unfullscreen"
|
|
parsedMessage.Data = ""
|
|
|
|
// Set Title
|
|
case 'T':
|
|
parsedMessage.Topic = "window:settitle"
|
|
parsedMessage.Data = message[2:]
|
|
|
|
// Unknown event type
|
|
default:
|
|
return nil, fmt.Errorf("unknown message: %s", message)
|
|
}
|
|
|
|
return parsedMessage, nil
|
|
}
|