From f28c9515ad91bca38c9d0a1093aa685d59e38858 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Thu, 2 Nov 2023 20:53:59 +1100 Subject: [PATCH] Update installation instructions --- .../docs/{ => en}/API/application.md | 3 +- mkdocs-website/docs/{ => en}/API/fullapi.md | 0 .../docs/{ => en}/API/mainthread.md | 0 mkdocs-website/docs/{ => en}/API/menu.md | 0 mkdocs-website/docs/{ => en}/API/systray.md | 0 mkdocs-website/docs/{ => en}/API/window.md | 0 mkdocs-website/docs/{ => en}/changelog.md | 0 .../docs/{ => en}/development/changes.md | 4 +- .../docs/{ => en}/development/introduction.md | 0 .../docs/{ => en}/development/status.md | 0 mkdocs-website/docs/{ => en}/favicon.ico | Bin .../{ => en}/getting-started/_category_.json | 0 .../docs/{ => en}/getting-started/feedback.md | 0 .../{ => en}/getting-started/installation.md | 0 .../{ => en}/getting-started/next-steps.md | 0 mkdocs-website/docs/{ => en}/index.md | 2 +- mkdocs-website/docs/{ => en}/roadmap.md | 0 .../docs/{ => en}/stylesheets/extra.css | 0 mkdocs-website/docs/{ => en}/whats-new.md | 0 mkdocs-website/docs/zh/API/application.md | 318 +++++++++++++++ mkdocs-website/docs/zh/API/mainthread.md | 37 ++ mkdocs-website/docs/zh/API/menu.md | 60 +++ mkdocs-website/docs/zh/API/systray.md | 102 +++++ mkdocs-website/docs/zh/API/window.md | 101 +++++ mkdocs-website/docs/zh/changelog.md | 39 ++ mkdocs-website/docs/zh/development/changes.md | 341 ++++++++++++++++ .../docs/zh/development/introduction.md | 163 ++++++++ mkdocs-website/docs/zh/development/status.md | 378 ++++++++++++++++++ .../docs/zh/getting-started/feedback.md | 58 +++ .../docs/zh/getting-started/installation.md | 76 ++++ .../docs/zh/getting-started/next-steps.md | 32 ++ mkdocs-website/docs/zh/index.md | 4 + mkdocs-website/docs/zh/roadmap.md | 49 +++ mkdocs-website/docs/zh/whats-new.md | 317 +++++++++++++++ mkdocs-website/mkdocs.yml | 71 +++- .../overrides/{home.html => home.en.html} | 0 mkdocs-website/overrides/home.zh.html | 145 +++++++ mkdocs-website/overrides/main.html | 13 + mkdocs-website/overrides/main.zh.html | 35 ++ mkdocs-website/requirements.txt | Bin 1800 -> 0 bytes 40 files changed, 2337 insertions(+), 11 deletions(-) rename mkdocs-website/docs/{ => en}/API/application.md (99%) rename mkdocs-website/docs/{ => en}/API/fullapi.md (100%) rename mkdocs-website/docs/{ => en}/API/mainthread.md (100%) rename mkdocs-website/docs/{ => en}/API/menu.md (100%) rename mkdocs-website/docs/{ => en}/API/systray.md (100%) rename mkdocs-website/docs/{ => en}/API/window.md (100%) rename mkdocs-website/docs/{ => en}/changelog.md (100%) rename mkdocs-website/docs/{ => en}/development/changes.md (99%) rename mkdocs-website/docs/{ => en}/development/introduction.md (100%) rename mkdocs-website/docs/{ => en}/development/status.md (100%) rename mkdocs-website/docs/{ => en}/favicon.ico (100%) rename mkdocs-website/docs/{ => en}/getting-started/_category_.json (100%) rename mkdocs-website/docs/{ => en}/getting-started/feedback.md (100%) rename mkdocs-website/docs/{ => en}/getting-started/installation.md (100%) rename mkdocs-website/docs/{ => en}/getting-started/next-steps.md (100%) rename mkdocs-website/docs/{ => en}/index.md (62%) rename mkdocs-website/docs/{ => en}/roadmap.md (100%) rename mkdocs-website/docs/{ => en}/stylesheets/extra.css (100%) rename mkdocs-website/docs/{ => en}/whats-new.md (100%) create mode 100644 mkdocs-website/docs/zh/API/application.md create mode 100644 mkdocs-website/docs/zh/API/mainthread.md create mode 100644 mkdocs-website/docs/zh/API/menu.md create mode 100644 mkdocs-website/docs/zh/API/systray.md create mode 100644 mkdocs-website/docs/zh/API/window.md create mode 100644 mkdocs-website/docs/zh/changelog.md create mode 100644 mkdocs-website/docs/zh/development/changes.md create mode 100644 mkdocs-website/docs/zh/development/introduction.md create mode 100644 mkdocs-website/docs/zh/development/status.md create mode 100644 mkdocs-website/docs/zh/getting-started/feedback.md create mode 100644 mkdocs-website/docs/zh/getting-started/installation.md create mode 100644 mkdocs-website/docs/zh/getting-started/next-steps.md create mode 100644 mkdocs-website/docs/zh/index.md create mode 100644 mkdocs-website/docs/zh/roadmap.md create mode 100644 mkdocs-website/docs/zh/whats-new.md rename mkdocs-website/overrides/{home.html => home.en.html} (100%) create mode 100644 mkdocs-website/overrides/home.zh.html create mode 100644 mkdocs-website/overrides/main.zh.html delete mode 100644 mkdocs-website/requirements.txt diff --git a/mkdocs-website/docs/API/application.md b/mkdocs-website/docs/en/API/application.md similarity index 99% rename from mkdocs-website/docs/API/application.md rename to mkdocs-website/docs/en/API/application.md index 2d1a3c1cf..577aa2106 100644 --- a/mkdocs-website/docs/API/application.md +++ b/mkdocs-website/docs/en/API/application.md @@ -1,7 +1,6 @@ # Application -The application API assists in creating an application using the Wails -framework. +The application API assists in creating an application using the Wails framework. ### New diff --git a/mkdocs-website/docs/API/fullapi.md b/mkdocs-website/docs/en/API/fullapi.md similarity index 100% rename from mkdocs-website/docs/API/fullapi.md rename to mkdocs-website/docs/en/API/fullapi.md diff --git a/mkdocs-website/docs/API/mainthread.md b/mkdocs-website/docs/en/API/mainthread.md similarity index 100% rename from mkdocs-website/docs/API/mainthread.md rename to mkdocs-website/docs/en/API/mainthread.md diff --git a/mkdocs-website/docs/API/menu.md b/mkdocs-website/docs/en/API/menu.md similarity index 100% rename from mkdocs-website/docs/API/menu.md rename to mkdocs-website/docs/en/API/menu.md diff --git a/mkdocs-website/docs/API/systray.md b/mkdocs-website/docs/en/API/systray.md similarity index 100% rename from mkdocs-website/docs/API/systray.md rename to mkdocs-website/docs/en/API/systray.md diff --git a/mkdocs-website/docs/API/window.md b/mkdocs-website/docs/en/API/window.md similarity index 100% rename from mkdocs-website/docs/API/window.md rename to mkdocs-website/docs/en/API/window.md diff --git a/mkdocs-website/docs/changelog.md b/mkdocs-website/docs/en/changelog.md similarity index 100% rename from mkdocs-website/docs/changelog.md rename to mkdocs-website/docs/en/changelog.md diff --git a/mkdocs-website/docs/development/changes.md b/mkdocs-website/docs/en/development/changes.md similarity index 99% rename from mkdocs-website/docs/development/changes.md rename to mkdocs-website/docs/en/development/changes.md index d5bbfd741..9b37d2576 100644 --- a/mkdocs-website/docs/development/changes.md +++ b/mkdocs-website/docs/en/development/changes.md @@ -1,7 +1,7 @@ # Changes for v3 -!!! note This is currently an unsorted brain dump of changes. It will be -organised into a more readable format soon. +!!! note + This is currently an unsorted brain dump of changes. It will be organised into a more readable format soon. ## Options diff --git a/mkdocs-website/docs/development/introduction.md b/mkdocs-website/docs/en/development/introduction.md similarity index 100% rename from mkdocs-website/docs/development/introduction.md rename to mkdocs-website/docs/en/development/introduction.md diff --git a/mkdocs-website/docs/development/status.md b/mkdocs-website/docs/en/development/status.md similarity index 100% rename from mkdocs-website/docs/development/status.md rename to mkdocs-website/docs/en/development/status.md diff --git a/mkdocs-website/docs/favicon.ico b/mkdocs-website/docs/en/favicon.ico similarity index 100% rename from mkdocs-website/docs/favicon.ico rename to mkdocs-website/docs/en/favicon.ico diff --git a/mkdocs-website/docs/getting-started/_category_.json b/mkdocs-website/docs/en/getting-started/_category_.json similarity index 100% rename from mkdocs-website/docs/getting-started/_category_.json rename to mkdocs-website/docs/en/getting-started/_category_.json diff --git a/mkdocs-website/docs/getting-started/feedback.md b/mkdocs-website/docs/en/getting-started/feedback.md similarity index 100% rename from mkdocs-website/docs/getting-started/feedback.md rename to mkdocs-website/docs/en/getting-started/feedback.md diff --git a/mkdocs-website/docs/getting-started/installation.md b/mkdocs-website/docs/en/getting-started/installation.md similarity index 100% rename from mkdocs-website/docs/getting-started/installation.md rename to mkdocs-website/docs/en/getting-started/installation.md diff --git a/mkdocs-website/docs/getting-started/next-steps.md b/mkdocs-website/docs/en/getting-started/next-steps.md similarity index 100% rename from mkdocs-website/docs/getting-started/next-steps.md rename to mkdocs-website/docs/en/getting-started/next-steps.md diff --git a/mkdocs-website/docs/index.md b/mkdocs-website/docs/en/index.md similarity index 62% rename from mkdocs-website/docs/index.md rename to mkdocs-website/docs/en/index.md index 8b22923af..2292b9b99 100644 --- a/mkdocs-website/docs/index.md +++ b/mkdocs-website/docs/en/index.md @@ -1,5 +1,5 @@ --- -template: home.html +template: home.en.html --- Welcome to The Wails Project diff --git a/mkdocs-website/docs/roadmap.md b/mkdocs-website/docs/en/roadmap.md similarity index 100% rename from mkdocs-website/docs/roadmap.md rename to mkdocs-website/docs/en/roadmap.md diff --git a/mkdocs-website/docs/stylesheets/extra.css b/mkdocs-website/docs/en/stylesheets/extra.css similarity index 100% rename from mkdocs-website/docs/stylesheets/extra.css rename to mkdocs-website/docs/en/stylesheets/extra.css diff --git a/mkdocs-website/docs/whats-new.md b/mkdocs-website/docs/en/whats-new.md similarity index 100% rename from mkdocs-website/docs/whats-new.md rename to mkdocs-website/docs/en/whats-new.md diff --git a/mkdocs-website/docs/zh/API/application.md b/mkdocs-website/docs/zh/API/application.md new file mode 100644 index 000000000..877b8e044 --- /dev/null +++ b/mkdocs-website/docs/zh/API/application.md @@ -0,0 +1,318 @@ +# 应用程序 + +应用程序 API 用于使用 Wails 框架创建应用程序。 + +### New + +API:`New(appOptions Options) *App` + +`New(appOptions Options)` 使用给定的应用程序选项创建一个新的应用程序。它对未指定的选项应用默认值,将其与提供的选项合并,然后初始化并返回应用程序的实例。 + +如果在初始化过程中出现错误,应用程序将停止,并显示提供的错误消息。 + +需要注意的是,如果全局应用程序实例已经存在,将返回该实例,而不是创建新的实例。 + +```go title="main.go" hl_lines="6-9" +package main + +import "github.com/wailsapp/wails/v3/pkg/application" + +func main() { + app := application.New(application.Options{ + Name: "WebviewWindow Demo", + // 其他选项 + }) + + // 其余的应用程序逻辑 +} +``` + +### Get + +`Get()` 返回全局应用程序实例。在代码的不同部分需要访问应用程序时非常有用。 + +```go + // 获取应用程序实例 + app := application.Get() +``` + +### Capabilities + +API:`Capabilities() capabilities.Capabilities` + +`Capabilities()` 返回应用程序当前具有的功能的映射。这些功能可以是操作系统提供的不同功能,如 webview 功能。 + +```go + // 获取应用程序的功能 + capabilities := app.Capabilities() + if capabilities.HasNativeDrag { + // 做一些事情 + } +``` + +### GetPID + +API:`GetPID() int` + +`GetPID()` 返回应用程序的进程 ID。 + +```go + pid := app.GetPID() +``` + +### Run + +API:`Run() error` + +`Run()` 启动应用程序及其组件的执行。 + +```go + app := application.New(application.Options{ + // 选项 + }) + // 运行应用程序 + err := application.Run() + if err != nil { + // 处理错误 + } +``` + +### Quit + +API:`Quit()` + +`Quit()` 通过销毁窗口和可能的其他组件退出应用程序。 + +```go + // 退出应用程序 + app.Quit() +``` + +### IsDarkMode + +API:`IsDarkMode() bool` + +`IsDarkMode()` 检查应用程序是否在暗模式下运行。它返回一个布尔值,指示是否启用了暗模式。 + +```go + // 检查是否启用了暗模式 + if app.IsDarkMode() { + // 做一些事情 + } +``` + +### Hide + +API:`Hide()` + +`Hide()` 隐藏应用程序窗口。 + +```go + // 隐藏应用程序窗口 + app.Hide() +``` + +### Show + +API:`Show()` + +`Show()` 显示应用程序窗口。 + +```go + // 显示应用程序窗口 + app.Show() +``` + +### NewWebviewWindow + +API:`NewWebviewWindow() *WebviewWindow` + +`NewWebviewWindow()` 使用默认选项创建一个新的 Webview 窗口,并返回它。 + +```go + // 创建一个新的 Webview 窗口 + window := app.NewWebviewWindow() +``` + +### NewWebviewWindowWithOptions + +API:`NewWebviewWindowWithOptions(windowOptions WebviewWindowOptions) *WebviewWindow` + +`NewWebviewWindowWithOptions()` 使用自定义选项创建一个新的 Webview 窗口。新创建的窗口将添加到应用程序管理的窗口映射中。 + +```go + // 使用自定义选项创建一个新的 Webview 窗口 + window := app.NewWebviewWindowWithOptions(WebviewWindowOptions{ + Name: "Main", + Title: "My Window", + Width: 800, + Height: 600, + }) +``` + +### OnWindowCreation + +API:`OnWindowCreation(callback func(window *WebviewWindow))` + +`OnWindowCreation()` 注册一个回调函数,当创建窗口时调用该函数。 + +```go + // 注册一个回调函数,当创建窗口时调用该函数 + app.OnWindowCreation(func(window *WebviewWindow) { + // 做一些事情 + }) +``` + +### GetWindowByName + +API:`GetWindowByName(name string) *WebviewWindow` + +`GetWindowByName()` 获取并返回具有特定名称的窗口。 + +```go + // 通过名称获取窗口 + window := app.GetWindowByName("Main") +``` + +### CurrentWindow + +API:`CurrentWindow() *WebviewWindow` + +`CurrentWindow()` 获取并返回应用程序中当前活动窗口的指针。如果没有窗口,则返回 nil。 + +```go + // 获取当前窗口 + window := app.CurrentWindow() +``` + +### RegisterContextMenu + +API:`RegisterContextMenu(name string, menu *Menu)` + +`RegisterContextMenu()` 注册具有给定名称的上下文菜单。稍后可以在应用程序中使用该菜单。 + +```go + + // 创建一个新的菜单 + ctxmenu := app.NewMenu() + + // 将菜单注册为上下文菜单 + app.RegisterContextMenu("MyContextMenu", ctxmenu) +``` + +### SetMenu + +API:`SetMenu(menu *Menu)` + +`SetMenu()` 设置应用程序的菜单。在 Mac 上,这将是全局菜单。对于 Windows 和 Linux,这将是任何新窗口的默认菜单。 + +```go + // 创建一个新的菜单 + menu := app.NewMenu() + + // 设置应用程序的菜单 + app.SetMenu(menu) +``` + +### ShowAboutDialog + +API:`ShowAboutDialog()` + +`ShowAboutDialog()` 显示一个 "关于" 对话框。可以显示应用程序的名称、描述和图标。 + +```go + // 显示关于对话框 + app.ShowAboutDialog() +``` + +### Info + +API:`InfoDialog()` + +`InfoDialog()` 创建并返回一个具有 `InfoDialogType` 的 `MessageDialog` 的新实例。此对话框通常用于向用户显示信息消息。 + +### Question + +API:`QuestionDialog()` + +`QuestionDialog()` 创建并返回一个具有 `QuestionDialogType` 的 `MessageDialog` 的新实例。此对话框通常用于向用户提问并期望回应。 + +### Warning + +API:`WarningDialog()` + +`WarningDialog()` 创建并返回一个具有 `WarningDialogType` 的 `MessageDialog` 的新实例。如其名称所示,此对话框主要用于向用户显示警告消息。 + +### Error + +API:`ErrorDialog()` + +`ErrorDialog()` 创建并返回一个具有 `ErrorDialogType` 的 `MessageDialog` 的新实例。此对话框设计用于在需要向用户显示错误消息时使用。 + +### OpenFile + +API:`OpenFileDialog()` + +`OpenFileDialog()` 创建并返回一个新的 `OpenFileDialogStruct`。此对话框提示用户从其文件系统中选择一个或多个文件。 + +### SaveFile + +API:`SaveFileDialog()` + +`SaveFileDialog()` 创建并返回一个新的 `SaveFileDialogStruct`。此对话框提示用户选择其文件系统上的位置以保存文件。 + +### OpenDirectory + +API:`OpenDirectoryDialog()` + +`OpenDirectoryDialog()` 创建并返回一个具有 `OpenDirectoryDialogType` 的 `MessageDialog` 的新实例。此对话框使用户能够从其文件系统中选择目录。 + +### On + +API:`On(eventType events.ApplicationEventType, callback func(event *Event)) func()` + +`On()` 注册特定应用程序事件的事件侦听器。提供的回调函数将在相应事件发生时触发。该函数返回一个可调用的函数,用于删除侦听器。 + +### RegisterHook + +API:`RegisterHook(eventType events.ApplicationEventType, callback func(event *Event)) func()` + +`RegisterHook()` 注册要在特定事件期间作为钩子运行的回调函数。这些钩子在使用 `On()` 附加的侦听器之前运行。该函数返回一个可调用的函数,用于删除钩子。 + +### GetPrimaryScreen + +API:`GetPrimaryScreen() (*Screen, error)` + +`GetPrimaryScreen()` 返回系统的主屏幕。 + +### GetScreens + +API:`GetScreens() ([]*Screen, error)` + +`GetScreens()` 返回有关连接到系统的所有屏幕的信息。 + +这是提供的 `App` 结构中导出的方法的简要摘要。请注意,有关更详细的功能或注意事项,请参考实际的 Go 代码或进一步的内部文档。 + +## Options + +```go title="application_options.go" +--8<-- +../v3/pkg/application/options_application.go +--8<-- +``` + +### Windows 选项 + +```go title="application_options_windows.go" +--8<-- +../v3/pkg/application/options_application_win.go +--8<-- +``` + +### Mac 选项 + +```go title="options_application_mac.go" +--8<-- +../v3/pkg/application/options_application_mac.go +--8<-- +``` \ No newline at end of file diff --git a/mkdocs-website/docs/zh/API/mainthread.md b/mkdocs-website/docs/zh/API/mainthread.md new file mode 100644 index 000000000..0bf337c80 --- /dev/null +++ b/mkdocs-website/docs/zh/API/mainthread.md @@ -0,0 +1,37 @@ +# 主线程函数 + +这些方法是在主线程上运行代码的实用函数。当您想要在UI线程上运行自定义代码时,这是必需的。 + +### InvokeSync + +API: `InvokeSync(fn func())` + +此函数以同步方式运行传入的函数(`fn`)。它使用一个`WaitGroup`(`wg`)确保主线程在`fn`函数完成之前等待,然后才继续执行。如果在`fn`内部发生恐慌,它将传递给应用程序选项中定义的处理程序函数`PanicHandler`。 + +### InvokeSyncWithResult + +API: `InvokeSyncWithResult[T any](fn func() T) (res T)` + +此函数与`InvokeSync(fn func())`类似,但它返回一个结果。可用于调用具有单个返回值的任何函数。 + +### InvokeSyncWithError + +API: `InvokeSyncWithError(fn func() error) (err error)` + +此函数同步运行`fn`并返回`fn`产生的任何错误。请注意,如果在`fn`执行期间发生恐慌,此函数将从恢复。 + +### InvokeSyncWithResultAndError + +API: `InvokeSyncWithResultAndError[T any](fn func() (T, error)) (res T, err error)` + +此函数同步运行`fn`并返回类型为`T`的结果和一个错误。 + +### InvokeAsync + +API: `InvokeAsync(fn func())` + +此函数以异步方式运行`fn`。它在主线程上运行给定的函数。如果在`fn`内部发生恐慌,它将传递给应用程序选项中定义的处理程序函数`PanicHandler`。 + +--- + +注意:这些函数将阻塞执行,直到`fn`完成。确保`fn`不会阻塞至关重要。如果需要运行阻塞函数,请改用`InvokeAsync`。 \ No newline at end of file diff --git a/mkdocs-website/docs/zh/API/menu.md b/mkdocs-website/docs/zh/API/menu.md new file mode 100644 index 000000000..b66af7495 --- /dev/null +++ b/mkdocs-website/docs/zh/API/menu.md @@ -0,0 +1,60 @@ +# 菜单 + +可以创建菜单并添加到应用程序中。它们可以用于创建上下文菜单、系统托盘菜单和应用程序菜单。 + +要创建一个新菜单,请调用: + +```go + // 创建一个新菜单 + menu := app.NewMenu() +``` + +然后,`Menu` 类型上可用以下操作: + +### 添加 + +API:`Add(label string) *MenuItem` + +此方法以 `string` 类型的 `label` 作为输入,并将具有给定标签的新 `MenuItem` 添加到菜单中。它返回添加的 `MenuItem`。 + +### 添加分隔符 + +API:`AddSeparator()` + +此方法将一个新的分隔符 `MenuItem` 添加到菜单中。 + +### 添加复选框 + +API:`AddCheckbox(label string, enabled bool) *MenuItem` + +此方法以 `string` 类型的 `label` 和 `bool` 类型的 `enabled` 作为输入,并将具有给定标签和启用状态的新复选框 `MenuItem` 添加到菜单中。它返回添加的 `MenuItem`。 + +### 添加单选按钮 + +API:`AddRadio(label string, enabled bool) *MenuItem` + +此方法以 `string` 类型的 `label` 和 `bool` 类型的 `enabled` 作为输入,并将具有给定标签和启用状态的新单选按钮 `MenuItem` 添加到菜单中。它返回添加的 `MenuItem`。 + +### 更新 + +API:`Update()` + +此方法处理任何单选按钮组,并在菜单未初始化时更新菜单。 + +### 添加子菜单 + +API:`AddSubmenu(s string) *Menu` + +此方法以 `string` 类型的 `s` 作为输入,并将具有给定标签的新子菜单 `MenuItem` 添加到菜单中。它返回添加的子菜单。 + +### 添加角色 + +API:`AddRole(role Role) *Menu` + +此方法以 `Role` 类型的 `role` 作为输入,如果不为 `nil`,则将其添加到菜单中,并返回 `Menu`。 + +### 设置标签 + +API:`SetLabel(label string)` + +此方法设置 `Menu` 的 `label`。 \ No newline at end of file diff --git a/mkdocs-website/docs/zh/API/systray.md b/mkdocs-website/docs/zh/API/systray.md new file mode 100644 index 000000000..f7535990c --- /dev/null +++ b/mkdocs-website/docs/zh/API/systray.md @@ -0,0 +1,102 @@ +# 系统托盘 + +系统托盘位于桌面环境的通知区域,可以包含当前运行应用程序的图标和特定系统通知。 + +您可以通过调用 `app.NewSystemTray()` 来创建一个系统托盘: + +```go + // 创建一个新的系统托盘 +tray := app.NewSystemTray() +``` + +`SystemTray` 类型上提供了以下方法: + +### SetLabel + +API:`SetLabel(label string)` + +`SetLabel` 方法设置托盘的标签。 + +### Label + +API:`Label() string` + +`Label` 方法获取托盘的标签。 + +### PositionWindow + +API:`PositionWindow(*WebviewWindow, offset int) error` + +`PositionWindow` 方法调用了 `AttachWindow` 和 `WindowOffset` 方法。 + +### SetIcon + +API:`SetIcon(icon []byte) *SystemTray` + +`SetIcon` 方法设置系统托盘的图标。 + +### SetDarkModeIcon + +API:`SetDarkModeIcon(icon []byte) *SystemTray` + +`SetDarkModeIcon` 方法设置暗黑模式下系统托盘的图标。 + +### SetMenu + +API:`SetMenu(menu *Menu) *SystemTray` + +`SetMenu` 方法设置系统托盘的菜单。 + +### Destroy + +API:`Destroy()` + +`Destroy` 方法销毁系统托盘实例。 + +### OnClick + +API:`OnClick(handler func()) *SystemTray` + +`OnClick` 方法设置点击托盘图标时执行的函数。 + +### OnRightClick + +API:`OnRightClick(handler func()) *SystemTray` + +`OnRightClick` 方法设置右键点击托盘图标时执行的函数。 + +### OnDoubleClick + +API:`OnDoubleClick(handler func()) *SystemTray` + +`OnDoubleClick` 方法设置双击托盘图标时执行的函数。 + +### OnRightDoubleClick + +API:`OnRightDoubleClick(handler func()) *SystemTray` + +`OnRightDoubleClick` 方法设置右键双击托盘图标时执行的函数。 + +### AttachWindow + +API:`AttachWindow(window *WebviewWindow) *SystemTray` + +`AttachWindow` 方法将窗口附加到系统托盘。当点击系统托盘图标时,窗口将显示出来。 + +### WindowOffset + +API:`WindowOffset(offset int) *SystemTray` + +`WindowOffset` 方法设置系统托盘与窗口之间的像素间隔。 + +### WindowDebounce + +API:`WindowDebounce(debounce time.Duration) *SystemTray` + +`WindowDebounce` 方法设置防抖时间。在 Windows 上,它用于指定在响应通知图标上的鼠标松开事件之前等待多长时间。 + +### OpenMenu + +API:`OpenMenu()` + +`OpenMenu` 方法打开与系统托盘关联的菜单。 \ No newline at end of file diff --git a/mkdocs-website/docs/zh/API/window.md b/mkdocs-website/docs/zh/API/window.md new file mode 100644 index 000000000..9a46b1156 --- /dev/null +++ b/mkdocs-website/docs/zh/API/window.md @@ -0,0 +1,101 @@ +# 窗口 + +要创建一个窗口,可以使用[Application.NewWebviewWindow](application.md#newwebviewwindow)或[Application.NewWebviewWindowWithOptions](application.md#newwebviewwindowwithoptions)。前者创建一个具有默认选项的窗口,而后者允许您指定自定义选项。 + +这些方法可在返回的WebviewWindow对象上调用: + +### SetTitle + +API: `SetTitle(title string) *WebviewWindow` + +此方法将窗口标题更新为提供的字符串。它返回WebviewWindow对象,允许进行方法链接。 + +### Name + +API: `Name() string` + +此函数返回WebviewWindow的名称。 + +### SetSize + +API: `SetSize(width, height int) *WebviewWindow` + +此方法将WebviewWindow的大小设置为提供的宽度和高度参数。如果提供的尺寸超过约束条件,它们将被相应调整。 + +### SetAlwaysOnTop + +API: `SetAlwaysOnTop(b bool) *WebviewWindow` + +此函数根据提供的布尔标志设置窗口始终置顶。 + +### Show + +API: `Show() *WebviewWindow` + +`Show`方法用于使窗口可见。如果窗口未运行,它首先调用`run`方法启动窗口,然后使其可见。 + +### Hide + +API: `Hide() *WebviewWindow` + +`Hide`方法用于隐藏窗口。它将窗口的隐藏状态设置为true,并触发窗口隐藏事件。 + +### SetURL + +API: `SetURL(s string) *WebviewWindow` + +`SetURL`方法用于将窗口的URL设置为给定的URL字符串。 + +### SetZoom + +API: `SetZoom(magnification float64) *WebviewWindow` + +`SetZoom`方法将窗口内容的缩放级别设置为提供的放大倍数。 + +### GetZoom + +API: `GetZoom() float64` + +`GetZoom`函数返回窗口内容的当前缩放级别。 + +### GetScreen + +API: `GetScreen() (*Screen, error)` + +`GetScreen`方法返回窗口所显示的屏幕。 + +#### SetFrameless + +API: `SetFrameless(frameless bool) *WebviewWindow` + +此函数用于移除窗口边框和标题栏。它根据提供的布尔值(true表示无边框,false表示有边框)切换窗口的无边框状态。 + +#### RegisterContextMenu + +API: `RegisterContextMenu(name string, menu *Menu)` + +此函数用于注册上下文菜单并为其指定给定的名称。 + +#### NativeWindowHandle + +API: `NativeWindowHandle() (uintptr, error)` + +此函数用于获取窗口的平台本机窗口句柄。 + +#### Focus + +API: `Focus()` + +此函数用于将焦点设置到窗口。 + +#### SetEnabled + +API: `SetEnabled(enabled bool)` + +此函数用于根据提供的布尔值启用/禁用窗口。 + +#### SetAbsolutePosition + +API: `SetAbsolutePosition(x int, y int)` + +此函数设置窗口在屏幕上的绝对位置。 \ No newline at end of file diff --git a/mkdocs-website/docs/zh/changelog.md b/mkdocs-website/docs/zh/changelog.md new file mode 100644 index 000000000..8bc95fe2b --- /dev/null +++ b/mkdocs-website/docs/zh/changelog.md @@ -0,0 +1,39 @@ +# 更新日志 + + + +## [未发布] + +### Added + +- [darwin] 添加Event ApplicationShouldHandleReopen以处理单击dock图标的功能 @5aaee9 in [#2991](https://github.com/wailsapp/wails/pull/2991) +- [darwin] 添加getPrimaryScreen/getScreens的实现 @tmclane in [#2618](https://github.com/wailsapp/wails/pull/2618) + +### Fixed + +- 修复Doctor apt软件包验证问题 [Atterpac](https://github.com/Atterpac) in [#2972](https://github.com/wailsapp/wails/pull/2972)。 +- 修复应用程序在退出时冻结的问题 (Darwin) @5aaee9 in [#2982](https://github.com/wailsapp/wails/pull/2982) +- 修复Windows上示例的背景颜色问题 [mmgvh](https://github.com/mmghv) in [#2750](https://github.com/wailsapp/wails/pull/2750)。 +- 修复默认上下文菜单问题 [mmgvh](https://github.com/mmghv) in [#2753](https://github.com/wailsapp/wails/pull/2753)。 + + +### Changed + +### Removed + +### Deprecated + +### Security \ No newline at end of file diff --git a/mkdocs-website/docs/zh/development/changes.md b/mkdocs-website/docs/zh/development/changes.md new file mode 100644 index 000000000..cfb8c1552 --- /dev/null +++ b/mkdocs-website/docs/zh/development/changes.md @@ -0,0 +1,341 @@ +# v3的更改 + +!!! note + 这是当前的无序更改脑升级。很快它将组织成一个更易读的格式。 + +## 选项 + +自v2以来,应用程序选项已经进行了修订。 + +## 事件 + +在v3中,有3种类型的事件: + +- 应用程序事件 +- 窗口事件 +- 自定义事件 + +### 应用程序事件 + +应用程序事件是由应用程序发出的事件。这些事件包括macOS上的`ApplicationDidFinishLaunching`等本机事件。 + +### 窗口事件 + +窗口事件是由窗口发出的事件。这些事件包括macOS上的`WindowDidBecomeMain`等本机事件。还定义了常见事件,以便它们在跨平台上工作,例如`WindowClosing`。 + +### 自定义事件 + +用户定义的事件称为`WailsEvents`。这是为了将它们与用于与浏览器通信的`Event`对象区分开来。WailsEvents现在是封装事件的对象。这包括事件名称,数据和事件的源。 + +与WailsEvent关联的数据现在是单个值。如果需要多个值,则可以使用struct。 + +### 事件回调和`Emit`函数签名 + +事件回调的签名(由`On`,`Once`和`OnMultiple`使用)已更改。在v2中,回调函数接收可选数据。在v3中,回调函数接收包含与事件相关的所有数据的`WailsEvent`对象。 + +类似地,`Emit`函数已更改。它现在不再接受名称和可选数据,而是接受一个`WailsEvent`对象,它将发出该对象。 + +### `Off`和`OffAll` + +在v2中,`Off`和`OffAll`调用将删除JS和Go中的事件。由于v3具有多窗口的特性,因此已更改为这些方法仅适用于调用它们的上下文。例如,如果你在一个窗口中调用`Off`,它仅会删除该窗口的事件。如果你在Go中使用`Off`,它只会删除Go的事件。 + +### Hooks + +事件钩子是v3中的新功能。它们允许您钩入事件系统,并在发出某些事件时执行操作。例如,您可以钩入`WindowClosing`事件,在窗口关闭之前执行一些清理操作。钩子可以在应用程序级别或窗口级别使用`RegisterHook`进行注册。应用程序级别适用于应用程序事件。仅当窗口级别钩子与其注册的窗口一起调用。 + +### 日志记录 + +在v2中,日志记录会混淆,因为应用程序日志和系统(内部)日志都使用相同的记录器。我们已经对此进行了简化: + +- 内部日志现在使用标准的Go `slog`记录器处理。这是通过应用程序选项中的`logger`选项进行配置的。默认情况下,这使用[tint](https://github.com/lmittmann/tint)记录器。 +- 现在可以通过新的`log`插件进行应用程序日志记录,它在底层使用`slog`。此插件提供了一个简单的用于记录到控制台的API。它在Go和JS中都可用。 + +### 开发人员注意事项 + +在Go中发出事件时,它会将事件分派到本地的Go侦听器以及应用程序中的每个窗口。在JS中发出事件时,它现在会将事件发送到应用程序。这将被处理,就好像它是在Go中发出的,但是发送者ID将是窗口的ID。 + +## 窗口 + +Window API在很大程度上保持不变,但方法现在是在窗口实例而不是运行时上。一些值得注意的变化是: + +- 窗口现在具有标识它们的名称。用于在发出事件时标识窗口。 +- 窗口上现在有更多以前不可用的方法,例如`AbsolutePosition`和`ToggleDevTools`。 +- 窗口现在可以通过本机拖放接受文件。有关详细信息,请参阅拖放部分。 + +## 剪切板 + +剪贴板API已经简化。现在有一个单独的`Clipboard`对象,可以用于读取和写入剪贴板。`Clipboard`对象在Go和JS中都可用。`SetText()`用于设置文本,`Text()`用于获取文本。 + +## 绑定 + +绑定的工作方式与v2类似,通过提供一种将结构方法绑定到前端的方式。这些可以在前端使用由`wails3 generate bindings`命令生成的绑定包装器来调用: + +```javascript +// @ts-check +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +import { main } from "./models"; + +window.go = window.go || {}; +window.go.main = { + GreetService: { + /** + * GreetService.Greet + * Greet greets a person + * @param name {string} + * @returns {Promise} + **/ + Greet: function (name) { + wails.CallByID(1411160069, ...Array.prototype.slice.call(arguments, 0)); + }, + + /** + * GreetService.GreetPerson + * GreetPerson greets a person + * @param person {main.Person} + * @returns {Promise} + **/ + GreetPerson: function (person) { + wails.CallByID(4021313248, ...Array.prototype.slice.call(arguments, 0)); + }, + }, +}; +``` + +默认情况下,绑定的方法是混淆的,并使用uint32 ID进行标识,该ID是使用[FNV哈希算法](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function)计算的。这是为了防止方法名称在生产构建中被暴露出来。在调试模式下,方法ID与计算的方法ID一起记录,以帮助调试。如果您希望增加额外的混淆层,可以使用`BindAliases`选项。这允许您指定别名ID与方法ID的映射。当前端使用ID调用方法时,方法ID将首先在别名映射中查找匹配项。如果找不到,它将假定是标准方法ID,并尝试以通常的方式查找方法。 + +示例: + +```go + app := application.New(application.Options{ + Bind: []any{ + &GreetService{}, + }, + BindAliases: map[uint32]uint32{ + 1: 1411160069, + 2: 4021313248, + }, + Assets: application.AssetOptions{ + FS: assets, + }, + Mac: application.MacOptions{ + ApplicationShouldTerminateAfterLastWindowClosed: true, + }, + }) +``` + +现在我们可以使用此别名在前端调用:`wails.Call(1, "world!")`。 + +### 不安全调用 + +如果您不介意在二进制文件中以明文形式提供调用,并且不打算使用[garble](https://github.com/burrowers/garble),那么可以使用不安全的`wails.CallByName()`方法。此方法接受要调用的方法的完全限定名称和要传递给它的参数。示例: + + ```go + wails.CallByName("main.GreetService.Greet", "world!") + ``` + +!!! danger + + 这仅作为开发的便利方法提供。不建议在生产中使用此方法。 + +## 对话框 + +对话框现在在JavaScript中可用! + +### Windows + +Windows中的对话框按钮是不可配置的,根据对话框的类型是恒定的。要在按下按钮时触发回调,请创建一个具有与您希望附加回调的按钮相同名称的按钮。示例:创建一个标签为“确定”的按钮,并使用`OnClick()`方法设置回调方法: + +```go + dialog := app.QuestionDialog(). + SetTitle("Update"). + SetMessage("The cancel button is selected when pressing escape") + ok := dialog.AddButton("Ok") + ok.OnClick(func() { + // Do something + }) + no := dialog.AddButton("Cancel") + dialog.SetDefaultButton(ok) + dialog.SetCancelButton(no) + dialog.Show() +``` + +## 拖放 + +可以按窗口启用本机拖放。只需将`EnableDragAndDrop`窗口配置选项设置为`true`,窗口将允许将文件拖放到其上。当这种情况发生时,将发出`events.FilesDropped`事件。然后可以使用`WindowEvent.Context()`中的`DroppedFiles()`方法检索文件名。这将返回一个包含文件名的字符串切片。 + +## 上下文菜单 + +上下文菜单是当用户右键单击元素时显示的上下文菜单。创建上下文菜单与创建标准菜单相同,使用`app.NewMenu()`。要使上下文菜单对窗口可用,请调用`window.RegisterContextMenu(name, menu)`。名称将是上下文菜单的ID,并由前端使用。 + +要指示元素具有上下文菜单,请将`data-contextmenu`属性添加到元素。此属性的值应为先前在窗口中注册的上下文菜单的名称。 + +可以在应用程序级别注册上下文菜单,使其对所有窗口可用。可以使用`app.RegisterContextMenu(name, menu)`完成此操作。如果在窗口级别找不到上下文菜单,则将检查应用程序上下文菜单。`v3/examples/contextmenus`中可以找到此演示。 + +## Wails标记语言(WML) + +Wails标记语言是一种简单的标记语言,允许您在没有JavaScript的情况下向标准HTML元素添加功能。 + +当前支持以下标签: + +### `data-wml-event` + +这指定单击元素时将发出Wails事件。属性的值应为要发出的事件的名称。 + +示例: + +```html + +``` + +有时您需要用户确认操作。可以通过向元素添加`data-wml-confirm`属性来完成。此属性的值将是要显示给用户的消息。 + +示例: + +```html + +``` + +### `data-wml-window` + +可以通过将`data-wml-window`属性添加到元素中来调用任何`wails.window`方法。属性的值应为要调用的方法的名称。方法名称应与导出的方法的名称完全匹配。 + +```html + +``` + +### `data-wml-trigger` + +此属性指定应触发操作的javascript事件。默认为`click`。 + +```html + +``` + +## 系统托盘 + +Wails 3附带了一个内置的系统托盘。这是一个完全功能的系统托盘,旨在尽可能简单地使用。可以设置托盘的图标、工具提示和菜单。还可以“附加”窗口到系统托盘。这样做将提供以下功能: + +- 单击托盘图标会切换窗口可见性 +- 右键单击托盘将打开菜单(如果有) + +在macOS上,如果没有附加的窗口,则托盘将使用显示菜单的默认方法(任何按钮)。如果有附加的窗口但没有菜单,则托盘将切换窗口,而不管按下的按钮如何。 + +## 插件 + +插件是扩展Wails应用程序功能的一种方式。 + +### 创建插件 + +插件是符合以下接口的标准Go结构: + +```go +type Plugin interface { + Name() string + Init(*application.App) error + Shutdown() + CallableByJS() []string + InjectJS() string +} +``` + +`Name()`方法返回插件的名称。这用于记录目的。 + +`Init(*application.App) error`方法在加载插件时调用。`*application.App`参数是加载插件的应用程序。任何错误都将阻止应用程序启动。 + +`Shutdown()`方法在应用程序关闭时调用。 + +`CallableByJS()`方法返回可以从前端调用的导出函数列表。这些方法名称必须与插件导出的方法名称完全匹配。 + +`InjectJS()`方法返回应注入到创建的所有窗口中的JavaScript。这对于添加与插件补充的自定义JavaScript函数很有用。 + +### 提示 + +#### 枚举 + +在Go中,枚举通常被定义为类型和一组常量。例如: + +```go +type MyEnum int + +const ( + MyEnumOne MyEnum = iota + MyEnumTwo + MyEnumThree +) +``` + +由于Go和JavaScript之间的不兼容性,无法以这种方式使用自定义类型。最好的策略是为float64使用类型别名: + +```go +type MyEnum = float64 + +const ( + MyEnumOne MyEnum = iota + MyEnumTwo + MyEnumThree +) +``` + +在Javascript中,您可以使用以下代码: + +```js +const MyEnum = { + MyEnumOne: 0, + MyEnumTwo: 1, + MyEnumThree: 2, +}; +``` + +- 为什么使用`float64`?不能使用`int`吗? + - 因为JavaScript没有“int”的概念。一切都是`number`,在Go中会转换为`float64`。Go的反射包中还有类型转换的限制,这意味着使用`int`是行不通的。 + +### BackgroundColour + +在v2中,这是指向`RGBA`结构的指针。在v3中,这是`RGBA`结构的值。 + +### WindowIsTranslucent + +已删除此标志。现在有一个`BackgroundType`标志,可用于设置窗口应具有的背景类型。此标志可以设置为以下任何值: + +- `BackgroundTypeSolid` - 窗口将具有实心背景 +- `BackgroundTypeTransparent` - 窗口将具有透明背景 +- `BackgroundTypeTranslucent` - 窗口将具有半透明背景 + +在Windows上,如果`BackgroundType`设置为`BackgroundTypeTranslucent`,则可以使用`WindowsWindow`选项中的`BackdropType`标志设置透明度的类型。这可以设置为以下任何值: + +- `Auto` - 窗口将使用系统确定的效果 +- `None` - 窗口没有背景 +- `Mica` - 窗口使用Mica效果 +- `Acrylic` - 窗口使用丙烯酸效果 +- `Tabbed` - 窗口使用选项卡效果 + +## Windows Application Options + +### WndProcInterceptor + +如果设置了此标志,将拦截WndProc并调用该函数。这允许您直接处理Windows消息。该函数应具有以下签名: + +```go +func(hwnd uintptr, msg uint32, wParam, lParam uintptr) (returnValue uintptr, shouldReturn) +``` + +如果`shouldReturn`值设置为`true`,则`returnValue`将由主wndProc方法返回。如果设置为`false`,将忽略返回值,并且消息将继续由主wndProc方法处理。 + +## 在关闭时隐藏窗口+OnBeforeClose + +在v2中,有一个`HideWindowOnClose`标志,用于在关闭窗口时隐藏窗口。`HideWindowOnClose`标志与`OnBeforeClose`回调之间存在逻辑重叠。在v3中,已删除`HideWindowOnClose`标志,并将`OnBeforeClose`回调重命名为`ShouldClose`。当用户尝试关闭窗口时,将调用`ShouldClose`回调。如果回调返回`true`,窗口将关闭。如果返回`false`,窗口将不会关闭。这可以用于隐藏窗口而不是关闭窗口。 + +## 窗口拖动 + +在v2中,使用`--wails-drag`属性来指示可以使用元素拖动窗口。在v3中,已将其替换为`--webkit-app-region`,以更符合其他框架处理方式。`--webkit-app-region`属性可以设置为以下任何值: + +- `drag` - 可使用该元素拖动窗口 +- `no-drag` - 该元素无法用于拖动窗口 + +我们本来希望使用`app-region`,但是在webkit在macOS上的`getComputedStyle`调用不支持它。 \ No newline at end of file diff --git a/mkdocs-website/docs/zh/development/introduction.md b/mkdocs-website/docs/zh/development/introduction.md new file mode 100644 index 000000000..8fdce44ca --- /dev/null +++ b/mkdocs-website/docs/zh/development/introduction.md @@ -0,0 +1,163 @@ +# 介绍 + +!!! note 这个指南仍在制作中。 + +感谢您想要帮助开发Wails!本指南将帮助您入门。 + +## 入门指南 + +- Git 克隆此存储库。切换到 `v3-alpha` 分支。 +- 安装 CLI:`cd v3/cmd/wails3 && go install` + +- 可选:如果您想要使用构建系统构建前端代码,您需要安装 [npm](https://nodejs.org/en/download)。 + +## 构建 + +对于简单的程序,您可以使用标准的 `go build` 命令。也可以使用 `go run`。 + +Wails 还配备了一个构建系统,可用于构建更复杂的项目。它使用了强大的 [Task](https://taskfile.dev) 构建系统。要了解更多信息,请查看任务主页或运行 `wails task --help`。 + +## 项目结构 + +该项目具有以下结构: + + ``` + v3 + ├── cmd/wails3 // CLI + ├── examples // Wails 应用示例 + ├── internal // 内部包 + | ├── runtime // Wails JS 运行时 + | └── templates // 支持的项目模板 + ├── pkg + | ├── application // 核心 Wails 库 + | └── events // 事件定义 + | └── mac // 由插件使用的 macOS 特定代码 + | └── w32 // Windows 特定代码 + ├── plugins // 支持的插件 + ├── tasks // 通用任务 + └── Taskfile.yaml // 开发任务配置 + ``` + +## 开发 + +### 添加窗口功能 + +添加窗口功能的首选方法是在 `pkg/application/webview_window.go` 文件中添加一个新函数。这应该实现所有平台所需的功能。任何特定于平台的代码都应通过 `webviewWindowImpl` 接口方法调用。该接口由每个目标平台实现,以提供平台特定的功能。在某些情况下,这可能不执行任何操作。添加接口方法后,请确保每个平台都实现了它。一个很好的例子是 `SetMinSize` 方法。 + +- Mac: `webview_window_darwin.go` +- Windows: `webview_window_windows.go` +- Linux: `webview_window_linux.go` + +大多数,如果不是全部,特定于平台的代码应在主线程上运行。为了简化这一点,在 `application.go` 中定义了一些 `invokeSync` 方法。 + +### 更新运行时 + +运行时位于 `v3/internal/runtime`。更新运行时时,需要执行以下步骤: + +```shell +wails3 task runtime:build +``` + +### 事件 + +事件定义在 `v3/pkg/events` 中。当添加新事件时,需要执行以下步骤: + +- 将事件添加到 `events.txt` 文件中 +- 运行 `wails3 task events:generate` + +有几种类型的事件:特定于平台的应用程序和窗口事件 + 通用事件。通用事件对于跨平台事件处理很有用,但您不必局限于“最低公共分母”。如果需要,可以使用特定于平台的事件。 + +添加通用事件时,请确保映射了特定于平台的事件。一个示例是在 `window_webview_darwin.go` 中: + +```go + // 将 ShouldClose 转化为通用的 WindowClosing 事件 + w.parent.On(events.Mac.WindowShouldClose, func(_ *WindowEventContext) { + w.parent.emit(events.Common.WindowClosing) + }) +``` + +注意:我们可能会尝试通过将映射添加到事件定义中来自动化此过程。 + +### 插件 + +插件是扩展 Wails 应用功能的一种方式。 + +#### 创建插件 + +插件是符合以下接口的标准 Go 结构: + +```go +type Plugin interface { + Name() string + Init(*application.App) error + Shutdown() + CallableByJS() []string + InjectJS() string +} +``` + +`Name()` 方法返回插件的名称。这用于日志记录。 + +`Init(*application.App) error` 方法在加载插件时调用。`*application.App` 参数是加载插件的应用程序。任何错误都将阻止应用程序启动。 + +`Shutdown()` 方法在应用程序关闭时调用。 + +`CallableByJS()` 方法返回可以从前端调用的导出函数列表。这些方法的名称必须与插件导出的方法的名称完全匹配。 + +`InjectJS()` 方法返回应注入到所有窗口中的 JavaScript。这对于添加与插件相补充的自定义 JavaScript 函数非常有用。 + +内置插件可以在 `v3/plugins` 目录中找到。参考它们以获得灵感。 + +## 任务 + +Wails CLI 使用 [Task](https://taskfile.dev) 构建系统。它作为库导入并用于运行 `Taskfile.yaml` 中定义的任务。与 Task 的主要交互发生在 `v3/internal/commands/task.go` 中。 + +### 升级 Taskfile + +要检查是否有 Taskfile 的升级,请运行 `wails3 task -version` 并检查 Task 网站。 + +要升级使用的 Taskfile 版本,请运行: + +```shell +wails3 task taskfile:upgrade +``` + +如果存在不兼容性,则应在 `v3/internal/commands/task.go` 文件中显示。 + +通常,修复不兼容性的最佳方法是克隆 `https://github.com/go-task/task` 上的任务存储库,并查看 git 历史记录以确定发生了什么变化以及原因。 + +要检查所有更改是否正确工作,请重新安装 CLI 并再次检查版本: + +```shell +wails3 task cli:install +wails3 task -version +``` + +## 打开 PR + +确保所有 PR 都有与之关联的工单,以提供更改的上下文。如果没有工单,请先创建一个。确保所有 PR 都已使用所做的更改更新了 CHANGELOG.md 文件。CHANGELOG.md 文件位于 `mkdocs-website/docs` 目录中。 + +## 其他任务 + +### 升级 Taskfile + +Wails CLI 使用 [Task](https://taskfile.dev) 构建系统。它作为库导入并用于运行 `Taskfile.yaml` 中定义的任务。与 Task 的主要交互发生在 `v3/internal/commands/task.go` 中。 + +要检查是否有 Taskfile 的升级,请运行 `wails3 task -version` 并检查 Task 网站。 + +要升级使用的 Taskfile 版本,请运行: + +```shell +wails3 task taskfile:upgrade +``` + +如果存在不兼容性,则应在 `v3/internal/commands/task.go` 文件中显示。 + +通常,修复不兼容性的最佳方法是克隆 `https://github.com/go-task/task` 上的任务存储库,并查看 git 历史记录以确定发生了什么变化以及原因。 + +要检查所有更改是否正确工作,请重新安装 CLI 并再次检查版本: + +```shell +wails3 task cli:install +wails3 task -version +``` \ No newline at end of file diff --git a/mkdocs-website/docs/zh/development/status.md b/mkdocs-website/docs/zh/development/status.md new file mode 100644 index 000000000..0e63bd3bb --- /dev/null +++ b/mkdocs-website/docs/zh/development/status.md @@ -0,0 +1,378 @@ +将以下文本翻译为中文,并不要翻译 `!!! note` 或 `!!! tip` 或以此格式的字符串: + +# 状态 + +v3版功能的状态。 + +!!! note + + 此列表包含公有和内部API支持的混合内容。
+ 它不完整且可能不是最新的。 + +## 已知问题 + +- Linux尚未与Windows/Mac达到功能平衡 + +## 应用程序 + +应用程序接口方法 + +| 方法 | Windows | Linux | Mac | 备注 | +|--------------------------------------------------------------|---------|-------|-----|-------| +| run() error | Y | Y | Y | | +| destroy() | | Y | Y | | +| setApplicationMenu(menu *Menu) | Y | Y | Y | | +| name() string | | Y | Y | | +| getCurrentWindowID() uint | Y | Y | Y | | +| showAboutDialog(name string, description string, icon []byte) | | Y | Y | | +| setIcon(icon []byte) | - | Y | Y | | +| on(id uint) | | | Y | | +| dispatchOnMainThread(fn func()) | Y | Y | Y | | +| hide() | Y | Y | Y | | +| show() | Y | Y | Y | | +| getPrimaryScreen() (*Screen, error) | | Y | Y | | +| getScreens() ([]*Screen, error) | | Y | Y | | + +## Webview 窗口 + +Webview 窗口接口方法 + +| 方法 | Windows | Linux | Mac | 备注 | +|--------------------------------------------------|---------|-------|-----|-----------------------------------------| +| center() | Y | Y | Y | | +| close() | y | Y | Y | | +| destroy() | | Y | Y | | +| execJS(js string) | y | Y | Y | | +| focus() | Y | Y | | | +| forceReload() | | Y | Y | | +| fullscreen() | Y | Y | Y | | +| getScreen() (*Screen, error) | y | Y | Y | | +| getZoom() float64 | | Y | Y | | +| height() int | Y | Y | Y | | +| hide() | Y | Y | Y | | +| isFullscreen() bool | Y | Y | Y | | +| isMaximised() bool | Y | Y | Y | | +| isMinimised() bool | Y | Y | Y | | +| maximise() | Y | Y | Y | | +| minimise() | Y | Y | Y | | +| nativeWindowHandle() (uintptr, error) | Y | Y | | | +| on(eventID uint) | y | | Y | | +| openContextMenu(menu *Menu, data *ContextMenuData) | y | | Y | | +| relativePosition() (int, int) | Y | Y | Y | | +| reload() | y | Y | Y | | +| run() | Y | Y | Y | | +| setAlwaysOnTop(alwaysOnTop bool) | Y | Y | Y | | +| setBackgroundColour(color RGBA) | Y | Y | Y | | +| setEnabled(bool) | | Y | Y | | +| setFrameless(bool) | | Y | Y | | +| setFullscreenButtonEnabled(enabled bool) | - | Y | Y | Windows 没有全屏按钮 | +| setHTML(html string) | Y | Y | Y | | +| setMaxSize(width, height int) | Y | Y | Y | | +| setMinSize(width, height int) | Y | Y | Y | | +| setRelativePosition(x int, y int) | Y | Y | Y | | +| setResizable(resizable bool) | Y | Y | Y | | +| setSize(width, height int) | Y | Y | Y | | +| setTitle(title string) | Y | Y | Y | | +| setURL(url string) | Y | Y | Y | | +| setZoom(zoom float64) | Y | Y | Y | | +| show() | Y | Y | Y | | +| size() (int, int) | Y | Y | Y | | +| toggleDevTools() | Y | Y | Y | | +| unfullscreen() | Y | Y | Y | | +| unmaximise() | Y | Y | Y | | +| unminimise() | Y | Y | Y | | +| width() int | Y | Y | Y | | +| zoom() | | Y | Y | | +| zoomIn() | Y | Y | Y | | +| zoomOut() | Y | Y | Y | | +| zoomReset() | Y | Y | Y | | + +## 运行时 + +### 应用程序 + +| 功能 | Windows | Linux | Mac | 备注 | +|-------|---------|-------|-----|-------| +| 退出 | Y | Y | Y | | +| 隐藏 | Y | | Y | | +| 显示 | Y | | Y | | + +### 对话框 + +| 功能 | Windows | Linux | Mac | 备注 | +|------------|---------|-------|-----|-------| +| 信息 | Y | Y | Y | | +| 警告 | Y | Y | Y | | +| 错误 | Y | Y | Y | | +| 问题 | Y | Y | Y | | +| 打开文件 | Y | | Y | | +| 保存文件 | Y | | Y | | + +### 剪贴板 + +| 功能 | Windows | Linux | Mac | 备注 | +|--------|---------|-------|-----|-------| +| 设置文本 | Y | | Y | | +| 文本 | Y | | Y | | + +### 上下文菜单 + +| 功能 | Windows | Linux | Mac | 备注 | +|----------------------|---------|-------|-----|-------| +| 打开上下文菜单 | Y | | Y | | +| 默认开启 | | | | | +| 通过 HTML 控制 | Y | | | | + +默认上下文菜单默认对所有`contentEditable: true`、``或`