对话框管理 (Dialogs)
zero-native 提供了原生的文件与消息对话框,可以通过 Zig 中的 PlatformServices 访问,也可以在 JavaScript 中通过内置的桥接进行调用。
打开文件对话框 (Open File Dialog)
| 字段 | 类型 | 默认值 |
|---|---|---|
title | []const u8 | "" |
default_path | []const u8 | "" |
filters | []const FileFilter | &. |
allow_directories | bool | false |
allow_multiple | bool | false |
返回一个包含选择数量(count)和路径(paths)的 OpenDialogResult。
保存文件对话框 (Save File Dialog)
| 字段 | 类型 | 默认值 |
|---|---|---|
title | []const u8 | "" |
default_path | []const u8 | "" |
default_name | []const u8 | "" |
filters | []const FileFilter | &. |
返回一个可选的路径字符串(如取消选择则返回 null)。
消息对话框 (Message Dialog)
| 字段 | 类型 | 默认值 |
|---|---|---|
style | MessageDialogStyle | .info |
title | []const u8 | "" |
message | []const u8 | "" |
informative_text | []const u8 | "" |
primary_button | []const u8 | "OK" |
secondary_button | []const u8 | "" |
tertiary_button | []const u8 | "" |
MessageDialogStyle:info(信息),warning(警告),critical(严重)MessageDialogResult:primary(首要按钮),secondary(次要按钮),tertiary(第三按钮)
文件过滤器 (FileFilter)
zig
const filters = [_]zero_native.FileFilter{
.{ .name = "Images", .extensions = &.{ "png", "jpg", "gif" } },
.{ .name = "All Files", .extensions = &.{ "*" } },
};在 JavaScript 中使用
对话框需要显式启用内置桥接(Builtin Bridge)策略。JSON 字段名称使用小驼峰(camelCase)写法:
javascript
const files = await window.zero.invoke("zero-native.dialog.openFile", {
title: "Select a file",
defaultPath: "/home",
allowMultiple: true,
allowDirectories: false,
});
const path = await window.zero.invoke("zero-native.dialog.saveFile", {
title: "Save as",
defaultName: "untitled.txt",
});
const result = await window.zero.invoke("zero-native.dialog.showMessage", {
style: "warning",
title: "Confirm",
message: "Delete this item?",
informativeText: "This action cannot be undone.",
primaryButton: "Delete",
secondaryButton: "Cancel",
});