mirror of
https://github.com/taigrr/wails.git
synced 2026-04-04 14:12:40 -07:00
Compare commits
2 Commits
develop
...
windows-fi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68f7c4c7bd | ||
|
|
c07900e555 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -16,4 +16,5 @@ examples/**/example*
|
|||||||
cmd/wails/wails
|
cmd/wails/wails
|
||||||
.DS_Store
|
.DS_Store
|
||||||
tmp
|
tmp
|
||||||
node_modules/
|
node_modules/
|
||||||
|
/runtime/js/runtime/dist
|
||||||
8
app.go
8
app.go
@@ -2,6 +2,7 @@ package wails
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/syossan27/tebata"
|
"github.com/syossan27/tebata"
|
||||||
@@ -43,7 +44,7 @@ func CreateApp(optionalConfig ...*AppConfig) *App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
result := &App{
|
result := &App{
|
||||||
logLevel: "info",
|
logLevel: "debug",
|
||||||
renderer: renderer.NewWebView(),
|
renderer: renderer.NewWebView(),
|
||||||
ipc: ipc.NewManager(),
|
ipc: ipc.NewManager(),
|
||||||
bindingManager: binding.NewManager(),
|
bindingManager: binding.NewManager(),
|
||||||
@@ -102,6 +103,11 @@ func (a *App) start() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set debug mode
|
||||||
|
if runtime.GOOS == "windows" && BuildMode == cmd.BuildModeDebug {
|
||||||
|
a.renderer.EnableDebug()
|
||||||
|
}
|
||||||
|
|
||||||
// Start signal handler
|
// Start signal handler
|
||||||
t := tebata.New(os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)
|
t := tebata.New(os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)
|
||||||
t.Reserve(func() {
|
t.Reserve(func() {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -9,4 +9,4 @@
|
|||||||
last 2 versions
|
last 2 versions
|
||||||
Firefox ESR
|
Firefox ESR
|
||||||
not dead
|
not dead
|
||||||
not IE 9-11 # For IE 9-11 support, remove 'not'.
|
IE 9-11 # For IE 9-11 support, remove 'not'.
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
/*
|
|
||||||
Wails Bridge (c) 2019-present Lea Anthony
|
|
||||||
|
|
||||||
This prod version is to get around having to rewrite your code
|
|
||||||
for production. When doing a release build, this file will be used
|
|
||||||
instead of the full version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export default {
|
|
||||||
// The main function
|
|
||||||
// Passes the main Wails object to the callback if given.
|
|
||||||
Start: function(callback) {
|
|
||||||
if (callback) {
|
|
||||||
window.wails.events.on("wails:ready", callback);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
/*
|
|
||||||
Wails Bridge (c) 2019-present Lea Anthony
|
|
||||||
|
|
||||||
This prod version is to get around having to rewrite your code
|
|
||||||
for production. When doing a release build, this file will be used
|
|
||||||
instead of the full version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export default {
|
|
||||||
// The main function
|
|
||||||
// Passes the main Wails object to the callback if given.
|
|
||||||
Start: function (callback) {
|
|
||||||
if (callback) {
|
|
||||||
window.wails.Events.On("wails:ready", callback);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
12
config.go
12
config.go
@@ -94,12 +94,12 @@ func (a *AppConfig) merge(in *AppConfig) error {
|
|||||||
// Creates the default configuration
|
// Creates the default configuration
|
||||||
func newConfig(userConfig *AppConfig) (*AppConfig, error) {
|
func newConfig(userConfig *AppConfig) (*AppConfig, error) {
|
||||||
result := &AppConfig{
|
result := &AppConfig{
|
||||||
Width: 800,
|
Width: 800,
|
||||||
Height: 600,
|
Height: 600,
|
||||||
Resizable: true,
|
Resizable: true,
|
||||||
Title: "My Wails App",
|
Title: "My Wails App",
|
||||||
Colour: "#FFF", // White by default
|
Colour: "#FFF", // White by default
|
||||||
HTML: mewn.String("./runtime/assets/default.html"),
|
defaultHTML: mewn.String("./runtime/assets/default.html"),
|
||||||
}
|
}
|
||||||
|
|
||||||
if userConfig != nil {
|
if userConfig != nil {
|
||||||
|
|||||||
@@ -3,10 +3,12 @@ package interfaces
|
|||||||
import (
|
import (
|
||||||
"github.com/wailsapp/wails/lib/messages"
|
"github.com/wailsapp/wails/lib/messages"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Renderer is an interface describing a Wails target to render the app to
|
// Renderer is an interface describing a Wails target to render the app to
|
||||||
type Renderer interface {
|
type Renderer interface {
|
||||||
Initialise(AppConfig, IPCManager, EventManager) error
|
Initialise(AppConfig, IPCManager, EventManager) error
|
||||||
Run() error
|
Run() error
|
||||||
|
EnableDebug()
|
||||||
|
|
||||||
// Binding
|
// Binding
|
||||||
NewBinding(bindingName string) error
|
NewBinding(bindingName string) error
|
||||||
|
|||||||
@@ -48,6 +48,9 @@ type Bridge struct {
|
|||||||
|
|
||||||
// Mutex for writing to the socket
|
// Mutex for writing to the socket
|
||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
|
|
||||||
|
// debug
|
||||||
|
debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise the Bridge Renderer
|
// Initialise the Bridge Renderer
|
||||||
@@ -74,6 +77,11 @@ func (h *Bridge) evalJS(js string, mtype messageType) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EnableDebug enables debug!
|
||||||
|
func (h *Bridge) EnableDebug() {
|
||||||
|
h.debug = true
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Bridge) injectCSS(css string) {
|
func (h *Bridge) injectCSS(css string) {
|
||||||
// Minify css to overcome issues in the browser with carriage returns
|
// Minify css to overcome issues in the browser with carriage returns
|
||||||
minified, err := htmlmin.Minify([]byte(css), &htmlmin.Options{
|
minified, err := htmlmin.Minify([]byte(css), &htmlmin.Options{
|
||||||
@@ -117,7 +125,6 @@ func (h *Bridge) sendMessage(conn *websocket.Conn, msg string) {
|
|||||||
|
|
||||||
func (h *Bridge) start(conn *websocket.Conn) {
|
func (h *Bridge) start(conn *websocket.Conn) {
|
||||||
|
|
||||||
// set external.invoke
|
|
||||||
h.log.Infof("Connected to frontend.")
|
h.log.Infof("Connected to frontend.")
|
||||||
|
|
||||||
wailsRuntime := mewn.String("../../runtime/assets/wails.js")
|
wailsRuntime := mewn.String("../../runtime/assets/wails.js")
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -25,6 +25,7 @@ type WebView struct {
|
|||||||
config interfaces.AppConfig
|
config interfaces.AppConfig
|
||||||
eventManager interfaces.EventManager
|
eventManager interfaces.EventManager
|
||||||
bindingCache []string
|
bindingCache []string
|
||||||
|
debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewWebView returns a new WebView struct
|
// NewWebView returns a new WebView struct
|
||||||
@@ -48,13 +49,22 @@ func (w *WebView) Initialise(config interfaces.AppConfig, ipc interfaces.IPCMana
|
|||||||
// Save the config
|
// Save the config
|
||||||
w.config = config
|
w.config = config
|
||||||
|
|
||||||
|
// defaulthtml
|
||||||
|
HTML := config.GetDefaultHTML()
|
||||||
|
if len(HTML) == 0 {
|
||||||
|
HTML = mewn.String("../../runtime/assets/default.html")
|
||||||
|
}
|
||||||
|
|
||||||
|
HTML = fmt.Sprintf("data:text/html,%s", HTML)
|
||||||
|
fmt.Printf("*** %s ***", HTML)
|
||||||
|
w.log.Infof("URL: %s", HTML)
|
||||||
// Create the WebView instance
|
// Create the WebView instance
|
||||||
w.window = wv.NewWebview(wv.Settings{
|
w.window = wv.NewWebview(wv.Settings{
|
||||||
Width: config.GetWidth(),
|
Width: config.GetWidth(),
|
||||||
Height: config.GetHeight(),
|
Height: config.GetHeight(),
|
||||||
Title: config.GetTitle(),
|
Title: config.GetTitle(),
|
||||||
Resizable: config.GetResizable(),
|
Resizable: config.GetResizable(),
|
||||||
URL: config.GetDefaultHTML(),
|
URL: HTML,
|
||||||
Debug: !config.GetDisableInspector(),
|
Debug: !config.GetDisableInspector(),
|
||||||
ExternalInvokeCallback: func(_ wv.WebView, message string) {
|
ExternalInvokeCallback: func(_ wv.WebView, message string) {
|
||||||
w.ipc.Dispatch(message)
|
w.ipc.Dispatch(message)
|
||||||
@@ -95,6 +105,7 @@ func (w *WebView) evalJS(js string) error {
|
|||||||
if len(js) > 45 {
|
if len(js) > 45 {
|
||||||
outputJS += "..."
|
outputJS += "..."
|
||||||
}
|
}
|
||||||
|
// var outputJS = js
|
||||||
w.log.DebugFields("Eval", logger.Fields{"js": outputJS})
|
w.log.DebugFields("Eval", logger.Fields{"js": outputJS})
|
||||||
//
|
//
|
||||||
w.window.Dispatch(func() {
|
w.window.Dispatch(func() {
|
||||||
@@ -103,6 +114,11 @@ func (w *WebView) evalJS(js string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EnableDebug enables debug!
|
||||||
|
func (w *WebView) EnableDebug() {
|
||||||
|
w.debug = true
|
||||||
|
}
|
||||||
|
|
||||||
// Escape the Javascripts!
|
// Escape the Javascripts!
|
||||||
func escapeJS(js string) (string, error) {
|
func escapeJS(js string) (string, error) {
|
||||||
result := strings.Replace(js, "\\", "\\\\", -1)
|
result := strings.Replace(js, "\\", "\\\\", -1)
|
||||||
@@ -172,51 +188,58 @@ func (w *WebView) Run() error {
|
|||||||
|
|
||||||
w.log.Info("Running...")
|
w.log.Info("Running...")
|
||||||
|
|
||||||
// Runtime assets
|
// Inject firebug in debug mode on Windows
|
||||||
wailsRuntime := mewn.String("../../runtime/assets/wails.js")
|
if w.debug {
|
||||||
w.evalJS(wailsRuntime)
|
w.log.Debug("Injecting firebug")
|
||||||
|
// firebugLite := mewn.String("../../runtime/assets/injectFirebug.js")
|
||||||
|
// w.evalJS(firebugLite)
|
||||||
|
}
|
||||||
|
|
||||||
// Ping the wait channel when the wails runtime is loaded
|
// // Runtime assets
|
||||||
w.eventManager.On("wails:loaded", func(...interface{}) {
|
// wailsRuntime := mewn.String("../../runtime/assets/wails.js")
|
||||||
|
// w.evalJS(wailsRuntime)
|
||||||
|
|
||||||
// Run this in a different go routine to free up the main process
|
// // Ping the wait channel when the wails runtime is loaded
|
||||||
go func() {
|
// w.eventManager.On("wails:loaded", func(...interface{}) {
|
||||||
|
|
||||||
// Inject Bindings
|
// // Run this in a different go routine to free up the main process
|
||||||
for _, binding := range w.bindingCache {
|
// go func() {
|
||||||
w.evalJSSync(binding)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inject user CSS
|
// // Inject Bindings
|
||||||
if w.config.GetCSS() != "" {
|
// for _, binding := range w.bindingCache {
|
||||||
outputCSS := fmt.Sprintf("%.45s", w.config.GetCSS())
|
// w.evalJSSync(binding)
|
||||||
if len(outputCSS) > 45 {
|
// }
|
||||||
outputCSS += "..."
|
|
||||||
}
|
|
||||||
w.log.DebugFields("Inject User CSS", logger.Fields{"css": outputCSS})
|
|
||||||
w.injectCSS(w.config.GetCSS())
|
|
||||||
} else {
|
|
||||||
// Use default wails css
|
|
||||||
w.log.Debug("Injecting Default Wails CSS")
|
|
||||||
defaultCSS := mewn.String("../../runtime/assets/wails.css")
|
|
||||||
|
|
||||||
w.injectCSS(defaultCSS)
|
// // Inject user CSS
|
||||||
}
|
// if w.config.GetCSS() != "" {
|
||||||
|
// outputCSS := fmt.Sprintf("%.45s", w.config.GetCSS())
|
||||||
|
// if len(outputCSS) > 45 {
|
||||||
|
// outputCSS += "..."
|
||||||
|
// }
|
||||||
|
// w.log.DebugFields("Inject User CSS", logger.Fields{"css": outputCSS})
|
||||||
|
// w.injectCSS(w.config.GetCSS())
|
||||||
|
// } else {
|
||||||
|
// // Use default wails css
|
||||||
|
// w.log.Debug("Injecting Default Wails CSS")
|
||||||
|
// defaultCSS := mewn.String("../../runtime/assets/wails.css")
|
||||||
|
|
||||||
// Inject user JS
|
// w.injectCSS(defaultCSS)
|
||||||
if w.config.GetJS() != "" {
|
// }
|
||||||
outputJS := fmt.Sprintf("%.45s", w.config.GetJS())
|
|
||||||
if len(outputJS) > 45 {
|
|
||||||
outputJS += "..."
|
|
||||||
}
|
|
||||||
w.log.DebugFields("Inject User JS", logger.Fields{"js": outputJS})
|
|
||||||
w.evalJSSync(w.config.GetJS())
|
|
||||||
}
|
|
||||||
|
|
||||||
// Emit that everything is loaded and ready
|
// // Inject user JS
|
||||||
w.eventManager.Emit("wails:ready")
|
// if w.config.GetJS() != "" {
|
||||||
}()
|
// outputJS := fmt.Sprintf("%.45s", w.config.GetJS())
|
||||||
})
|
// if len(outputJS) > 45 {
|
||||||
|
// outputJS += "..."
|
||||||
|
// }
|
||||||
|
// w.log.DebugFields("Inject User JS", logger.Fields{"js": outputJS})
|
||||||
|
// w.evalJSSync(w.config.GetJS())
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Emit that everything is loaded and ready
|
||||||
|
// w.eventManager.Emit("wails:ready")
|
||||||
|
// }()
|
||||||
|
// })
|
||||||
|
|
||||||
// Kick off main window loop
|
// Kick off main window loop
|
||||||
w.window.Run()
|
w.window.Run()
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ package webview
|
|||||||
#cgo linux openbsd freebsd CFLAGS: -DWEBVIEW_GTK=1 -Wno-deprecated-declarations
|
#cgo linux openbsd freebsd CFLAGS: -DWEBVIEW_GTK=1 -Wno-deprecated-declarations
|
||||||
#cgo linux openbsd freebsd pkg-config: gtk+-3.0 webkit2gtk-4.0
|
#cgo linux openbsd freebsd pkg-config: gtk+-3.0 webkit2gtk-4.0
|
||||||
|
|
||||||
#cgo windows CFLAGS: -DWEBVIEW_WINAPI=1 -std=c99 -DUNICODE=1
|
#cgo windows CFLAGS: -DWEBVIEW_WINAPI=1 -std=c99 -DUNICODE=1 -D_UNICODE=1
|
||||||
#cgo windows LDFLAGS: -lole32 -lcomctl32 -loleaut32 -luuid -lgdi32
|
#cgo windows LDFLAGS: -lole32 -lcomctl32 -loleaut32 -luuid -lgdi32
|
||||||
|
|
||||||
#cgo darwin CFLAGS: -DWEBVIEW_COCOA=1 -x objective-c
|
#cgo darwin CFLAGS: -DWEBVIEW_COCOA=1 -x objective-c
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ extern "C"
|
|||||||
#elif defined(WEBVIEW_WINAPI)
|
#elif defined(WEBVIEW_WINAPI)
|
||||||
#define CINTERFACE
|
#define CINTERFACE
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include <exdisp.h>
|
#include <exdisp.h>
|
||||||
@@ -1350,8 +1351,8 @@ struct webview_priv
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define WEBVIEW_KEY_FEATURE_BROWSER_EMULATION \
|
#define WEBVIEW_KEY_FEATURE_BROWSER_EMULATION \
|
||||||
"Software\\Microsoft\\Internet " \
|
_T("Software\\Microsoft\\Internet " \
|
||||||
"Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION"
|
"Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION")
|
||||||
|
|
||||||
static int webview_fix_ie_compat_mode()
|
static int webview_fix_ie_compat_mode()
|
||||||
{
|
{
|
||||||
@@ -1363,7 +1364,7 @@ struct webview_priv
|
|||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (p = &appname[strlen(appname) - 1]; p != appname && *p != '\\'; p--)
|
for (p = &appname[_tcslen(appname) - 1]; p != appname && *p != _T('\\'); p--)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
p++;
|
p++;
|
||||||
@@ -1872,14 +1873,30 @@ struct webview_priv
|
|||||||
type |= MB_ICONERROR;
|
type |= MB_ICONERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifdef UNICODE
|
||||||
|
WCHAR *wtitle = webview_to_utf16(title);
|
||||||
|
WCHAR *warg = webview_to_utf16(arg);
|
||||||
|
MessageBox(w->priv.hwnd, warg, wtitle, type);
|
||||||
|
GlobalFree(warg);
|
||||||
|
GlobalFree(wtitle);
|
||||||
|
#else
|
||||||
MessageBox(w->priv.hwnd, arg, title, type);
|
MessageBox(w->priv.hwnd, arg, title, type);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WEBVIEW_API void webview_terminate(struct webview *w) { PostQuitMessage(0); }
|
WEBVIEW_API void webview_terminate(struct webview *w) { PostQuitMessage(0); }
|
||||||
WEBVIEW_API void webview_exit(struct webview *w) { OleUninitialize(); }
|
WEBVIEW_API void webview_exit(struct webview *w) { OleUninitialize(); }
|
||||||
WEBVIEW_API void webview_print_log(const char *s) { OutputDebugString(s); }
|
WEBVIEW_API void webview_print_log(const char *s) {
|
||||||
|
#ifdef UNICODE
|
||||||
|
WCHAR *ws = webview_to_utf16(s);
|
||||||
|
OutputDebugString(ws);
|
||||||
|
GlobalFree(ws);
|
||||||
|
#else
|
||||||
|
OutputDebugString(s);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* WEBVIEW_WINAPI */
|
#endif /* WEBVIEW_WINAPI */
|
||||||
|
|
||||||
|
|||||||
@@ -95,13 +95,6 @@ function startBridge() {
|
|||||||
window.wailsbridge.reconnectOverlay.style.display = 'none';
|
window.wailsbridge.reconnectOverlay.style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bridge external.invoke
|
|
||||||
window.external = {
|
|
||||||
invoke: function (msg) {
|
|
||||||
window.wailsbridge.websocket.send(msg);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Adds a script to the Dom.
|
// Adds a script to the Dom.
|
||||||
// Removes it if second parameter is true.
|
// Removes it if second parameter is true.
|
||||||
function addScript(script, remove) {
|
function addScript(script, remove) {
|
||||||
@@ -211,6 +204,11 @@ function start(callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Init(callback) {
|
function Init(callback) {
|
||||||
|
// Bridge window.invoke
|
||||||
|
window.invoke = function (message) {
|
||||||
|
window.wailsbridge.websocket.send(message);
|
||||||
|
}
|
||||||
|
|
||||||
start(callback);
|
start(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><script src="https://raw.githubusercontent.com/firebug/firebug-lite/master/build/firebug-lite-debug.js#startOpened=true"></script></head><body><div id="app"></div><script type="text/javascript">function AddScript(js, callbackID){var script = document.createElement('script');script.text=js;document.body.appendChild(script);}</script></body></html>
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
<script type="text/javascript">function AddScript(js, callbackID) {
|
|
||||||
var script = document.createElement('script');
|
|
||||||
script.text = js;
|
|
||||||
document.body.appendChild(script);
|
|
||||||
}</script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
10945
runtime/assets/firebug-lite.js
Normal file
10945
runtime/assets/firebug-lite.js
Normal file
File diff suppressed because one or more lines are too long
1
runtime/assets/injectFirebug.js
Normal file
1
runtime/assets/injectFirebug.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
(function(){console.log=function(message){document.body.innerHTML=document.body.innerHTML+'<p>'+message+'</p>';};var script=document.createElement('script');script.src="https://raw.githubusercontent.com/firebug/firebug-lite/master/build/firebug-lite-debug.js#startOpened=true";document.body.appendChild(script);})();
|
||||||
File diff suppressed because one or more lines are too long
@@ -15,10 +15,7 @@
|
|||||||
"error",
|
"error",
|
||||||
"tab"
|
"tab"
|
||||||
],
|
],
|
||||||
"linebreak-style": [
|
"linebreak-style": 0,
|
||||||
"error",
|
|
||||||
"unix"
|
|
||||||
],
|
|
||||||
"quotes": [
|
"quotes": [
|
||||||
"error",
|
"error",
|
||||||
"single"
|
"single"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ module.exports = function (api) {
|
|||||||
[
|
[
|
||||||
"@babel/preset-env",
|
"@babel/preset-env",
|
||||||
{
|
{
|
||||||
"useBuiltIns": "entry",
|
"useBuiltIns": "usage",
|
||||||
"corejs": {
|
"corejs": {
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"proposals": true
|
"proposals": true
|
||||||
@@ -16,7 +16,10 @@ module.exports = function (api) {
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const plugins = ["@babel/plugin-transform-object-assign", "transform-es2015-shorthand-properties"]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
presets,
|
presets,
|
||||||
|
plugins
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
37
runtime/js/bridge/webpack.config.js
Normal file
37
runtime/js/bridge/webpack.config.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
entry: './bridge.js',
|
||||||
|
mode: 'production',
|
||||||
|
output: {
|
||||||
|
path: path.resolve(__dirname, '..', 'assets'),
|
||||||
|
filename: 'bridge.js',
|
||||||
|
libraryTarget: 'this'
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.m?js$/,
|
||||||
|
exclude: /(node_modules|bower_components)/,
|
||||||
|
use: {
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
plugins: [],
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@babel/preset-env',
|
||||||
|
{
|
||||||
|
'useBuiltIns': 'usage',
|
||||||
|
'corejs': 3,
|
||||||
|
'targets': { "browsers": ["last 2 versions", "ie >= 9"] }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -15,7 +15,11 @@ The lightweight framework for web-like apps
|
|||||||
* @param {string} message
|
* @param {string} message
|
||||||
*/
|
*/
|
||||||
function Invoke(message) {
|
function Invoke(message) {
|
||||||
window.external.invoke(message);
|
if ( window.wailsbridge ) {
|
||||||
|
window.wailsbridge.websocket.send(message);
|
||||||
|
} else {
|
||||||
|
window.external.invoke(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
1838
runtime/js/package-lock.json
generated
1838
runtime/js/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -33,11 +33,15 @@
|
|||||||
"@babel/core": "^7.5.4",
|
"@babel/core": "^7.5.4",
|
||||||
"@babel/plugin-transform-object-assign": "^7.2.0",
|
"@babel/plugin-transform-object-assign": "^7.2.0",
|
||||||
"@babel/preset-env": "^7.5.4",
|
"@babel/preset-env": "^7.5.4",
|
||||||
|
"babel-core": "^6.26.3",
|
||||||
"babel-loader": "^8.0.6",
|
"babel-loader": "^8.0.6",
|
||||||
|
"babel-plugin-transform-es2015-shorthand-properties": "^6.24.1",
|
||||||
|
"babel-preset-es2015": "^6.24.1",
|
||||||
"babel-preset-minify": "^0.5.0",
|
"babel-preset-minify": "^0.5.0",
|
||||||
"core-js": "^3.1.4",
|
"core-js": "^3.1.4",
|
||||||
"eslint": "^6.5.1",
|
"eslint": "^6.5.1",
|
||||||
"webpack": "^4.35.3",
|
"webpack": "^4.41.2",
|
||||||
"webpack-cli": "^3.3.5"
|
"webpack-cli": "^3.3.5"
|
||||||
}
|
},
|
||||||
|
"dependencies": {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,6 @@ function OpenFile(filename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
OpenURL,
|
OpenURL: OpenURL,
|
||||||
OpenFile
|
OpenFile: OpenFile
|
||||||
};
|
};
|
||||||
@@ -80,10 +80,10 @@ function Acknowledge(eventName) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
OnMultiple,
|
OnMultiple: OnMultiple,
|
||||||
On,
|
On: On,
|
||||||
Once,
|
Once: Once,
|
||||||
Emit,
|
Emit: Emit,
|
||||||
Heartbeat,
|
Heartbeat: Heartbeat,
|
||||||
Acknowledge
|
Acknowledge: Acknowledge
|
||||||
};
|
};
|
||||||
@@ -62,9 +62,9 @@ function Fatal(message) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
Debug,
|
Debug: Debug,
|
||||||
Info,
|
Info: Info,
|
||||||
Warning,
|
Warning: Warning,
|
||||||
Error,
|
Error: Error,
|
||||||
Fatal
|
Fatal: Fatal
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ const Events = require('./events');
|
|||||||
const Init = require('./init');
|
const Init = require('./init');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
Log,
|
Log: Log,
|
||||||
Browser,
|
Browser: Browser,
|
||||||
Events,
|
Events: Events,
|
||||||
Init
|
Init: Init
|
||||||
};
|
};
|
||||||
4322
runtime/js/runtime/package-lock.json
generated
Normal file
4322
runtime/js/runtime/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "@wailsapp/runtime",
|
"name": "@wailsapp/runtime",
|
||||||
"version": "1.0.6",
|
"version": "1.0.8",
|
||||||
"description": "Wails Javascript runtime library",
|
"description": "Wails Javascript runtime library",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"types": "runtime.d.ts",
|
"types": "runtime.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"build": "webpack"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -21,8 +22,18 @@
|
|||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/wailsapp/wails/issues"
|
"url": "https://github.com/wailsapp/wails/issues"
|
||||||
},
|
},
|
||||||
|
"files": [
|
||||||
|
"*.js",
|
||||||
|
"!webpack.config.js",
|
||||||
|
"runtime.d.ts",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
"homepage": "https://github.com/wailsapp/wails#readme",
|
"homepage": "https://github.com/wailsapp/wails#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"dts-gen": "^0.5.8"
|
"babel-core": "^6.26.3",
|
||||||
|
"babel-loader": "^8.0.6",
|
||||||
|
"babel-preset-es2015": "^6.24.1",
|
||||||
|
"dts-gen": "^0.5.8",
|
||||||
|
"webpack": "^4.41.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
37
runtime/js/runtime/webpack.config.js
Normal file
37
runtime/js/runtime/webpack.config.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
entry: './main.js',
|
||||||
|
mode: 'production',
|
||||||
|
output: {
|
||||||
|
path: path.resolve(__dirname, 'dist'),
|
||||||
|
filename: 'main.js',
|
||||||
|
libraryTarget: 'this'
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.m?js$/,
|
||||||
|
exclude: /(node_modules|bower_components)/,
|
||||||
|
use: {
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
plugins: [],
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@babel/preset-env',
|
||||||
|
{
|
||||||
|
'useBuiltIns': 'usage',
|
||||||
|
'corejs': 3,
|
||||||
|
'targets': { "browsers": ["last 2 versions", "ie >= 9"] }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -17,16 +17,14 @@ module.exports = {
|
|||||||
use: {
|
use: {
|
||||||
loader: 'babel-loader',
|
loader: 'babel-loader',
|
||||||
options: {
|
options: {
|
||||||
plugins: ['@babel/plugin-transform-object-assign'],
|
plugins: [],
|
||||||
presets: [
|
presets: [
|
||||||
[
|
[
|
||||||
'@babel/preset-env',
|
'@babel/preset-env',
|
||||||
{
|
{
|
||||||
'useBuiltIns': 'entry',
|
'useBuiltIns': 'usage',
|
||||||
'corejs': {
|
'corejs': 3,
|
||||||
'version': 3,
|
'targets': { "browsers": ["last 2 versions", "ie >= 9"] }
|
||||||
'proposals': true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
82
scripts/build.go
Normal file
82
scripts/build.go
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Default target to run when none is specified
|
||||||
|
// If not set, running mage will list available targets
|
||||||
|
// var Default = Build
|
||||||
|
|
||||||
|
/*
|
||||||
|
# Build runtime
|
||||||
|
echo "**** Building Runtime ****"
|
||||||
|
cd runtime/js
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
echo "**** Packing Assets ****"
|
||||||
|
cd cmd
|
||||||
|
mewn
|
||||||
|
cd ..
|
||||||
|
cd lib/renderer
|
||||||
|
mewn
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
echo "**** Installing Wails locally ****"
|
||||||
|
cd cmd/wails
|
||||||
|
go install
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
echo "**** Tidying the mods! ****"
|
||||||
|
go mod tidy
|
||||||
|
|
||||||
|
echo "**** WE ARE DONE! ****"
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
func runCommand(command string, args ...string) {
|
||||||
|
cmd := exec.Command(command, args...)
|
||||||
|
output, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
cmd.Run()
|
||||||
|
fmt.Println(string(output))
|
||||||
|
}
|
||||||
|
|
||||||
|
// A build step that requires additional params, or platform specific steps for example
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
dir, _ := os.Getwd()
|
||||||
|
|
||||||
|
// Build Runtime
|
||||||
|
fmt.Println("**** Building Runtime ****")
|
||||||
|
runtimeDir, _ := filepath.Abs(filepath.Join(dir, "..", "runtime", "js"))
|
||||||
|
os.Chdir(runtimeDir)
|
||||||
|
runCommand("npm", "run", "build")
|
||||||
|
|
||||||
|
// Pack assets
|
||||||
|
fmt.Println("**** Packing Assets ****")
|
||||||
|
rendererDir, _ := filepath.Abs(filepath.Join(dir, "..", "lib", "renderer"))
|
||||||
|
os.Chdir(rendererDir)
|
||||||
|
runCommand("mewn")
|
||||||
|
cmdDir, _ := filepath.Abs(filepath.Join(dir, "..", "cmd"))
|
||||||
|
os.Chdir(cmdDir)
|
||||||
|
runCommand("mewn")
|
||||||
|
|
||||||
|
// Install Wails
|
||||||
|
fmt.Println("**** Installing Wails locally ****")
|
||||||
|
execDir, _ := filepath.Abs(filepath.Join(dir, "..", "cmd", "wails"))
|
||||||
|
os.Chdir(execDir)
|
||||||
|
runCommand("go", "install")
|
||||||
|
|
||||||
|
baseDir, _ := filepath.Abs(filepath.Join(dir, ".."))
|
||||||
|
os.Chdir(baseDir)
|
||||||
|
runCommand("go", "mod", "tidy")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user