github.com/AlpineAIO/wails/v2@v2.0.0-beta.32.0.20240505041856-1047a8fa5fef/internal/frontend/dispatcher/window.go (about) 1 package dispatcher 2 3 import ( 4 "encoding/json" 5 "errors" 6 "strconv" 7 "strings" 8 9 "github.com/AlpineAIO/wails/v2/internal/frontend" 10 "github.com/AlpineAIO/wails/v2/pkg/options" 11 ) 12 13 func (d *Dispatcher) mustAtoI(input string) int { 14 result, err := strconv.Atoi(input) 15 if err != nil { 16 d.log.Error("cannot convert %s to integer!", input) 17 } 18 return result 19 } 20 21 func (d *Dispatcher) processWindowMessage(message string, sender frontend.Frontend) (string, error) { 22 if len(message) < 2 { 23 return "", errors.New("Invalid Window Message: " + message) 24 } 25 26 switch message[1] { 27 case 'A': 28 switch message[2:] { 29 case "SDT": 30 go sender.WindowSetSystemDefaultTheme() 31 case "LT": 32 go sender.WindowSetLightTheme() 33 case "DT": 34 go sender.WindowSetDarkTheme() 35 case "TP:0", "TP:1": 36 if message[2:] == "TP:0" { 37 go sender.WindowSetAlwaysOnTop(false) 38 } else if message[2:] == "TP:1" { 39 go sender.WindowSetAlwaysOnTop(true) 40 } 41 } 42 case 'c': 43 go sender.WindowCenter() 44 case 'T': 45 title := message[2:] 46 go sender.WindowSetTitle(title) 47 case 'F': 48 go sender.WindowFullscreen() 49 case 'f': 50 go sender.WindowUnfullscreen() 51 case 's': 52 parts := strings.Split(message[3:], ":") 53 w := d.mustAtoI(parts[0]) 54 h := d.mustAtoI(parts[1]) 55 go sender.WindowSetSize(w, h) 56 case 'p': 57 parts := strings.Split(message[3:], ":") 58 x := d.mustAtoI(parts[0]) 59 y := d.mustAtoI(parts[1]) 60 go sender.WindowSetPosition(x, y) 61 case 'H': 62 go sender.WindowHide() 63 case 'S': 64 go sender.WindowShow() 65 case 'R': 66 go sender.WindowReloadApp() 67 case 'r': 68 var rgba options.RGBA 69 err := json.Unmarshal([]byte(message[3:]), &rgba) 70 if err != nil { 71 return "", err 72 } 73 go sender.WindowSetBackgroundColour(&rgba) 74 case 'M': 75 go sender.WindowMaximise() 76 case 't': 77 go sender.WindowToggleMaximise() 78 case 'U': 79 go sender.WindowUnmaximise() 80 case 'm': 81 go sender.WindowMinimise() 82 case 'u': 83 go sender.WindowUnminimise() 84 case 'Z': 85 parts := strings.Split(message[3:], ":") 86 w := d.mustAtoI(parts[0]) 87 h := d.mustAtoI(parts[1]) 88 go sender.WindowSetMaxSize(w, h) 89 case 'z': 90 parts := strings.Split(message[3:], ":") 91 w := d.mustAtoI(parts[0]) 92 h := d.mustAtoI(parts[1]) 93 go sender.WindowSetMinSize(w, h) 94 default: 95 d.log.Error("unknown Window message: %s", message) 96 } 97 98 return "", nil 99 }