Compare commits

..

16 Commits

Author SHA1 Message Date
Lea Anthony
71dc137194 fiX: unicode fixes for windows 2019-11-01 10:19:06 +11:00
Lea Anthony
13e6bd2178 fix: misc fixes 2019-11-01 10:15:21 +11:00
Lea Anthony
dafd9bcb24 fix: make binary name more os specific 2019-10-29 10:24:05 +11:00
Lea Anthony
7f75f27f6b fix: debug build should use terminal 2019-10-29 07:57:29 +11:00
Lea Anthony
d77fa1ee74 fix: npm/node version reporting 2019-10-26 05:36:00 +11:00
Lea Anthony
82e00ff83a hotfix: build issue for windows 2019-10-25 18:21:18 +11:00
Lea Anthony
14f91ab109 release v0.18.12-pre 2019-10-25 18:13:57 +11:00
Lea Anthony
19706a12a4 261 korean fonts (#276)
* fix: linting

* chore: bump version

* fix: unicode text for Windows

* fix: re-add webview_set_title
2019-10-25 18:12:56 +11:00
Lea Anthony
52e6091f0f release v0.18.11-pre 2019-10-25 17:39:12 +11:00
Lea Anthony
2db1624faf 274 support spaces in windows paths (#275)
* fix: escape windows commands

* fix: allow spaces in path to windres

* Update go.mod
2019-10-25 17:37:36 +11:00
Lea Anthony
f5d3fb0848 release v0.18.10-pre 2019-10-25 12:34:43 +11:00
Lea Anthony
85a64914aa 261 korean fonts (#273)
* fix: linting

* chore: bump version

* fix: unicode text for Windows
2019-10-25 12:33:29 +11:00
Lea Anthony
0819207e33 Bump version to v0.18.9-pre 2019-10-25 12:05:51 +11:00
Lea Anthony
50a0bc7701 fix: add flag to fix windows builds (#272) 2019-10-25 12:04:08 +11:00
Lea Anthony
c51f0cad6f chore: version bump 2019-10-24 16:13:42 +11:00
Lea Anthony
6795f6c678 Migrate tool (#270)
Experimental migration tool for projects < v1.0.0
2019-10-24 16:11:50 +11:00
17 changed files with 121 additions and 52 deletions

View File

@@ -20,3 +20,4 @@ Wails is what it is because of the time and effort given by these great people.
* [Toyam Cox](https://github.com/Vaelatern) * [Toyam Cox](https://github.com/Vaelatern)
* [Robin Eklind](https://github.com/mewmew) * [Robin Eklind](https://github.com/mewmew)
* [Kris Raney](https://github.com/kraney) * [Kris Raney](https://github.com/kraney)
* [soon cheol shin](https://github.com/scshin0572)

View File

@@ -7,6 +7,7 @@ import (
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"runtime" "runtime"
"strings"
"time" "time"
"github.com/leaanthony/mewn" "github.com/leaanthony/mewn"
@@ -87,6 +88,17 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
buildCommand.Add("build") buildCommand.Add("build")
if binaryName != "" { if binaryName != "" {
// Alter binary name based on OS
switch runtime.GOOS {
case "windows":
if !strings.HasSuffix(binaryName, ".exe") {
binaryName += ".exe"
}
default:
if strings.HasSuffix(binaryName, ".exe") {
binaryName = strings.TrimSuffix(binaryName, ".exe")
}
}
buildCommand.Add("-o") buildCommand.Add("-o")
buildCommand.Add(binaryName) buildCommand.Add(binaryName)
} }
@@ -103,7 +115,7 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
} }
// Add windows flags // Add windows flags
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" && buildMode == BuildModeProd {
ldflags += "-H windowsgui " ldflags += "-H windowsgui "
} }

View File

@@ -191,8 +191,15 @@ func (b *PackageHelper) PackageWindows(po *ProjectOptions, cleanUp bool) error {
// Build syso // Build syso
sysofile := filepath.Join(b.fs.Cwd(), basename+"-res.syso") sysofile := filepath.Join(b.fs.Cwd(), basename+"-res.syso")
windresCommand := []string{"windres", "-o", sysofile, tgtRCFile}
err := NewProgramHelper().RunCommandArray(windresCommand) batfile, err := fs.LocalDir(".")
if err != nil {
return err
}
windresBatFile := filepath.Join(batfile.fullPath, "windres.bat")
windresCommand := []string{windresBatFile, sysofile, tgtRCFile}
err = NewProgramHelper().RunCommandArray(windresCommand)
if err != nil { if err != nil {
return err return err
} }

View File

@@ -128,6 +128,7 @@ func (p *ProgramHelper) RunCommandArray(args []string, dir ...string) error {
fmt.Printf("ERROR: Looks like '%s' isn't installed. Please install and try again.", program) fmt.Printf("ERROR: Looks like '%s' isn't installed. Please install and try again.", program)
return err return err
} }
args = args[1:] args = args[1:]
var stderr string var stderr string
var stdout string var stdout string

View File

@@ -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'.

View File

@@ -1,4 +1,4 @@
package cmd package cmd
// Version - Wails version // Version - Wails version
const Version = "v0.18.7-pre" const Version = "v0.18.14-pre"

View File

@@ -80,15 +80,16 @@ To help you in this process, we will ask for some information, add Go/Wails deta
npm := program.FindProgram("npm") npm := program.FindProgram("npm")
if npm != nil { if npm != nil {
stdout, _, _, _ := npm.Run("--version") stdout, _, _, _ := npm.Run("--version")
nodeVersion = stdout npmVersion = stdout
nodeVersion = nodeVersion[:len(nodeVersion)-1] npmVersion = npmVersion[:len(npmVersion)-1]
npmVersion = strings.TrimSpace(npmVersion)
} }
node := program.FindProgram("node") node := program.FindProgram("node")
if node != nil { if node != nil {
stdout, _, _, _ := node.Run("--version") stdout, _, _, _ := node.Run("--version")
npmVersion = stdout nodeVersion = stdout
npmVersion = npmVersion[:len(npmVersion)-1] nodeVersion = nodeVersion[:len(nodeVersion)-1]
} }
str.WriteString("\n| Name | Value |\n| ----- | ----- |\n") str.WriteString("\n| Name | Value |\n| ----- | ----- |\n")

1
cmd/windres.bat Normal file
View File

@@ -0,0 +1 @@
windres.exe -o %1 %2

View File

@@ -1,6 +1,5 @@
// Package wails implements Go bindings to https://github.com/zserge/webview C library. // Package webview implements Go bindings to https://github.com/zserge/webview C library.
// It is a modified version of webview.go from that repository // It is a modified version of webview.go from that repository
// Bindings closely repeat the C APIs and include both, a simplified // Bindings closely repeat the C APIs and include both, a simplified
// single-function API to just open a full-screen webview window, and a more // single-function API to just open a full-screen webview window, and a more
// advanced and featureful set of APIs, including Go-to-JavaScript bindings. // advanced and featureful set of APIs, including Go-to-JavaScript bindings.
@@ -14,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 #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

View File

@@ -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>
@@ -1038,7 +1039,7 @@ struct webview_priv
return S_FALSE; return S_FALSE;
} }
static const TCHAR *classname = "WebView"; static const TCHAR *classname = TEXT("WebView");
static const SAFEARRAYBOUND ArrayBound = {1, 0}; static const SAFEARRAYBOUND ArrayBound = {1, 0};
static IOleClientSiteVtbl MyIOleClientSiteTable = { static IOleClientSiteVtbl MyIOleClientSiteTable = {
@@ -1227,7 +1228,7 @@ struct webview_priv
} }
VariantInit(&myURL); VariantInit(&myURL);
myURL.vt = VT_BSTR; myURL.vt = VT_BSTR;
#ifndef UNICODE // #ifndef UNICODE
{ {
wchar_t *buffer = webview_to_utf16(webPageName); wchar_t *buffer = webview_to_utf16(webPageName);
if (buffer == NULL) if (buffer == NULL)
@@ -1237,9 +1238,9 @@ struct webview_priv
myURL.bstrVal = SysAllocString(buffer); myURL.bstrVal = SysAllocString(buffer);
GlobalFree(buffer); GlobalFree(buffer);
} }
#else // #else
myURL.bstrVal = SysAllocString(webPageName); // myURL.bstrVal = SysAllocString(webPageName);
#endif // #endif
if (!myURL.bstrVal) if (!myURL.bstrVal)
{ {
badalloc: badalloc:
@@ -1277,7 +1278,7 @@ struct webview_priv
if (!SafeArrayAccessData(sfArray, (void **)&pVar)) if (!SafeArrayAccessData(sfArray, (void **)&pVar))
{ {
pVar->vt = VT_BSTR; pVar->vt = VT_BSTR;
#ifndef UNICODE // #ifndef UNICODE
{ {
wchar_t *buffer = webview_to_utf16(url); wchar_t *buffer = webview_to_utf16(url);
if (buffer == NULL) if (buffer == NULL)
@@ -1287,9 +1288,9 @@ struct webview_priv
bstr = SysAllocString(buffer); bstr = SysAllocString(buffer);
GlobalFree(buffer); GlobalFree(buffer);
} }
#else // #else
bstr = SysAllocString(string); // bstr = SysAllocString(url);
#endif // #endif
if ((pVar->bstrVal = bstr)) if ((pVar->bstrVal = bstr))
{ {
htmlDoc2->lpVtbl->write(htmlDoc2, sfArray); htmlDoc2->lpVtbl->write(htmlDoc2, sfArray);
@@ -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++;
@@ -1404,6 +1405,7 @@ struct webview_priv
{ {
return -1; return -1;
} }
ZeroMemory(&wc, sizeof(WNDCLASSEX)); ZeroMemory(&wc, sizeof(WNDCLASSEX));
wc.cbSize = sizeof(WNDCLASSEX); wc.cbSize = sizeof(WNDCLASSEX);
wc.hInstance = hInstance; wc.hInstance = hInstance;
@@ -1431,10 +1433,24 @@ struct webview_priv
rect.bottom = rect.bottom - rect.top + top; rect.bottom = rect.bottom - rect.top + top;
rect.top = top; rect.top = top;
#ifdef UNICODE
wchar_t *u16title = webview_to_utf16(w->title);
if (u16title == NULL)
{
return -1;
}
w->priv.hwnd = w->priv.hwnd =
CreateWindowEx(0, classname, u16title, style, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top,
HWND_DESKTOP, NULL, hInstance, (void *)w);
#else
w->priv.hwnd =
CreateWindowEx(0, classname, w->title, style, rect.left, rect.top, CreateWindowEx(0, classname, w->title, style, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top, rect.right - rect.left, rect.bottom - rect.top,
HWND_DESKTOP, NULL, hInstance, (void *)w); HWND_DESKTOP, NULL, hInstance, (void *)w);
#endif
if (w->priv.hwnd == 0) if (w->priv.hwnd == 0)
{ {
OleUninitialize(); OleUninitialize();
@@ -1445,7 +1461,14 @@ struct webview_priv
DisplayHTMLPage(w); DisplayHTMLPage(w);
#ifdef UNICODE
SetWindowText(w->priv.hwnd, u16title);
GlobalFree(u16title);
#else
SetWindowText(w->priv.hwnd, w->title); SetWindowText(w->priv.hwnd, w->title);
#endif
ShowWindow(w->priv.hwnd, SW_SHOWDEFAULT); ShowWindow(w->priv.hwnd, SW_SHOWDEFAULT);
UpdateWindow(w->priv.hwnd); UpdateWindow(w->priv.hwnd);
SetFocus(w->priv.hwnd); SetFocus(w->priv.hwnd);
@@ -1581,9 +1604,20 @@ struct webview_priv
WEBVIEW_API void webview_set_title(struct webview *w, const char *title) WEBVIEW_API void webview_set_title(struct webview *w, const char *title)
{ {
#ifdef UNICODE
wchar_t *u16title = webview_to_utf16(title);
if (u16title == NULL)
{
return;
}
SetWindowText(w->priv.hwnd, u16title);
GlobalFree(u16title);
#else
SetWindowText(w->priv.hwnd, title); SetWindowText(w->priv.hwnd, title);
#endif
} }
WEBVIEW_API void webview_set_fullscreen(struct webview *w, int fullscreen) WEBVIEW_API void webview_set_fullscreen(struct webview *w, int fullscreen)
{ {
if (w->priv.is_fullscreen == !!fullscreen) if (w->priv.is_fullscreen == !!fullscreen)
@@ -1839,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 */

View File

@@ -15,10 +15,7 @@
"error", "error",
"tab" "tab"
], ],
"linebreak-style": [ "linebreak-style": 0,
"error",
"unix"
],
"quotes": [ "quotes": [
"error", "error",
"single" "single"

View File

@@ -32,6 +32,6 @@ function OpenFile(filename) {
} }
module.exports = { module.exports = {
OpenURL, OpenURL: OpenURL,
OpenFile OpenFile: OpenFile
}; };

View File

@@ -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
}; };

View File

@@ -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
}; };

View File

@@ -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
}; };

View File

@@ -1,6 +1,6 @@
{ {
"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",