mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 07:10:40 +08:00
162 lines
4.2 KiB
Go
162 lines
4.2 KiB
Go
package appng
|
|
|
|
import (
|
|
"context"
|
|
"github.com/wailsapp/wails/v2/internal/binding"
|
|
"github.com/wailsapp/wails/v2/internal/frontend"
|
|
"github.com/wailsapp/wails/v2/internal/logger"
|
|
"github.com/wailsapp/wails/v2/internal/menumanager"
|
|
"github.com/wailsapp/wails/v2/internal/signal"
|
|
"github.com/wailsapp/wails/v2/pkg/options"
|
|
)
|
|
|
|
// App defines a Wails application structure
|
|
type App struct {
|
|
frontend frontend.Frontend
|
|
logger *logger.Logger
|
|
signal *signal.Manager
|
|
options *options.App
|
|
|
|
menuManager *menumanager.Manager
|
|
|
|
// Indicates if the app is in debug mode
|
|
debug bool
|
|
|
|
// This is our binding DB
|
|
bindings *binding.Bindings
|
|
|
|
// Startup/Shutdown
|
|
startupCallback func(ctx context.Context)
|
|
shutdownCallback func()
|
|
}
|
|
|
|
func (a *App) Run() error {
|
|
|
|
go func() {
|
|
//time.Sleep(3 * time.Second)
|
|
//println("WindowSetSize(3000,2000)")
|
|
//a.frontend.WindowSetSize(3000,2000)
|
|
//x,y := a.frontend.WindowGetSize()
|
|
//println("X", x, "Y", y)
|
|
//time.Sleep(3 * time.Second)
|
|
//println("a.frontend.WindowSetSize(10,10)")
|
|
//a.frontend.WindowSetSize(10,10)
|
|
//x,y = a.frontend.WindowGetSize()
|
|
//println("X", x, "Y", y)
|
|
//time.Sleep(3 * time.Second)
|
|
//time.Sleep(3 * time.Second)
|
|
//println("WindowSetMaxSize(50,50)")
|
|
//a.frontend.WindowSetMaxSize(200,200)
|
|
//x,y := a.frontend.WindowGetSize()
|
|
//println("X", x, "Y", y)
|
|
//time.Sleep(3 * time.Second)
|
|
//println("WindowSetMinSize(100,100)")
|
|
//a.frontend.WindowSetMinSize(600,600)
|
|
//x,y = a.frontend.WindowGetSize()
|
|
//println("X", x, "Y", y)
|
|
//println("fullscreen")
|
|
//a.frontend.WindowFullscreen()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("unfullscreen")
|
|
//a.frontend.WindowUnFullscreen()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("hide")
|
|
//a.frontend.WindowHide()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("show")
|
|
//a.frontend.WindowShow()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("title 1")
|
|
//a.frontend.WindowSetTitle("title 1")
|
|
//time.Sleep(1 * time.Second)
|
|
//println("title 2")
|
|
//a.frontend.WindowSetTitle("title 2")
|
|
//time.Sleep(1 * time.Second)
|
|
//println("setsize 1")
|
|
//a.frontend.WindowSetSize(100,100)
|
|
//time.Sleep(1 * time.Second)
|
|
//println("setsize 2")
|
|
//a.frontend.WindowSetSize(500,500)
|
|
//time.Sleep(1 * time.Second)
|
|
//println("setpos 1")
|
|
//a.frontend.WindowSetPos(0,0)
|
|
//time.Sleep(1 * time.Second)
|
|
//println("setpos 2")
|
|
//a.frontend.WindowSetPos(500,500)
|
|
//time.Sleep(1 * time.Second)
|
|
//println("Center 1")
|
|
//a.frontend.WindowCenter()
|
|
//time.Sleep(5 * time.Second)
|
|
//println("Center 2")
|
|
//a.frontend.WindowCenter()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("maximise")
|
|
//a.frontend.WindowMaximise()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("UnMaximise")
|
|
//a.frontend.WindowUnmaximise()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("minimise")
|
|
//a.frontend.WindowMinimise()
|
|
//time.Sleep(1 * time.Second)
|
|
//println("unminimise")
|
|
//a.frontend.WindowUnminimise()
|
|
//time.Sleep(1 * time.Second)
|
|
}()
|
|
|
|
return a.frontend.Run()
|
|
}
|
|
|
|
// CreateApp
|
|
func CreateApp(appoptions *options.App) (*App, error) {
|
|
|
|
// Merge default options
|
|
options.MergeDefaults(appoptions)
|
|
|
|
// Set up logger
|
|
myLogger := logger.New(appoptions.Logger)
|
|
myLogger.SetLogLevel(appoptions.LogLevel)
|
|
|
|
// Create the menu manager
|
|
menuManager := menumanager.NewManager()
|
|
|
|
// Process the application menu
|
|
appMenu := options.GetApplicationMenu(appoptions)
|
|
err := menuManager.SetApplicationMenu(appMenu)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Create binding exemptions - Ugly hack. There must be a better way
|
|
bindingExemptions := []interface{}{appoptions.Startup, appoptions.Shutdown}
|
|
appBindings := binding.NewBindings(myLogger, appoptions.Bind, bindingExemptions)
|
|
|
|
appFrontend := NewFrontend(appoptions, myLogger, appBindings)
|
|
|
|
result := &App{
|
|
frontend: appFrontend,
|
|
logger: myLogger,
|
|
bindings: appBindings,
|
|
menuManager: menuManager,
|
|
startupCallback: appoptions.Startup,
|
|
shutdownCallback: appoptions.Shutdown,
|
|
}
|
|
|
|
result.options = appoptions
|
|
|
|
//// Initialise the app
|
|
//err := result.Init()
|
|
//if err != nil {
|
|
// return nil, err
|
|
//}
|
|
//
|
|
//// Preflight Checks
|
|
//err = result.PreflightChecks(appoptions)
|
|
//if err != nil {
|
|
// return nil, err
|
|
//}
|
|
|
|
return result, nil
|
|
|
|
}
|