From 7929584ec5385f9010eb402aeb06cc7056983c40 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sun, 1 Nov 2020 06:31:35 +1100 Subject: [PATCH] 542 use supplied html (#547) * Fix custom HTML * Update HTML escaping * Added more docs around config --- config.go | 54 +++++++++++++++++++++++++++++-------- lib/interfaces/appconfig.go | 4 +-- lib/renderer/webview.go | 2 +- 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/config.go b/config.go index 57f274610..c520aced1 100644 --- a/config.go +++ b/config.go @@ -1,20 +1,39 @@ package wails import ( + "fmt" + "net/url" + "strings" + "github.com/leaanthony/mewn" "github.com/wailsapp/wails/runtime" ) // AppConfig is the configuration structure used when creating a Wails App object type AppConfig struct { - Width, Height int - Title string - defaultHTML string - HTML string - JS string - CSS string - Colour string - Resizable bool + // The width and height of your application in pixels + Width, Height int + + // The title to put in the title bar + Title string + + // The HTML your app should use. If you leave it blank, a default will be used: + //
+ HTML string + + // The Javascript your app should use. Normally this should be generated by a bundler. + JS string + + // The CSS your app should use. Normally this should be generated by a bundler. + CSS string + + // The colour of your window. Can take "#fff", "rgb(255,255,255)", "rgba(255,255,255,1)" formats + Colour string + + // Indicates whether your app should be resizable + Resizable bool + + // Indicated if the devtools should be disabled DisableInspector bool } @@ -33,9 +52,14 @@ func (a *AppConfig) GetTitle() string { return a.Title } -// GetDefaultHTML returns the default HTML -func (a *AppConfig) GetDefaultHTML() string { - return a.defaultHTML +// GetHTML returns the default HTML +func (a *AppConfig) GetHTML() string { + if len(a.HTML) > 0 { + a.HTML = url.QueryEscape(a.HTML) + a.HTML = "data:text/html," + strings.ReplaceAll(a.HTML, "+", "%20") + a.HTML = strings.ReplaceAll(a.HTML, "%3D", "=") + } + return a.HTML } // GetResizable returns true if the window should be resizable @@ -79,6 +103,10 @@ func (a *AppConfig) merge(in *AppConfig) error { a.JS = in.JS } + if in.HTML != "" { + a.HTML = in.HTML + } + if in.Width != 0 { a.Width = in.Width } @@ -109,5 +137,9 @@ func newConfig(userConfig *AppConfig) (*AppConfig, error) { } } + println("****************************************************") + fmt.Printf("%+v\n", result) + println("****************************************************") + return result, nil } diff --git a/lib/interfaces/appconfig.go b/lib/interfaces/appconfig.go index 6946c9186..6e063b4d4 100644 --- a/lib/interfaces/appconfig.go +++ b/lib/interfaces/appconfig.go @@ -6,9 +6,9 @@ type AppConfig interface { GetHeight() int GetTitle() string GetResizable() bool - GetDefaultHTML() string + GetHTML() string GetDisableInspector() bool GetColour() string GetCSS() string GetJS() string -} \ No newline at end of file +} diff --git a/lib/renderer/webview.go b/lib/renderer/webview.go index 0b19ac552..c51e76bc1 100644 --- a/lib/renderer/webview.go +++ b/lib/renderer/webview.go @@ -58,7 +58,7 @@ func (w *WebView) Initialise(config interfaces.AppConfig, ipc interfaces.IPCMana Height: config.GetHeight(), Title: config.GetTitle(), Resizable: config.GetResizable(), - URL: config.GetDefaultHTML(), + URL: config.GetHTML(), Debug: !config.GetDisableInspector(), ExternalInvokeCallback: func(_ wv.WebView, message string) { w.ipc.Dispatch(message, w.callback)