mirror of
https://github.com/taigrr/wails.git
synced 2026-04-14 02:48:21 -07:00
Compare commits
23 Commits
v1.7.2-pre
...
485-permis
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9ea4d8f88 | ||
|
|
fe2c5e8611 | ||
|
|
422ee22d0c | ||
|
|
22f94cfdb6 | ||
|
|
5d754f40de | ||
|
|
c9b26c6352 | ||
|
|
6f0696631f | ||
|
|
fefb54de12 | ||
|
|
b4224066f7 | ||
|
|
3d9ef75488 | ||
|
|
79ecb0704e | ||
|
|
8154887824 | ||
|
|
39ae91a250 | ||
|
|
bc0478b2b2 | ||
|
|
f86996705b | ||
|
|
254aa664d7 | ||
|
|
c8371ee824 | ||
|
|
02e0250555 | ||
|
|
e1b025cab6 | ||
|
|
626854f1b7 | ||
|
|
98468d1c4d | ||
|
|
1062aeb136 | ||
|
|
aa93e5d8d2 |
@@ -33,3 +33,5 @@ Wails is what it is because of the time and effort given by these great people.
|
|||||||
* [artem](https://github.com/Unix4ever)
|
* [artem](https://github.com/Unix4ever)
|
||||||
* [Tim Kipp](https://github.com/timkippdev)
|
* [Tim Kipp](https://github.com/timkippdev)
|
||||||
* [Dmitry Gomzyakov](https://github.com/kyoto44)
|
* [Dmitry Gomzyakov](https://github.com/kyoto44)
|
||||||
|
* [Arthur Wiebe](https://github.com/artooro)
|
||||||
|
* [Ilgıt Yıldırım](https://github.com/ilgityildirim)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
<a href="https://houndci.com"><img src="https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg"/></a>
|
<a href="https://houndci.com"><img src="https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg"/></a>
|
||||||
<a href="https://github.com/avelino/awesome-go" rel="nofollow"><img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome"></a>
|
<a href="https://github.com/avelino/awesome-go" rel="nofollow"><img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome"></a>
|
||||||
<a href="https://github.com/wailsapp/wails/workflows/release/badge.svg?branch=master" rel="nofollow"><img src="https://github.com/wailsapp/wails/workflows/release/badge.svg?branch=master" alt="Release Pipelines"></a>
|
<a href="https://github.com/wailsapp/wails/workflows/release/badge.svg?branch=master" rel="nofollow"><img src="https://github.com/wailsapp/wails/workflows/release/badge.svg?branch=master" alt="Release Pipelines"></a>
|
||||||
<a href="https://github.com/wailsapp/wails/workflows/latest-pre/badge.svg?branch=masterr" rel="nofollow"><img src="https://github.com/wailsapp/wails/workflows/latest-pre/badge.svg?branch=master" alt="Pre-Release Pipelines"></a>
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
The traditional method of providing web interfaces to Go programs is via a built-in web server. Wails offers a different approach: it provides the ability to wrap both Go code and a web frontend into a single binary. Tools are provided to make this easy for you by handling project creation, compilation and bundling. All you have to do is get creative!
|
The traditional method of providing web interfaces to Go programs is via a built-in web server. Wails offers a different approach: it provides the ability to wrap both Go code and a web frontend into a single binary. Tools are provided to make this easy for you by handling project creation, compilation and bundling. All you have to do is get creative!
|
||||||
|
|||||||
@@ -216,10 +216,6 @@ func BuildNative(binaryName string, forceRebuild bool, buildMode string, project
|
|||||||
buildCommand.Add("go")
|
buildCommand.Add("go")
|
||||||
|
|
||||||
buildCommand.Add("build")
|
buildCommand.Add("build")
|
||||||
if buildMode == BuildModeBridge {
|
|
||||||
// Ignore errors
|
|
||||||
buildCommand.Add("-i")
|
|
||||||
}
|
|
||||||
|
|
||||||
if binaryName != "" {
|
if binaryName != "" {
|
||||||
// Alter binary name based on OS
|
// Alter binary name based on OS
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const routes: Routes = [];
|
|||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forRoot(routes)
|
RouterModule.forRoot(routes,{useHash:true})
|
||||||
],
|
],
|
||||||
exports: [RouterModule]
|
exports: [RouterModule]
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -2,11 +2,17 @@
|
|||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
color: black;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
background-color: rgb(254,254,254);
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
display: block;
|
display: block;
|
||||||
width:100%;
|
width:100%;
|
||||||
@@ -17,10 +23,8 @@ body {
|
|||||||
|
|
||||||
button {
|
button {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
background-color: white;
|
||||||
|
color: black;
|
||||||
#newCounter {
|
|
||||||
color: white;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.result {
|
.result {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
// Version - Wails version
|
// Version - Wails version
|
||||||
const Version = "v1.7.2-pre9"
|
const Version = "v1.8.0"
|
||||||
|
|||||||
@@ -1431,6 +1431,13 @@ struct webview_priv
|
|||||||
style = WS_OVERLAPPED | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU;
|
style = WS_OVERLAPPED | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Scale
|
||||||
|
// Credit: https://github.com/webview/webview/issues/54#issuecomment-379528243
|
||||||
|
HDC hDC = GetDC(NULL);
|
||||||
|
w->width = GetDeviceCaps(hDC, 88)*w->width/96.0;
|
||||||
|
w->height = GetDeviceCaps(hDC, 90)*w->height/96.0;
|
||||||
|
ReleaseDC(NULL, hDC);
|
||||||
|
|
||||||
rect.left = 0;
|
rect.left = 0;
|
||||||
rect.top = 0;
|
rect.top = 0;
|
||||||
rect.right = w->width;
|
rect.right = w->width;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ type Store struct {
|
|||||||
data reflect.Value
|
data reflect.Value
|
||||||
dataType reflect.Type
|
dataType reflect.Type
|
||||||
eventPrefix string
|
eventPrefix string
|
||||||
callbacks []func(interface{})
|
callbacks []reflect.Value
|
||||||
runtime *Runtime
|
runtime *Runtime
|
||||||
notifySynchronously bool
|
notifySynchronously bool
|
||||||
|
|
||||||
@@ -143,10 +143,13 @@ func (s *Store) notify() {
|
|||||||
// Execute callbacks
|
// Execute callbacks
|
||||||
for _, callback := range s.callbacks {
|
for _, callback := range s.callbacks {
|
||||||
|
|
||||||
|
// Build args
|
||||||
|
args := []reflect.Value{s.data}
|
||||||
|
|
||||||
if s.notifySynchronously {
|
if s.notifySynchronously {
|
||||||
callback(s.data)
|
callback.Call(args)
|
||||||
} else {
|
} else {
|
||||||
go callback(s.data)
|
go callback.Call(args)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -184,11 +187,50 @@ func (s *Store) Set(data interface{}) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// callbackCheck ensures the given function to Subscribe() is
|
||||||
|
// of the correct signature. Absolutely cannot wait for
|
||||||
|
// generics to land rather than writing this nonsense.
|
||||||
|
func (s *Store) callbackCheck(callback interface{}) error {
|
||||||
|
|
||||||
|
// Get type
|
||||||
|
callbackType := reflect.TypeOf(callback)
|
||||||
|
|
||||||
|
// Check callback is a function
|
||||||
|
if callbackType.Kind() != reflect.Func {
|
||||||
|
return fmt.Errorf("invalid value given to store.Subscribe(). Expected 'func(%s)'", s.dataType.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check input param
|
||||||
|
if callbackType.NumIn() != 1 {
|
||||||
|
return fmt.Errorf("invalid number of parameters given in callback function. Expected 1")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check input data type
|
||||||
|
if callbackType.In(0) != s.dataType {
|
||||||
|
return fmt.Errorf("invalid type for input parameter given in callback function. Expected %s, got %s", s.dataType.String(), callbackType.In(0))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check output param
|
||||||
|
if callbackType.NumOut() != 0 {
|
||||||
|
return fmt.Errorf("invalid number of return parameters given in callback function. Expected 0")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Subscribe will subscribe to updates to the store by
|
// Subscribe will subscribe to updates to the store by
|
||||||
// providing a callback. Any updates to the store are sent
|
// providing a callback. Any updates to the store are sent
|
||||||
// to the callback
|
// to the callback
|
||||||
func (s *Store) Subscribe(callback func(interface{})) {
|
func (s *Store) Subscribe(callback interface{}) {
|
||||||
s.callbacks = append(s.callbacks, callback)
|
|
||||||
|
err := s.callbackCheck(callback)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
callbackFunc := reflect.ValueOf(callback)
|
||||||
|
|
||||||
|
s.callbacks = append(s.callbacks, callbackFunc)
|
||||||
}
|
}
|
||||||
|
|
||||||
// updaterCheck ensures the given function to Update() is
|
// updaterCheck ensures the given function to Update() is
|
||||||
@@ -244,5 +286,8 @@ func (s *Store) Update(updater interface{}) {
|
|||||||
results := reflect.ValueOf(updater).Call(args)
|
results := reflect.ValueOf(updater).Call(args)
|
||||||
|
|
||||||
// We will only have 1 result. Set the store to it
|
// We will only have 1 result. Set the store to it
|
||||||
s.Set(results[0].Interface())
|
err = s.Set(results[0].Interface())
|
||||||
|
if err != nil && s.errorHandler != nil {
|
||||||
|
s.errorHandler(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user