Compare commits

...

32 Commits

Author SHA1 Message Date
Lea Anthony fcf4d76350 add debug 2024-04-27 17:01:36 +10:00
Lea Anthony 5d0a58cc6a Update GetRelative/AbsolutePosition to take border size into account 2024-04-25 15:59:33 +10:00
Lea Anthony 368ca13314 Update window interface 2024-04-25 15:26:31 +10:00
Lea Anthony 2cee1edcb5 Add window.GetBorderSizes 2024-04-25 15:22:01 +10:00
Travis McLane 1b288a0a1a removing experimental server plugin 2024-04-23 09:32:21 -05:00
Harry Fox 81aba310d0 update Taskfile.tmpl.yml to include darwin run task (#3417)
* update Taskfile.tmpl.yml to include darwin run task

* add changelog line for #3417
2024-04-23 18:19:25 +10:00
Atterpac b050a07362 dev mode adapt to OS (#3412)
changelog
2024-04-22 12:44:10 +10:00
Travis McLane 021efab84d allow for non-Window WailsEvent listeners (#3406)
* allow for non-Window WailsEvent listeners

- adds a RegisterListener function on the App struct such
  that code can listen for WailsEvent(s) even if it isn't a Window
- rename dispatchEventToWindows -> dispatchEventToListeners
- add all windows and WailsEventListeners to slice before emitting

* Update v3/pkg/application/application.go

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-04-20 09:39:57 +10:00
Atterpac 0a42a050bd fix dev mode windows pipe (#3402) 2024-04-18 23:14:20 +10:00
abichinger 9ca1b30da1 [v3 alpha] Fix drag-n-drop on some linux distros (#3346)
* Fix drag and drop on linux

- Move C code

* Use GTK_DEST_DEFAULT_DROP

* Update changelog

* Move C code back into `linux_cgo.go`
2024-04-15 10:05:23 -05:00
Atterpac 220d5535f7 revert dialog channel close (#3395)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2024-04-15 18:03:35 +10:00
Atterpac 0895e6a508 refresh version up (#3391) 2024-04-15 16:57:19 +10:00
Lea Anthony ed5532a535 Update plugin docs 2024-04-14 21:47:37 +10:00
Lea Anthony 6f41dbf954 Merge branch 'refs/heads/v3-alpha-feature/plugin-updates' into v3-alpha 2024-04-14 21:42:16 +10:00
Lea Anthony c7ed7e72d4 Major plugin updates 2024-04-14 21:41:33 +10:00
abichinger a7208f5262 Update changelog (#3389) 2024-04-11 23:50:04 +10:00
Travis McLane 09f6680aa9 restore: run tests only after approval 2024-04-10 09:11:36 -05:00
Travis McLane 9261130fed chore: workflow update to run tests on correct directory 2024-04-09 16:57:04 -05:00
Travis McLane fec22e0052 chore: bump staticanalysis to v2.8.0 2024-04-09 16:37:50 -05:00
abichinger 7c921d6a81 [v3 alpha] implement setIcon on linux (#3354)
* implement `linuxApp.setIcon`

* Move code into `linux_cgo.go`
2024-04-09 11:04:54 -05:00
Travis McLane 16a029754f disable 'server' example
Doesn't compile currently.
Disabling such that the workflow succeeds
2024-04-08 13:29:42 -05:00
Travis McLane 3c9fd67fd0 doctor: correct compilation errors 2024-04-08 13:23:12 -05:00
Travis McLane 724ca386e7 Merge remote-tracking branch 'origin/v3-alpha-linux-dialogs' into v3-alpha 2024-04-08 11:17:56 -05:00
atterpac 6f75b00463 Proper syncing and canceling of dialogs
s

s

s
2024-04-08 11:17:05 -05:00
Travis McLane 105d9f0d3a allow directory selection 2024-04-07 16:42:33 -05:00
atterpac 38f6b1297d Call linux dialog on main thread 2024-04-07 16:42:33 -05:00
Lea Anthony cf130a6e25 [windows] Fix directory select in Open Dialog 2024-04-06 14:38:43 +11:00
Lea Anthony e91c30fad0 Small doctor improvements 2024-04-03 20:48:55 +11:00
Lea Anthony 3e3f7b9273 Update discord link 2024-04-03 08:27:32 +11:00
Lea Anthony 88ff84f5a5 [windows] Improve Set window icon when in debug mode 2024-04-01 05:02:39 +11:00
Lea Anthony eee373f15a [windows] Set window icon when in debug mode 2024-04-01 04:55:34 +11:00
Lea Anthony c839c053cb [windows] Fix min/max buttons 2024-03-29 21:44:59 +11:00
115 changed files with 1638 additions and 3403 deletions
+26 -5
View File
@@ -6,6 +6,15 @@ on:
types: [submitted]
jobs:
debug_context:
name: Debug Context
runs-on: ubuntu-latest
steps:
- name: Print GitHub Context
run: echo "$GITHUB_CONTEXT"
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
check_docs:
name: Check Docs
if: ${{github.repository == 'wailsapp/wails' && contains(github.head_ref,'feature/')}}
@@ -71,14 +80,26 @@ jobs:
with:
go-version: ${{ matrix.go-version }}
- name: Run tests (mac)
if: matrix.os == 'macos-latest'
- name: Run tests (mac) | v2
if: ${{ matrix.os == 'macos-latest' && github.base_ref == 'master' }}
env:
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
working-directory: ./v2
run: go test -v ./...
- name: Run tests (!mac)
if: matrix.os != 'macos-latest'
working-directory: ./v2
- name: Run tests (!mac) | v2
if: ${{ matrix.os != 'macos-latest' && github.base_ref == 'master' }}
working-directory: ./v2
run: go test -v ./...
- name: Run tests (mac) | v3
if: ${{ matrix.os == 'macos-latest' && github.base_ref == 'v3-alpha' }}
env:
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
working-directory: ./v3
run: go test -v ./...
- name: Run tests (!mac) | v3
if: ${{ matrix.os != 'macos-latest' && github.base_ref == 'v3-alpha' }}
working-directory: ./v3
run: go test -v ./...
+3
View File
@@ -31,6 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Support multiple space-separated trigger events in the WML system by [@fbbdev](https://github.com/fbbdev) in [#3295](https://github.com/wailsapp/wails/pull/3295)
- Add ESM exports from the bundled JS runtime script by [@fbbdev](https://github.com/fbbdev) in [#3295](https://github.com/wailsapp/wails/pull/3295)
- Add binding generator flag for using the bundled JS runtime script instead of the npm package by [@fbbdev](https://github.com/fbbdev) in [#3334](https://github.com/wailsapp/wails/pull/3334)
- Implement `setIcon` on linux by [@abichinger](https://github.com/abichinger) in [#3354](https://github.com/wailsapp/wails/pull/3354)
### Fixed
@@ -56,6 +57,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix custom context menu closing immediately on linux by [@abichinger](https://github.com/abichinger) in [#3330](https://github.com/wailsapp/wails/pull/3330)
- Fix the output path and extension of model files produced by the binding generator by [@fbbdev](https://github.com/fbbdev) in [#3334](https://github.com/wailsapp/wails/pull/3334)
- Fix the import paths of model files in JS code produced by the binding generator by [@fbbdev](https://github.com/fbbdev) in [#3334](https://github.com/wailsapp/wails/pull/3334)
- Fix drag-n-drop on some linux distros by [@abichinger](https://github.com/abichinger) in [#3346](https://github.com/wailsapp/wails/pull/3346)
- Fix missing task for macOS when using `wails3 task dev` by [@hfoxy](https://github.com/hfoxy) in [#3417](https://github.com/wailsapp/wails/pull/3417)
### Changed
@@ -5,7 +5,7 @@ posts before creating new ones. Here are the different ways to provide feedback:
=== "Bugs"
If you find a bug, please let us know by posting into the [v3 Alpha Feedback](https://discord.gg/3mgVyGua) channel on Discord.
If you find a bug, please let us know by posting into the [v3 Alpha Feedback](https://discord.gg/Vgff2p8gsy) channel on Discord.
- The post should clearly state what the bug is and have a simple reproducible example. If the docs are unclear what *should* happen, please include that in the post.
- The post should be given the `Bug` tag.
@@ -24,17 +24,17 @@ posts before creating new ones. Here are the different ways to provide feedback:
If you have a fix for a bug or an update for documentation, please do the following:
- Open a pull request on the [Wails repository](https://github.com/wailsapp/wails). The title of the PR should start with `[v3 alpha]`.
- Create a post in the [v3 Alpha Feedback](https://discord.gg/3mgVyGua) channel.
- Create a post in the [v3 Alpha Feedback](https://discord.gg/Vgff2p8gsy) channel.
- The post should be given the `PR` tag.
- Please include a link to the PR in your post.
=== "Suggestions"
If you have a suggestion, please let us know by posting into the [v3 Alpha Feedback](https://discord.gg/3mgVyGua) channel on Discord:
If you have a suggestion, please let us know by posting into the [v3 Alpha Feedback](https://discord.gg/Vgff2p8gsy) channel on Discord:
- The post should be given the `Suggestion` tag.
Please feel free to reach out to us on [Discord](https://discord.gg/3mgVyGua) if you have any questions.
Please feel free to reach out to us on [Discord](https://discord.gg/Vgff2p8gsy) if you have any questions.
=== "Upvoting"
+176
View File
@@ -0,0 +1,176 @@
# Wails v3 Plugin Guide
Wails v3 introduces the concept of plugins. A plugin is a self-contained module that can extend the functionality of your Wails application.
This guide will walk you through the structure and functionality of a Wails plugin.
## Plugin Structure
A Wails plugin is a standard Go module, typically consisting of the following files:
- `plugin.go`: This is the main Go file where the plugin's functionality is implemented.
- `plugin.yaml`: This is the plugin's metadata file. It contains information about the plugin such as its name, author, version, and more.
- `assets/`: This directory contains any static assets that the plugin might need.
- `README.md`: This file provides documentation for the plugin.
## Plugin Implementation
In `plugin.go`, a plugin is defined as a struct that implements the `application.Plugin` interface. This interface requires the following methods:
- `Init()`: This method is called when the plugin is initialized.
- `Shutdown()`: This method is called when the application is shutting down.
- `Name()`: This method returns the name of the plugin.
- `CallableByJS()`: This method returns a list of method names that can be called from the frontend.
In addition to these methods, you can define any number of additional methods that implement the plugin's functionality.
These methods can be called from the frontend using the `wails.Plugin()` function.
## Plugin Metadata
The `plugin.yaml` file contains metadata about the plugin. This includes the plugin's name, description, author, version, website, repository, and license.
## Plugin Assets
Any static assets that the plugin needs can be placed in the `assets/` directory.
These assets can be accessed by the frontend by requesting them at the plugin base path.
This path is `/wails/plugins/<plugin-name>/`.
### Example
If a plugin named `logopack` has an asset named `logo.png`, the frontend can access it at `/wails/plugins/logopack/logo.png`.
## Plugin Documentation
The `README.md` file provides documentation for the plugin. This should include instructions on how to install and use the plugin, as well as any other information that users of the plugin might find useful.
## Example
Here's the Log plugin implementation:
```go
package log
import (
"embed"
_ "embed"
"github.com/wailsapp/wails/v3/pkg/application"
"io/fs"
"log/slog"
)
//go:embed assets/*
var assets embed.FS
// ---------------- Plugin Setup ----------------
// This is the main plugin struct. It can be named anything you like.
// It must implement the application.Plugin interface.
// Both the Init() and Shutdown() methods are called synchronously when the app starts and stops.
type Config struct {
// Logger is the logger to use. If not set, a default logger will be used.
Logger *slog.Logger
// LogLevel defines the log level of the logger.
LogLevel slog.Level
// Handles errors that occur when writing to the log
ErrorHandler func(err error)
}
type Plugin struct {
config *Config
app *application.App
level slog.LevelVar
}
func NewPluginWithConfig(config *Config) *Plugin {
if config.Logger == nil {
config.Logger = application.DefaultLogger(config.LogLevel)
}
result := &Plugin{
config: config,
}
result.level.Set(config.LogLevel)
return result
}
func NewPlugin() *Plugin {
return NewPluginWithConfig(&Config{})
}
// Shutdown is called when the app is shutting down
// You can use this to clean up any resources you have allocated
func (p *Plugin) Shutdown() error { return nil }
// Name returns the name of the plugin.
// You should use the go module format e.g. github.com/myuser/myplugin
func (p *Plugin) Name() string {
return "github.com/wailsapp/wails/v3/plugins/log"
}
func (p *Plugin) Init(api application.PluginAPI) error {
return nil
}
// CallableByJS returns a list of methods that can be called from the frontend
func (p *Plugin) CallableByJS() []string {
return []string{
"Debug",
"Info",
"Warning",
"Error",
"SetLogLevel",
}
}
func (p *Plugin) Assets() fs.FS {
return assets
}
// ---------------- Plugin Methods ----------------
// Plugin methods are just normal Go methods. You can add as many as you like.
// The only requirement is that they are exported (start with a capital letter).
// You can also return any type that is JSON serializable.
// See https://golang.org/pkg/encoding/json/#Marshal for more information.
func (p *Plugin) Debug(message string, args ...any) {
p.config.Logger.Debug(message, args...)
}
func (p *Plugin) Info(message string, args ...any) {
p.config.Logger.Info(message, args...)
}
func (p *Plugin) Warning(message string, args ...any) {
p.config.Logger.Warn(message, args...)
}
func (p *Plugin) Error(message string, args ...any) {
p.config.Logger.Error(message, args...)
}
func (p *Plugin) SetLogLevel(level slog.Level) {
p.level.Set(level)
}
```
This plugin can be added to the application like this:
```go
Plugins: map[string]application.Plugin{
"log": log.NewPlugin(),
},
```
And here's how you can call a plugin method from the frontend:
```js
wails.Plugin("log","Debug","hello world")
```
## Support
If you encounter any issues with a plugin, please raise a ticket in the plugin's repository.
!!! note
The Wails team does not provide support for third-party plugins.
+1
View File
@@ -141,6 +141,7 @@ nav:
- Next Steps: getting-started/next-steps.md
- Learn More:
- Runtime: learn/runtime.md
- Plugins: learn/plugins.md
- Feedback: getting-started/feedback.md
- Feedback: getting-started/feedback.md
- What's New in v3?: whats-new.md
+1 -1
View File
@@ -67,7 +67,7 @@ func diagnoseEnvironment(f *flags.Doctor) error {
wailsTableData = append(wailsTableData, []string{"Package Manager", info.PM.Name()})
}
err = pterm.DefaultTable.WithData(wailsTableData).Render()
err = pterm.DefaultTable.WithBoxed().WithData(wailsTableData).Render()
if err != nil {
return err
}
@@ -1,8 +1,8 @@
module changeme
go 1.18
go 1.22
require github.com/wailsapp/wails/v2 v2.3.1
require github.com/wailsapp/wails/v2 v2.8.0
require (
github.com/bep/debounce v1.2.1 // indirect
-1
View File
@@ -158,7 +158,6 @@ tasks:
oauth
plain
screen
server
show-macos-toolbar
systray
video
+2 -2
View File
@@ -24,10 +24,10 @@
</head>
<body>
<div class="container">
<div class="quarter" style="background-color: lightblue; --webkit-app-region: drag">Draggable</div>
<div class="quarter" style="background-color: lightblue; --wails-draggable: drag">Draggable</div>
<div class="quarter" style="background-color: lightgreen;">Not Draggable</div>
<div class="quarter" style="background-color: lightpink;">Not Draggable</div>
<div class="quarter" style="background-color: lightyellow; --webkit-app-region: drag">Draggable</div>
<div class="quarter" style="background-color: lightyellow; --wails-draggable: drag">Draggable</div>
</div>
</body>
</html>
-3
View File
@@ -1,3 +0,0 @@
# OAuth Example
This example is not ready for testing yet.
-41
View File
@@ -1,41 +0,0 @@
<!-- templates/index.html -->
<!doctype html>
<html>
<head>
<title>Google SignIn</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> <!-- load bulma css -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <!-- load fontawesome -->
</head>
<body>
<div id="main" class="container">
<div class="jumbotron text-center text-success" style="padding-top:70px;">
<h1><span class="fa fa-lock"></span> Social Authentication</h1>
<p>Login or Register with:</p>
<a wml-event="github-login" class="btn btn-primary"><span class="fa fa-github" style="color: #FFF"></span> SignIn with Github</a>
</div>
</div>
<div id="details" class="text-center" style="display: none">
<image id="logo" style="width:250px"></image>
<h3 id="name" style="padding-top: 10px"></h3>
<a wml-event="github-logout" class="btn btn-primary"><span class="fa fa-github" style="color: #FFF"></span> Logout </a>
</div>
<script type="module">
import * as wails from "/wails/runtime.js";
wails.Events.On("wails:oauth:success", (event) => {
document.getElementById("main").style.display = "none";
document.getElementById("details").style.display = "block";
document.getElementById("name").innerText = event.data.Name;
document.getElementById("logo").src = event.data.AvatarURL;
document.body.style.backgroundColor = "#000";
document.body.style.color = "#FFF";
});
wails.Events.On("wails:oauth:loggedout", (event) => {
document.getElementById("details").style.display = "none";
document.getElementById("main").style.display = "block";
document.body.style.backgroundColor = "#FFF";
document.body.style.color = "#000";
});
</script>
</body>
</html>
-68
View File
@@ -1,68 +0,0 @@
package main
import (
"embed"
_ "embed"
"log"
"os"
"github.com/markbates/goth"
"github.com/markbates/goth/providers/github"
"github.com/wailsapp/wails/v3/pkg/application"
"github.com/wailsapp/wails/v3/plugins/oauth"
)
//go:embed assets
var assets embed.FS
func main() {
oAuthPlugin := oauth.NewPlugin(oauth.Config{
Providers: []goth.Provider{
github.New(
os.Getenv("clientkey"),
os.Getenv("secret"),
"http://localhost:9876/auth/github/callback",
"email",
"profile"),
},
})
app := application.New(application.Options{
Name: "OAuth Demo",
Description: "A demo of the oauth Plugin",
Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
Assets: application.AssetOptions{
Handler: application.AssetFileServerFS(assets),
},
Plugins: map[string]application.Plugin{
"github.com/wailsapp/wails/v3/plugins/oauth": oAuthPlugin,
},
})
app.NewWebviewWindowWithOptions(application.WebviewWindowOptions{
Title: "OAuth Demo",
DevToolsEnabled: true,
OpenInspectorOnStartup: true,
Mac: application.MacWindow{
Backdrop: application.MacBackdropTranslucent,
TitleBar: application.MacTitleBarHiddenInsetUnified,
InvisibleTitleBarHeight: 50,
},
})
app.Events.On("github-login", func(e *application.WailsEvent) {
oAuthPlugin.Github()
})
app.Events.On("github-logout", func(e *application.WailsEvent) {
oAuthPlugin.LogoutGithub()
})
err := app.Run()
if err != nil {
log.Fatal(err.Error())
}
}
File diff suppressed because one or more lines are too long
+202
View File
@@ -0,0 +1,202 @@
html {
background-color: rgba(33, 37, 43);
text-align: center;
color: white;
user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-webkit-touch-callout: none;
}
body {
padding-top: 40px;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto",
"Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
overscroll-behavior: none;
}
.logo {
width: 30%;
height: 20%;
}
/* CSS */
.button-42 {
background-color: initial;
background-image: linear-gradient(-180deg, #555555, #2f2f2f);
border-radius: 6px;
box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px;
color: #FFFFFF;
cursor: pointer;
display: inline-block;
font-family: Inter,-apple-system,system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;
height: 35px;
line-height: 35px;
outline: 0;
overflow: hidden;
padding: 0 20px;
pointer-events: auto;
position: relative;
text-align: center;
touch-action: manipulation;
user-select: none;
-webkit-user-select: none;
vertical-align: top;
white-space: nowrap;
z-index: 9;
border: 0;
transition: box-shadow .2s;
font-size: medium;
}
p {
font-size: 1rem;
}
.button-42:hover {
background-image: linear-gradient(-180deg, #cb3939, #610000);
}
html {
background-color: rgba(33, 37, 43);
text-align: center;
color: white;
user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-webkit-touch-callout: none;
}
body {
padding-top: 40px;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto",
"Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
overscroll-behavior: none;
}
.button-42 {
background-color: initial;
background-image: linear-gradient(-180deg, #555555, #2f2f2f);
border-radius: 6px;
box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px;
color: #FFFFFF;
cursor: pointer;
display: inline-block;
font-family: Inter,-apple-system,system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;
height: 35px;
line-height: 35px;
outline: 0;
overflow: hidden;
padding: 0 20px;
pointer-events: auto;
position: relative;
text-align: center;
touch-action: manipulation;
user-select: none;
-webkit-user-select: none;
vertical-align: top;
white-space: nowrap;
z-index: 9;
border: 0;
transition: box-shadow .2s;
font-size: medium;
}
p {
font-size: 1rem;
}
.button-42:hover {
background-image: linear-gradient(-180deg, #cb3939, #610000);
}
.tab {
overflow: hidden;
background-color: #f1f1f100;
margin-left: 20px;
}
.tab button {
background-color: transparent; /* Make the background transparent */
color: white; /* Make the text white */
float: left;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
transition: 0.3s;
position: relative; /* Added for the underline */
}
.tab button::after { /* Added for the underline */
content: '';
position: absolute;
width: 0;
height: 2px;
bottom: 0;
left: 0;
background-color: #a40505;
visibility: hidden;
transition: all 0.3s ease-in-out;
}
.tab button:hover::after, /* Added for the underline */
.tab button.active::after { /* Added for the underline */
width: 100%;
visibility: visible;
}
.tab button.active {
background-color: transparent; /* Make the background transparent */
color: red;
}
.tabcontent {
display: none;
padding: 6px 12px;
border-top: none;
}
#sqlresults, #hashresults {
font-family: 'Courier New', Courier, monospace;
min-height: 100px;
}
#selectquery {
width: 90%;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #005467;
color: white;
}
tr:hover {
background-color: #888;
}
.error-message {
color: #FF4B2B; /* Bright red color for better visibility in dark mode */
background-color: #1E1E1E; /* Dark background for the error message */
border: 1px solid #FF4B2B; /* Border color same as text color */
padding: 10px; /* Padding around the text */
margin: 10px 0; /* Margin top and bottom */
border-radius: 5px; /* Rounded corners */
text-align: center; /* Center the text */
}
.narrowColumn {
width: 1%; /* Adjust as needed */
white-space: nowrap;
}
@@ -1,4 +0,0 @@
# Experimental Plugins
This directory contains experimental plugins. These plugins are not supported by the Wails team and are provided as-is.
They may be removed at any time. If you have any thoughts about these plugins, they can be discussed on the [Wails Discord](https://discord.gg/u8JkcWsG).
@@ -15,7 +15,8 @@ Add the plugin to the `Plugins` option in the Applications options:
You can then call the Generate method from the frontend:
```js
wails.Plugin("hashes","Generate","hello world").then((result) => console.log(result))
import {Call} from "/wails/runtime.js";
Call.Plugin("hashes","Generate","hello world").then((result) => console.log(result))
```
This method returns a struct with the following fields:
@@ -6,6 +6,7 @@ import (
"crypto/sha256"
"encoding/hex"
"github.com/wailsapp/wails/v3/pkg/application"
"io/fs"
)
// ---------------- Plugin Setup ----------------
@@ -32,8 +33,8 @@ func (r *Plugin) CallableByJS() []string {
}
}
func (r *Plugin) InjectJS() string {
return ""
func (r *Plugin) Assets() fs.FS {
return nil
}
// ---------------- Plugin Methods ----------------
+5 -7
View File
@@ -2,8 +2,9 @@ package main
import (
"embed"
"log/slog"
"os"
"plugin_demo/plugins/hashes"
"plugin_demo/hashes"
"github.com/wailsapp/wails/v3/pkg/application"
"github.com/wailsapp/wails/v3/plugins/kvstore"
@@ -24,6 +25,7 @@ func main() {
Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
LogLevel: slog.LevelDebug,
Plugins: map[string]application.Plugin{
"hashes": hashes.NewPlugin(),
"log": log.NewPlugin(),
@@ -34,10 +36,6 @@ func main() {
Filename: "store.json",
AutoSave: true,
}),
//"server": server.NewPlugin(&server.Config{
// Enabled: true,
// Port: 34115,
//}),
"single_instance": single_instance.NewPlugin(&single_instance.Config{
// When true, the original app will be activated when a second instance is launched
ActivateAppOnSubsequentLaunch: true,
@@ -50,8 +48,8 @@ func main() {
})
app.NewWebviewWindowWithOptions(application.WebviewWindowOptions{
DevToolsEnabled: true,
OpenInspectorOnStartup: true,
Width: 1024,
Height: 768,
})
err := app.Run()
-8
View File
@@ -1,8 +0,0 @@
export namespace HashesPlugin {
export interface Hashes {
md5: string;
sha1: string;
sha256: string;
}
}

Some files were not shown because too many files have changed in this diff Show More