2021-05-29 06:26:35 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2021-06-01 05:25:31 +00:00
|
|
|
"flag"
|
2021-05-29 06:26:35 +00:00
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
|
|
|
_ "embed"
|
|
|
|
"github.com/wailsapp/wails"
|
2021-05-31 22:44:35 +00:00
|
|
|
"github.com/atotto/clipboard"
|
2021-05-29 06:26:35 +00:00
|
|
|
)
|
|
|
|
|
2021-06-01 05:25:31 +00:00
|
|
|
const (
|
|
|
|
version string = "0.5.0"
|
|
|
|
)
|
|
|
|
|
2021-05-29 06:26:35 +00:00
|
|
|
|
|
|
|
//go:embed frontend/build/main.js
|
|
|
|
var js string
|
|
|
|
|
|
|
|
//go:embed frontend/build/main.css
|
|
|
|
var css string
|
|
|
|
|
|
|
|
var history *History = &History{make([]string, 0, 10), -1}
|
|
|
|
var appCtrl *AppControl = &AppControl{}
|
|
|
|
var settings *Settings = NewSettings()
|
|
|
|
|
|
|
|
type AppControl struct {
|
|
|
|
runtime *wails.Runtime
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *AppControl) WailsInit(runtime *wails.Runtime) error {
|
|
|
|
f.runtime = runtime
|
|
|
|
log := f.runtime.Log.New("Goldberry")
|
|
|
|
log.Info("AppIo initialized")
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *AppControl) SaveFile(data string) error {
|
|
|
|
filePath := f.runtime.Dialog.SelectSaveFile()
|
|
|
|
if filePath == "" {
|
|
|
|
return fmt.Errorf("Save canceled")
|
|
|
|
}
|
|
|
|
file, err := os.Create(filePath)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
defer file.Close()
|
|
|
|
file.WriteString(data)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2021-05-31 22:44:35 +00:00
|
|
|
func (f AppControl) WriteToClipboard(txt string) error {
|
|
|
|
return clipboard.WriteAll(txt)
|
|
|
|
}
|
|
|
|
|
2021-05-29 06:26:35 +00:00
|
|
|
func (f *AppControl) OpenHTTP(url string) error {
|
|
|
|
return f.runtime.Browser.OpenURL(url)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *AppControl) Quit() {
|
|
|
|
settings.Save()
|
|
|
|
f.runtime.Window.Close()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *AppControl) Fullscreen() {
|
|
|
|
f.runtime.Window.Fullscreen()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *AppControl) UnFullscreen() {
|
|
|
|
f.runtime.Window.UnFullscreen()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *AppControl) GetHomeText() (string, error) {
|
|
|
|
return GoldberryHome()
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
2021-06-01 05:25:31 +00:00
|
|
|
versionFlag := flag.Bool("v", false, "Print the version number and exit")
|
|
|
|
flag.Parse()
|
|
|
|
if *versionFlag {
|
|
|
|
fmt.Printf("Goldberry %s\n", version)
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
|
2021-05-29 06:26:35 +00:00
|
|
|
app := wails.CreateApp(&wails.AppConfig{
|
|
|
|
Width: 1024,
|
|
|
|
Height: 768,
|
|
|
|
Title: "Goldberry",
|
|
|
|
JS: js,
|
|
|
|
CSS: css,
|
|
|
|
Colour: "#DAA520",
|
|
|
|
Resizable: true,
|
|
|
|
MinWidth: 400,
|
|
|
|
MinHeight: 400,
|
|
|
|
DisableInspector: false,
|
|
|
|
})
|
|
|
|
|
|
|
|
settings.Load()
|
|
|
|
|
|
|
|
app.Bind(NavigateTo)
|
|
|
|
app.Bind(history)
|
|
|
|
app.Bind(appCtrl)
|
|
|
|
app.Bind(settings)
|
|
|
|
app.Run()
|
|
|
|
}
|