mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 17:39:58 +08:00
121 lines
2.6 KiB
Go
121 lines
2.6 KiB
Go
package runtime
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/wailsapp/wails/v2/internal/servicebus"
|
|
)
|
|
|
|
// Window defines all Window related operations
|
|
type Window interface {
|
|
Close()
|
|
Center()
|
|
Show()
|
|
Hide()
|
|
Maximise()
|
|
Unmaximise()
|
|
Minimise()
|
|
Unminimise()
|
|
SetTitle(title string)
|
|
SetSize(width int, height int)
|
|
SetMinSize(width int, height int)
|
|
SetMaxSize(width int, height int)
|
|
SetPosition(x int, y int)
|
|
Fullscreen()
|
|
UnFullscreen()
|
|
}
|
|
|
|
// Window exposes the Windows interface
|
|
type window struct {
|
|
bus *servicebus.ServiceBus
|
|
}
|
|
|
|
// newWindow creates a new window struct
|
|
func newWindow(bus *servicebus.ServiceBus) Window {
|
|
return &window{
|
|
bus: bus,
|
|
}
|
|
}
|
|
|
|
// Close the Window
|
|
// DISCUSSION:
|
|
// Should we even be doing this now we have a server build?
|
|
// Runtime.Quit() makes more sense than closing a window...
|
|
func (w *window) Close() {
|
|
w.bus.Publish("quit", "runtime.Close()")
|
|
}
|
|
|
|
// SetTitle sets the title of the window
|
|
func (w *window) SetTitle(title string) {
|
|
w.bus.Publish("window:settitle", title)
|
|
}
|
|
|
|
// Fullscreen makes the window fullscreen
|
|
func (w *window) Fullscreen() {
|
|
w.bus.Publish("window:fullscreen", "")
|
|
}
|
|
|
|
// UnFullscreen makes the window UnFullscreen
|
|
func (w *window) UnFullscreen() {
|
|
w.bus.Publish("window:unfullscreen", "")
|
|
}
|
|
|
|
// Center the window on the current screen
|
|
func (w *window) Center() {
|
|
w.bus.Publish("window:center", "")
|
|
}
|
|
|
|
// Show shows the window if hidden
|
|
func (w *window) Show() {
|
|
w.bus.Publish("window:show", "")
|
|
}
|
|
|
|
// Hide the window
|
|
func (w *window) Hide() {
|
|
w.bus.Publish("window:hide", "")
|
|
}
|
|
|
|
// SetSize sets the size of the window
|
|
func (w *window) SetSize(width int, height int) {
|
|
message := fmt.Sprintf("window:size:%d:%d", width, height)
|
|
w.bus.Publish(message, "")
|
|
}
|
|
|
|
// SetSize sets the size of the window
|
|
func (w *window) SetMinSize(width int, height int) {
|
|
message := fmt.Sprintf("window:minsize:%d:%d", width, height)
|
|
w.bus.Publish(message, "")
|
|
}
|
|
|
|
// SetSize sets the size of the window
|
|
func (w *window) SetMaxSize(width int, height int) {
|
|
message := fmt.Sprintf("window:maxsize:%d:%d", width, height)
|
|
w.bus.Publish(message, "")
|
|
}
|
|
|
|
// SetPosition sets the position of the window
|
|
func (w *window) SetPosition(x int, y int) {
|
|
message := fmt.Sprintf("window:position:%d:%d", x, y)
|
|
w.bus.Publish(message, "")
|
|
}
|
|
|
|
// Maximise the window
|
|
func (w *window) Maximise() {
|
|
w.bus.Publish("window:maximise", "")
|
|
}
|
|
|
|
// Unmaximise the window
|
|
func (w *window) Unmaximise() {
|
|
w.bus.Publish("window:unmaximise", "")
|
|
}
|
|
|
|
// Minimise the window
|
|
func (w *window) Minimise() {
|
|
w.bus.Publish("window:minimise", "")
|
|
}
|
|
|
|
// Unminimise the window
|
|
func (w *window) Unminimise() {
|
|
w.bus.Publish("window:unminimise", "")
|
|
}
|