mirror of https://gitee.com/godoos/godoos.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.5 KiB
78 lines
1.5 KiB
package app
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"godoos/cmd"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
|
|
wruntime "github.com/wailsapp/wails/v2/pkg/runtime"
|
|
)
|
|
|
|
// App struct
|
|
type App struct {
|
|
ctx context.Context
|
|
exDir string
|
|
}
|
|
|
|
// NewApp creates a new App application struct
|
|
func NewApp() *App {
|
|
return &App{}
|
|
}
|
|
|
|
// startup is called when the app starts. The context is saved
|
|
// so we can call the runtime methods
|
|
func (a *App) Startup(ctx context.Context) {
|
|
a.ctx = ctx
|
|
go cmd.OsStart()
|
|
}
|
|
func (a *App) Shutdown(ctx context.Context) {
|
|
a.ctx = ctx
|
|
cmd.OsStop()
|
|
}
|
|
func (a *App) OpenDirDialog() string {
|
|
path, err := wruntime.OpenDirectoryDialog(a.ctx, wruntime.OpenDialogOptions{
|
|
Title: "Select Folder",
|
|
})
|
|
if err != nil {
|
|
wruntime.LogErrorf(a.ctx, "Error: %+v\n", err)
|
|
}
|
|
return path
|
|
}
|
|
|
|
func (a *App) GetAbsPath(path string) (string, error) {
|
|
var absPath string
|
|
var err error
|
|
if filepath.IsAbs(path) {
|
|
absPath = filepath.Clean(path)
|
|
} else {
|
|
absPath, err = filepath.Abs(filepath.Join(a.exDir, path))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
}
|
|
absPath = strings.ReplaceAll(absPath, "/", string(os.PathSeparator))
|
|
//println("GetAbsPath:", absPath)
|
|
return absPath, nil
|
|
}
|
|
|
|
func (a *App) RestartApp() error {
|
|
if runtime.GOOS == "windows" {
|
|
name, err := os.Executable()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
exec.Command(name, os.Args[1:]...).Start()
|
|
wruntime.Quit(a.ctx)
|
|
return nil
|
|
}
|
|
return errors.New("unsupported OS")
|
|
}
|
|
|
|
func (a *App) GetPlatform() string {
|
|
return runtime.GOOS
|
|
}
|
|
|