Plain Bundle
This is a plain bundle. It has no frontend code but this was Served by the AssetServer's Handler
diff --git a/go.work.sum b/go.work.sum
index f4608dff1..a64b305dc 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -6,16 +6,19 @@ github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keL
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
github.com/google/renameio/v2 v2.0.0 h1:UifI23ZTGY8Tt29JbYFiuyIU3eX+RNFtUwefq9qAhxg=
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
github.com/klauspost/cpuid/v2 v2.2.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
+github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
diff --git a/v3/examples/binding/main.go b/v3/examples/binding/main.go
index f6669c278..d8f5d4e9a 100644
--- a/v3/examples/binding/main.go
+++ b/v3/examples/binding/main.go
@@ -7,13 +7,12 @@ import (
"github.com/wailsapp/wails/v3/examples/binding/services"
"github.com/wailsapp/wails/v3/pkg/application"
- "github.com/wailsapp/wails/v3/pkg/options"
)
type localStruct struct{}
func main() {
- app := application.New(options.Application{
+ app := application.New(application.Options{
Bind: []interface{}{
&localStruct{},
&services.GreetService{},
diff --git a/v3/examples/build/main.go b/v3/examples/build/main.go
index b8092bcf6..48ba24088 100755
--- a/v3/examples/build/main.go
+++ b/v3/examples/build/main.go
@@ -9,18 +9,16 @@ import (
"strconv"
"time"
- "github.com/wailsapp/wails/v3/pkg/options"
-
"github.com/wailsapp/wails/v3/pkg/events"
"github.com/wailsapp/wails/v3/pkg/application"
)
func main() {
- app := application.New(options.Application{
+ app := application.New(application.Options{
Name: "WebviewWindow Demo",
Description: "A demo of the WebviewWindow API",
- Mac: options.Mac{
+ Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
})
@@ -67,45 +65,45 @@ func main() {
windowCounter++
})
if runtime.GOOS == "darwin" {
- myMenu.Add("New WebviewWindow (TitleBarHiddenInset)").
+ myMenu.Add("New WebviewWindow (MacTitleBarHiddenInset)").
OnClick(func(ctx *application.Context) {
- app.NewWebviewWindowWithOptions(&options.WebviewWindow{
- Mac: options.MacWindow{
- TitleBar: options.TitleBarHiddenInset,
+ app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{
+ Mac: application.MacWindow{
+ TitleBar: application.MacTitleBarHiddenInset,
InvisibleTitleBarHeight: 25,
},
}).
SetTitle("WebviewWindow "+strconv.Itoa(windowCounter)).
SetPosition(rand.Intn(1000), rand.Intn(800)).
- SetHTML("
A TitleBarHiddenInset WebviewWindow example
"). + SetHTML("A MacTitleBarHiddenInset WebviewWindow example
"). Show() windowCounter++ }) - myMenu.Add("New WebviewWindow (TitleBarHiddenInsetUnified)"). + myMenu.Add("New WebviewWindow (MacTitleBarHiddenInsetUnified)"). OnClick(func(ctx *application.Context) { - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Mac: options.MacWindow{ - TitleBar: options.TitleBarHiddenInsetUnified, + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Mac: application.MacWindow{ + TitleBar: application.MacTitleBarHiddenInsetUnified, InvisibleTitleBarHeight: 50, }, }). SetTitle("WebviewWindow "+strconv.Itoa(windowCounter)). SetPosition(rand.Intn(1000), rand.Intn(800)). - SetHTML("A TitleBarHiddenInsetUnified WebviewWindow example
"). + SetHTML("A MacTitleBarHiddenInsetUnified WebviewWindow example
"). Show() windowCounter++ }) - myMenu.Add("New WebviewWindow (TitleBarHidden)"). + myMenu.Add("New WebviewWindow (MacTitleBarHidden)"). OnClick(func(ctx *application.Context) { - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Mac: options.MacWindow{ - TitleBar: options.TitleBarHidden, + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Mac: application.MacWindow{ + TitleBar: application.MacTitleBarHidden, InvisibleTitleBarHeight: 25, }, }). SetTitle("WebviewWindow "+strconv.Itoa(windowCounter)). SetPosition(rand.Intn(1000), rand.Intn(800)). - SetHTML("A TitleBarHidden WebviewWindow example
"). + SetHTML("A MacTitleBarHidden WebviewWindow example
"). Show() windowCounter++ }) diff --git a/v3/examples/clipboard/main.go b/v3/examples/clipboard/main.go index bb2740ca3..c8e0e465b 100644 --- a/v3/examples/clipboard/main.go +++ b/v3/examples/clipboard/main.go @@ -5,17 +5,15 @@ import ( "log" "time" - "github.com/wailsapp/wails/v3/pkg/options" - "github.com/wailsapp/wails/v3/pkg/application" ) func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Name: "Clipboard Demo", Description: "A demo of the clipboard API", - Mac: options.Mac{ + Mac: application.MacOptions{ ApplicationShouldTerminateAfterLastWindowClosed: true, }, }) diff --git a/v3/examples/contextmenus/assets/index.html b/v3/examples/contextmenus/assets/index.html new file mode 100644 index 000000000..adb32d775 --- /dev/null +++ b/v3/examples/contextmenus/assets/index.html @@ -0,0 +1,30 @@ + + + + +This is a plain bundle. It has no frontend code but this was Served by the AssetServer's Handler
A TitleBarHiddenInset WebviewWindow example
"). + SetHTML("A MacTitleBarHiddenInset WebviewWindow example
"). Show() windowCounter++ }) - myMenu.Add("New WebviewWindow (TitleBarHiddenInsetUnified)"). + myMenu.Add("New WebviewWindow (MacTitleBarHiddenInsetUnified)"). OnClick(func(ctx *application.Context) { - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Mac: options.MacWindow{ - TitleBar: options.TitleBarHiddenInsetUnified, + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Mac: application.MacWindow{ + TitleBar: application.MacTitleBarHiddenInsetUnified, InvisibleTitleBarHeight: 50, }, }). SetTitle("WebviewWindow "+strconv.Itoa(windowCounter)). SetPosition(rand.Intn(1000), rand.Intn(800)). - SetHTML("A TitleBarHiddenInsetUnified WebviewWindow example
"). + SetHTML("A MacTitleBarHiddenInsetUnified WebviewWindow example
"). Show() windowCounter++ }) - myMenu.Add("New WebviewWindow (TitleBarHidden)"). + myMenu.Add("New WebviewWindow (MacTitleBarHidden)"). OnClick(func(ctx *application.Context) { - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Mac: options.MacWindow{ - TitleBar: options.TitleBarHidden, + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Mac: application.MacWindow{ + TitleBar: application.MacTitleBarHidden, InvisibleTitleBarHeight: 25, }, }). SetTitle("WebviewWindow "+strconv.Itoa(windowCounter)). SetPosition(rand.Intn(1000), rand.Intn(800)). - SetHTML("A TitleBarHidden WebviewWindow example
"). + SetHTML("A MacTitleBarHidden WebviewWindow example
"). Show() windowCounter++ }) diff --git a/v3/examples/windowjs/main.go b/v3/examples/windowjs/main.go index 2f6b6c412..0ce071f1a 100644 --- a/v3/examples/windowjs/main.go +++ b/v3/examples/windowjs/main.go @@ -7,8 +7,6 @@ import ( "math/rand" "strconv" - "github.com/wailsapp/wails/v3/pkg/options" - "github.com/wailsapp/wails/v3/pkg/application" ) @@ -16,11 +14,11 @@ import ( var assets embed.FS func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Name: "WebviewWindow Javascript Demo", Description: "A demo of the WebviewWindow API from Javascript", Icon: nil, - Mac: options.Mac{ + Mac: application.MacOptions{ ApplicationShouldTerminateAfterLastWindowClosed: true, }, }) @@ -32,8 +30,8 @@ func main() { windowCounter := 1 newWindow := func() { - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Assets: options.Assets{ + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Assets: application.AssetOptions{ FS: assets, }, }). diff --git a/v3/internal/parser/parser.go b/v3/internal/parser/parser.go index 79c1ca728..8229536a8 100644 --- a/v3/internal/parser/parser.go +++ b/v3/internal/parser/parser.go @@ -115,7 +115,7 @@ func findApplicationNewCalls(context *Context) { return true } - // Check struct literal is of type "options.Application" + // Check struct literal is of type "application.Options" selectorExpr, ok := structLit.Type.(*ast.SelectorExpr) if !ok { return true diff --git a/v3/internal/parser/testdata/struct_literal_multiple/main.go b/v3/internal/parser/testdata/struct_literal_multiple/main.go index 4f0bf8bd3..125aad612 100644 --- a/v3/internal/parser/testdata/struct_literal_multiple/main.go +++ b/v3/internal/parser/testdata/struct_literal_multiple/main.go @@ -5,7 +5,6 @@ import ( "log" "github.com/wailsapp/wails/v3/pkg/application" - "github.com/wailsapp/wails/v3/pkg/options" ) type GreetService struct { @@ -22,7 +21,7 @@ type OtherService struct { } func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Bind: []interface{}{ &GreetService{}, &OtherService{}, diff --git a/v3/internal/parser/testdata/struct_literal_multiple_files/main.go b/v3/internal/parser/testdata/struct_literal_multiple_files/main.go index fd801c1bf..a75d4d7bd 100644 --- a/v3/internal/parser/testdata/struct_literal_multiple_files/main.go +++ b/v3/internal/parser/testdata/struct_literal_multiple_files/main.go @@ -5,11 +5,10 @@ import ( "log" "github.com/wailsapp/wails/v3/pkg/application" - "github.com/wailsapp/wails/v3/pkg/options" ) func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Bind: []interface{}{ &GreetService{}, &OtherService{}, diff --git a/v3/internal/parser/testdata/struct_literal_single/main.go b/v3/internal/parser/testdata/struct_literal_single/main.go index cfc684e1c..ac7f05f8d 100644 --- a/v3/internal/parser/testdata/struct_literal_single/main.go +++ b/v3/internal/parser/testdata/struct_literal_single/main.go @@ -5,7 +5,6 @@ import ( "log" "github.com/wailsapp/wails/v3/pkg/application" - "github.com/wailsapp/wails/v3/pkg/options" ) type GreetService struct { @@ -18,7 +17,7 @@ func (*GreetService) Greet(name string) string { } func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Bind: []interface{}{ &GreetService{}, }, diff --git a/v3/internal/runtime/desktop/contextmenu.js b/v3/internal/runtime/desktop/contextmenu.js new file mode 100644 index 000000000..7b6e2c1f4 --- /dev/null +++ b/v3/internal/runtime/desktop/contextmenu.js @@ -0,0 +1,32 @@ +import {newRuntimeCaller} from "./runtime"; + +let call = newRuntimeCaller("contextmenu"); + +function openContextMenu(id, x, y, data) { + return call("OpenContextMenu", {id, x, y, data}); +} + +export function enableContextMenus(enabled) { + if (enabled) { + window.addEventListener('contextmenu', contextMenuHandler); + } else { + window.removeEventListener('contextmenu', contextMenuHandler); + } +} + +function contextMenuHandler(event) { + processContextMenu(event.target, event); +} + +function processContextMenu(element, event) { + let id = element.getAttribute('data-contextmenu'); + if (id) { + event.preventDefault(); + openContextMenu(id, event.clientX, event.clientY, element.getAttribute('data-contextmenu-data')); + } else { + let parent = element.parentElement; + if (parent) { + processContextMenu(parent, event); + } + } +} diff --git a/v3/internal/templates/_base/default/main.tmpl.go b/v3/internal/templates/_base/default/main.go.tmpl similarity index 63% rename from v3/internal/templates/_base/default/main.tmpl.go rename to v3/internal/templates/_base/default/main.go.tmpl index ea8f138b8..1bc6a4868 100644 --- a/v3/internal/templates/_base/default/main.tmpl.go +++ b/v3/internal/templates/_base/default/main.go.tmpl @@ -5,8 +5,6 @@ import ( _ "embed" "log" - "github.com/wailsapp/wails/v3/pkg/options" - "github.com/wailsapp/wails/v3/pkg/application" ) @@ -14,25 +12,25 @@ import ( var assets embed.FS func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Name: "{{.ProjectName}}", Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ + Mac: application.MacOptions{ ApplicationShouldTerminateAfterLastWindowClosed: true, }, }) // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ Title: "Plain Bundle", CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ + Mac: application.MacWindow{ InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, }, URL: "/", - Assets: options.Assets{ + Assets: application.AssetOptions{ FS: assets, }, }) diff --git a/v3/internal/templates/lit-ts/main.tmpl.go b/v3/internal/templates/lit-ts/main.go.tmpl similarity index 63% rename from v3/internal/templates/lit-ts/main.tmpl.go rename to v3/internal/templates/lit-ts/main.go.tmpl index ea8f138b8..1bc6a4868 100644 --- a/v3/internal/templates/lit-ts/main.tmpl.go +++ b/v3/internal/templates/lit-ts/main.go.tmpl @@ -5,8 +5,6 @@ import ( _ "embed" "log" - "github.com/wailsapp/wails/v3/pkg/options" - "github.com/wailsapp/wails/v3/pkg/application" ) @@ -14,25 +12,25 @@ import ( var assets embed.FS func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Name: "{{.ProjectName}}", Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ + Mac: application.MacOptions{ ApplicationShouldTerminateAfterLastWindowClosed: true, }, }) // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ Title: "Plain Bundle", CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ + Mac: application.MacWindow{ InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, }, URL: "/", - Assets: options.Assets{ + Assets: application.AssetOptions{ FS: assets, }, }) diff --git a/v3/internal/templates/lit/main.tmpl.go b/v3/internal/templates/lit/main.go.tmpl similarity index 63% rename from v3/internal/templates/lit/main.tmpl.go rename to v3/internal/templates/lit/main.go.tmpl index ea8f138b8..1bc6a4868 100644 --- a/v3/internal/templates/lit/main.tmpl.go +++ b/v3/internal/templates/lit/main.go.tmpl @@ -5,8 +5,6 @@ import ( _ "embed" "log" - "github.com/wailsapp/wails/v3/pkg/options" - "github.com/wailsapp/wails/v3/pkg/application" ) @@ -14,25 +12,25 @@ import ( var assets embed.FS func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Name: "{{.ProjectName}}", Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ + Mac: application.MacOptions{ ApplicationShouldTerminateAfterLastWindowClosed: true, }, }) // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ Title: "Plain Bundle", CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ + Mac: application.MacWindow{ InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, }, URL: "/", - Assets: options.Assets{ + Assets: application.AssetOptions{ FS: assets, }, }) diff --git a/v3/internal/templates/preact-ts/main.tmpl.go b/v3/internal/templates/preact-ts/main.go.tmpl similarity index 63% rename from v3/internal/templates/preact-ts/main.tmpl.go rename to v3/internal/templates/preact-ts/main.go.tmpl index ea8f138b8..1bc6a4868 100644 --- a/v3/internal/templates/preact-ts/main.tmpl.go +++ b/v3/internal/templates/preact-ts/main.go.tmpl @@ -5,8 +5,6 @@ import ( _ "embed" "log" - "github.com/wailsapp/wails/v3/pkg/options" - "github.com/wailsapp/wails/v3/pkg/application" ) @@ -14,25 +12,25 @@ import ( var assets embed.FS func main() { - app := application.New(options.Application{ + app := application.New(application.Options{ Name: "{{.ProjectName}}", Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ + Mac: application.MacOptions{ ApplicationShouldTerminateAfterLastWindowClosed: true, }, }) // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ Title: "Plain Bundle", CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ + Mac: application.MacWindow{ InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, }, URL: "/", - Assets: options.Assets{ + Assets: application.AssetOptions{ FS: assets, }, }) diff --git a/v3/internal/templates/preact/main.go.tmpl b/v3/internal/templates/preact/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/preact/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/preact/main.tmpl.go b/v3/internal/templates/preact/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/preact/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/react-swc-ts/main.go.tmpl b/v3/internal/templates/react-swc-ts/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/react-swc-ts/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/react-swc-ts/main.tmpl.go b/v3/internal/templates/react-swc-ts/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/react-swc-ts/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/react-swc/main.go.tmpl b/v3/internal/templates/react-swc/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/react-swc/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/react-swc/main.tmpl.go b/v3/internal/templates/react-swc/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/react-swc/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/react-ts/main.go.tmpl b/v3/internal/templates/react-ts/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/react-ts/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/react-ts/main.tmpl.go b/v3/internal/templates/react-ts/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/react-ts/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/react/main.go.tmpl b/v3/internal/templates/react/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/react/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/react/main.tmpl.go b/v3/internal/templates/react/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/react/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/svelte-ts/main.go.tmpl b/v3/internal/templates/svelte-ts/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/svelte-ts/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/svelte-ts/main.tmpl.go b/v3/internal/templates/svelte-ts/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/svelte-ts/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/svelte/main.go.tmpl b/v3/internal/templates/svelte/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/svelte/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/svelte/main.tmpl.go b/v3/internal/templates/svelte/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/svelte/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/vanilla-ts/main.go.tmpl b/v3/internal/templates/vanilla-ts/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/vanilla-ts/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/vanilla-ts/main.tmpl.go b/v3/internal/templates/vanilla-ts/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/vanilla-ts/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/vanilla/main.go.tmpl b/v3/internal/templates/vanilla/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/vanilla/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/vanilla/main.tmpl.go b/v3/internal/templates/vanilla/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/vanilla/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/vue-ts/main.go.tmpl b/v3/internal/templates/vue-ts/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/vue-ts/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/vue-ts/main.tmpl.go b/v3/internal/templates/vue-ts/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/vue-ts/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/internal/templates/vue/main.go.tmpl b/v3/internal/templates/vue/main.go.tmpl new file mode 100644 index 000000000..1bc6a4868 --- /dev/null +++ b/v3/internal/templates/vue/main.go.tmpl @@ -0,0 +1,43 @@ +package main + +import ( + "embed" + _ "embed" + "log" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +//go:embed frontend/dist +var assets embed.FS + +func main() { + app := application.New(application.Options{ + Name: "{{.ProjectName}}", + Description: "A demo of using raw HTML & CSS", + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) + // Create window + app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{ + Title: "Plain Bundle", + CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, + Mac: application.MacWindow{ + InvisibleTitleBarHeight: 50, + Backdrop: application.MacBackdropTranslucent, + TitleBar: application.MacTitleBarHiddenInset, + }, + + URL: "/", + Assets: application.AssetOptions{ + FS: assets, + }, + }) + + err := app.Run() + + if err != nil { + log.Fatal(err) + } +} diff --git a/v3/internal/templates/vue/main.tmpl.go b/v3/internal/templates/vue/main.tmpl.go deleted file mode 100644 index ea8f138b8..000000000 --- a/v3/internal/templates/vue/main.tmpl.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "embed" - _ "embed" - "log" - - "github.com/wailsapp/wails/v3/pkg/options" - - "github.com/wailsapp/wails/v3/pkg/application" -) - -//go:embed frontend/dist -var assets embed.FS - -func main() { - app := application.New(options.Application{ - Name: "{{.ProjectName}}", - Description: "A demo of using raw HTML & CSS", - Mac: options.Mac{ - ApplicationShouldTerminateAfterLastWindowClosed: true, - }, - }) - // Create window - app.NewWebviewWindowWithOptions(&options.WebviewWindow{ - Title: "Plain Bundle", - CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`, - Mac: options.MacWindow{ - InvisibleTitleBarHeight: 50, - Backdrop: options.MacBackdropTranslucent, - TitleBar: options.TitleBarHiddenInset, - }, - - URL: "/", - Assets: options.Assets{ - FS: assets, - }, - }) - - err := app.Run() - - if err != nil { - log.Fatal(err) - } -} diff --git a/v3/pkg/application/app_delegate.m b/v3/pkg/application/app_delegate.m index af7510935..d20a48fda 100644 --- a/v3/pkg/application/app_delegate.m +++ b/v3/pkg/application/app_delegate.m @@ -1,22 +1,17 @@ //go:build darwin - #import "app_delegate.h" #import "../events/events.h" - extern bool hasListeners(unsigned int); - @implementation AppDelegate - (void)dealloc { [super dealloc]; } - // Create the applicationShouldTerminateAfterLastWindowClosed: method - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication { return self.shouldTerminateWhenLastWindowClosed; } - // GENERATED EVENTS START - (void)applicationDidBecomeActive:(NSNotification *)notification { if( hasListeners(EventApplicationDidBecomeActive) ) { diff --git a/v3/pkg/application/application_darwin.go b/v3/pkg/application/application_darwin.go index 250f90972..12b9c4300 100644 --- a/v3/pkg/application/application_darwin.go +++ b/v3/pkg/application/application_darwin.go @@ -230,6 +230,20 @@ func processURLRequest(windowID C.uint, wkUrlSchemeTask unsafe.Pointer) { } } +//export processDragItems +func processDragItems(windowID C.uint, arr **C.char, length C.int) { + var filenames []string + // Convert the C array to a Go slice + goSlice := (*[1 << 30]*C.char)(unsafe.Pointer(arr))[:length:length] + for _, str := range goSlice { + filenames = append(filenames, C.GoString(str)) + } + windowDragAndDropBuffer <- &dragAndDropMessage{ + windowId: uint(windowID), + filenames: filenames, + } +} + //export processMenuItemClick func processMenuItemClick(menuID C.uint) { menuItemClicked <- uint(menuID) diff --git a/v3/pkg/application/context.go b/v3/pkg/application/context.go index fff4675ef..56b213350 100644 --- a/v3/pkg/application/context.go +++ b/v3/pkg/application/context.go @@ -14,6 +14,7 @@ func newContext() *Context { const ( clickedMenuItem string = "clickedMenuItem" menuItemIsChecked string = "menuItemIsChecked" + contextMenuData string = "contextMenuData" ) func (c *Context) ClickedMenuItem() *MenuItem { @@ -31,6 +32,9 @@ func (c *Context) IsChecked() bool { } return result.(bool) } +func (c *Context) ContextMenuData() any { + return c.data[contextMenuData] +} func (c *Context) withClickedMenuItem(menuItem *MenuItem) *Context { c.data[clickedMenuItem] = menuItem @@ -40,3 +44,11 @@ func (c *Context) withClickedMenuItem(menuItem *MenuItem) *Context { func (c *Context) withChecked(checked bool) { c.data[menuItemIsChecked] = checked } + +func (c *Context) withContextMenuData(data *ContextMenuData) *Context { + if data == nil { + return c + } + c.data[contextMenuData] = data.Data + return c +} diff --git a/v3/pkg/application/context_window_event.go b/v3/pkg/application/context_window_event.go new file mode 100644 index 000000000..f9895fbd2 --- /dev/null +++ b/v3/pkg/application/context_window_event.go @@ -0,0 +1,35 @@ +package application + +var blankWindowEventContext = &WindowEventContext{} + +const ( + // FilesDropped is the event name for when files are dropped on the window + droppedFiles = "droppedFiles" +) + +type WindowEventContext struct { + // contains filtered or unexported fields + data map[string]any +} + +func (c WindowEventContext) DroppedFiles() []string { + files, ok := c.data[droppedFiles] + if !ok { + return nil + } + result, ok := files.([]string) + if !ok { + return nil + } + return result +} + +func (c WindowEventContext) setDroppedFiles(files []string) { + c.data[droppedFiles] = files +} + +func newWindowEventContext() *WindowEventContext { + return &WindowEventContext{ + data: make(map[string]any), + } +} diff --git a/v3/pkg/application/menu.go b/v3/pkg/application/menu.go index 5d56c3584..80cf213dd 100644 --- a/v3/pkg/application/menu.go +++ b/v3/pkg/application/menu.go @@ -87,6 +87,12 @@ func (m *Menu) SetLabel(label string) { m.label = label } +func (m *Menu) setContextData(data *ContextMenuData) { + for _, item := range m.items { + item.setContextData(data) + } +} + func (a *App) NewMenu() *Menu { return &Menu{} } diff --git a/v3/pkg/application/menuitem.go b/v3/pkg/application/menuitem.go index 2603f0c02..da943156b 100644 --- a/v3/pkg/application/menuitem.go +++ b/v3/pkg/application/menuitem.go @@ -41,16 +41,17 @@ type menuItemImpl interface { } type MenuItem struct { - id uint - label string - tooltip string - disabled bool - checked bool - submenu *Menu - callback func(*Context) - itemType menuItemType - accelerator *accelerator - role Role + id uint + label string + tooltip string + disabled bool + checked bool + submenu *Menu + callback func(*Context) + itemType menuItemType + accelerator *accelerator + role Role + contextMenuData *ContextMenuData impl menuItemImpl radioGroupMembers []*MenuItem @@ -187,7 +188,9 @@ func newServicesMenu() *MenuItem { } func (m *MenuItem) handleClick() { - var ctx = newContext().withClickedMenuItem(m) + var ctx = newContext(). + withClickedMenuItem(m). + withContextMenuData(m.contextMenuData) if m.itemType == checkbox { m.checked = !m.checked ctx.withChecked(m.checked) @@ -272,3 +275,10 @@ func (m *MenuItem) Tooltip() string { func (m *MenuItem) Enabled() bool { return !m.disabled } + +func (m *MenuItem) setContextData(data *ContextMenuData) { + m.contextMenuData = data + if m.submenu != nil { + m.submenu.setContextData(data) + } +} diff --git a/v3/pkg/application/messageprocessor_contextmenu.go b/v3/pkg/application/messageprocessor_contextmenu.go new file mode 100644 index 000000000..d0fe57c98 --- /dev/null +++ b/v3/pkg/application/messageprocessor_contextmenu.go @@ -0,0 +1,30 @@ +package application + +import ( + "net/http" +) + +type ContextMenuData struct { + Id string `json:"id"` + X int `json:"x"` + Y int `json:"y"` + Data any `json:"data"` +} + +func (m *MessageProcessor) processContextMenuMethod(method string, rw http.ResponseWriter, _ *http.Request, window *WebviewWindow, params QueryParams) { + + switch method { + case "OpenContextMenu": + var data ContextMenuData + err := params.ToStruct(&data) + if err != nil { + m.httpError(rw, "error parsing contextmenu message: %s", err.Error()) + return + } + window.openContextMenu(&data) + m.ok(rw) + default: + m.httpError(rw, "Unknown clipboard method: %s", method) + } + +} diff --git a/v3/pkg/application/options_application.go b/v3/pkg/application/options_application.go new file mode 100644 index 000000000..cfb11ee76 --- /dev/null +++ b/v3/pkg/application/options_application.go @@ -0,0 +1,17 @@ +package application + +import ( + "github.com/wailsapp/wails/v3/pkg/logger" +) + +type Options struct { + Name string + Description string + Icon []byte + Mac MacOptions + Bind []any + Logger struct { + Silent bool + CustomLoggers []logger.Output + } +} diff --git a/v3/pkg/options/mac.go b/v3/pkg/application/options_mac.go similarity index 87% rename from v3/pkg/options/mac.go rename to v3/pkg/application/options_mac.go index ec5f2cc33..7ad1c5f0f 100644 --- a/v3/pkg/options/mac.go +++ b/v3/pkg/application/options_mac.go @@ -1,4 +1,4 @@ -package options +package application type ActivationPolicy int @@ -10,7 +10,7 @@ const ( ActivationPolicyProhibited ) -type Mac struct { +type MacOptions struct { // ActivationPolicy is the activation policy for the application. Defaults to // applicationActivationPolicyRegular. ActivationPolicy ActivationPolicy @@ -44,13 +44,13 @@ const ( // MacWindow contains macOS specific options type MacWindow struct { Backdrop MacBackdrop - TitleBar TitleBar + TitleBar MacTitleBar Appearance MacAppearanceType InvisibleTitleBarHeight int } -// TitleBar contains options for the Mac titlebar -type TitleBar struct { +// MacTitleBar contains options for the Mac titlebar +type MacTitleBar struct { AppearsTransparent bool Hide bool HideTitle bool @@ -60,8 +60,8 @@ type TitleBar struct { ToolbarStyle MacToolbarStyle } -// TitleBarDefault results in the default Mac TitleBar -var TitleBarDefault = TitleBar{ +// MacTitleBarDefault results in the default Mac MacTitleBar +var MacTitleBarDefault = MacTitleBar{ AppearsTransparent: false, Hide: false, HideTitle: false, @@ -72,10 +72,10 @@ var TitleBarDefault = TitleBar{ // Credit: Comments from Electron site -// TitleBarHidden results in a hidden title bar and a full size content window, +// MacTitleBarHidden results in a hidden title bar and a full size content window, // yet the title bar still has the standard window controls (“traffic lights”) // in the top left. -var TitleBarHidden = TitleBar{ +var MacTitleBarHidden = MacTitleBar{ AppearsTransparent: true, Hide: false, HideTitle: true, @@ -84,9 +84,9 @@ var TitleBarHidden = TitleBar{ HideToolbarSeparator: false, } -// TitleBarHiddenInset results in a hidden title bar with an alternative look where +// MacTitleBarHiddenInset results in a hidden title bar with an alternative look where // the traffic light buttons are slightly more inset from the window edge. -var TitleBarHiddenInset = TitleBar{ +var MacTitleBarHiddenInset = MacTitleBar{ AppearsTransparent: true, Hide: false, HideTitle: true, @@ -95,9 +95,9 @@ var TitleBarHiddenInset = TitleBar{ HideToolbarSeparator: true, } -// TitleBarHiddenInsetUnified results in a hidden title bar with an alternative look where +// MacTitleBarHiddenInsetUnified results in a hidden title bar with an alternative look where // the traffic light buttons are even more inset from the window edge. -var TitleBarHiddenInsetUnified = TitleBar{ +var MacTitleBarHiddenInsetUnified = MacTitleBar{ AppearsTransparent: true, Hide: false, HideTitle: true, diff --git a/v3/pkg/options/window.go b/v3/pkg/application/options_webview_window.go similarity index 100% rename from v3/pkg/options/window.go rename to v3/pkg/application/options_webview_window.go diff --git a/v3/pkg/application/webview_drag.h b/v3/pkg/application/webview_drag.h new file mode 100644 index 000000000..aca00d970 --- /dev/null +++ b/v3/pkg/application/webview_drag.h @@ -0,0 +1,7 @@ +//go:build darwin + +#import