package main import ( "time" "github.com/wailsapp/wails/v2" "github.com/wailsapp/wails/v2/pkg/options" ) // RuntimeTest to test the runtimes type RuntimeTest struct { runtime *wails.Runtime } // WailsInit is an initialisation method func (r *RuntimeTest) WailsInit(runtime *wails.Runtime) error { r.runtime = runtime println("Woohoo I'm here!") // Set title! // runtime.Window.SetTitle("My App!") r.runtime.Events.On("testevent", func(optionalParams ...interface{}) { println("Wooohoooo! I got called!") }) r.runtime.Events.Once("testeventonce", func(optionalParams ...interface{}) { println("I only get called once!") }) r.runtime.Events.OnMultiple("testeventmultiple", func(optionalParams ...interface{}) { println("I only get called 3 times!") }, 3) return nil } // WailsShutdown is called during shutdown func (r *RuntimeTest) WailsShutdown() { // This is a test println("WOOOOOOOOOOOOOO WailsShutdown CALLED") } // EmitSingleEventNoParams will emit a single event with the given name and no params func (r *RuntimeTest) EmitSingleEventNoParams(name string) { r.runtime.Events.Emit(name) } // EmitSingleEventWithOneParam will emit a single event with the given name func (r *RuntimeTest) EmitSingleEventWithOneParam(name string) { r.runtime.Events.Emit(name, 1) } // RuntimeQuit will call the Runtime.Quit method func (r *RuntimeTest) RuntimeQuit() { r.runtime.Quit() } // Fullscreen will call the Runtime.Fullscreen method func (r *RuntimeTest) Fullscreen() { r.runtime.Window.Fullscreen() } // SetTitle will call the SetTitle method func (r *RuntimeTest) SetTitle(title string) { r.runtime.Window.SetTitle(title) } // UnFullscreen will call the Runtime.UnFullscreen method func (r *RuntimeTest) UnFullscreen() { r.runtime.Window.UnFullscreen() } // SetColour will call the Runtime.UnFullscreen method func (r *RuntimeTest) SetColour(colour int) { r.runtime.Window.SetColour(colour) } // OpenFileDialog will call the Runtime.Dialog.OpenDialog method requesting File selection func (r *RuntimeTest) OpenFileDialog(title string, filter string) []string { dialogOptions := &options.OpenDialog{ Title: title, Filters: filter, AllowFiles: true, } return r.runtime.Dialog.Open(dialogOptions) } // OpenDirectoryDialog will call the Runtime.Dialog.OpenDialog method requesting File selection func (r *RuntimeTest) OpenDirectoryDialog(title string, filter string) []string { dialogOptions := &options.OpenDialog{ Title: title, Filters: filter, AllowDirectories: true, } return r.runtime.Dialog.Open(dialogOptions) } // OpenDialog will call the Runtime.Dialog.OpenDialog method requesting both Files and Directories func (r *RuntimeTest) OpenDialog(title string, filter string) []string { dialogOptions := &options.OpenDialog{ Title: title, Filters: filter, AllowDirectories: true, AllowFiles: true, } return r.runtime.Dialog.Open(dialogOptions) } // OpenDialogMultiple will call the Runtime.Dialog.OpenDialog method allowing multiple selection func (r *RuntimeTest) OpenDialogMultiple(title string, filter string) []string { dialogOptions := &options.OpenDialog{ Title: title, Filters: filter, AllowDirectories: true, AllowFiles: true, AllowMultiple: true, } return r.runtime.Dialog.Open(dialogOptions) } // OpenDialogAllOptions will call the Runtime.Dialog.OpenDialog method allowing multiple selection func (r *RuntimeTest) OpenDialogAllOptions(filter string, defaultDir string, defaultFilename string) []string { dialogOptions := &options.OpenDialog{ DefaultDirectory: defaultDir, DefaultFilename: defaultFilename, Filters: filter, AllowFiles: true, AllowDirectories: true, ShowHiddenFiles: true, CanCreateDirectories: true, TreatPackagesAsDirectories: true, ResolveAliases: true, } return r.runtime.Dialog.Open(dialogOptions) } // SaveFileDialog will call the Runtime.Dialog.SaveDialog method requesting a File selection func (r *RuntimeTest) SaveFileDialog(title string, filter string) string { dialogOptions := &options.SaveDialog{ Title: title, Filters: filter, } return r.runtime.Dialog.Save(dialogOptions) } // SaveDialogAllOptions will call the Runtime.Dialog.SaveDialog method allowing multiple selection func (r *RuntimeTest) SaveDialogAllOptions(filter string, defaultDir string, defaultFilename string) string { dialogOptions := &options.SaveDialog{ DefaultDirectory: defaultDir, DefaultFilename: defaultFilename, Filters: filter, ShowHiddenFiles: true, CanCreateDirectories: true, TreatPackagesAsDirectories: true, } return r.runtime.Dialog.Save(dialogOptions) } // HideWindow will call the Runtime.Window.Hide method and then call // Runtime.Window.Show 3 seconds later. func (r *RuntimeTest) HideWindow() { time.AfterFunc(3*time.Second, func() { r.runtime.Window.Show() }) r.runtime.Window.Hide() } // Maximise the Window func (r *RuntimeTest) Maximise() { r.runtime.Window.Maximise() } // Unmaximise the Window func (r *RuntimeTest) Unmaximise() { r.runtime.Window.Unmaximise() } // Minimise the Window func (r *RuntimeTest) Minimise() { r.runtime.Window.Minimise() } // Unminimise the Window func (r *RuntimeTest) Unminimise() { r.runtime.Window.Unminimise() } // Check is system is running in dark mode func (r *RuntimeTest) IsDarkMode() bool { return r.runtime.System.IsDarkMode() }