用户交互分类添加系统级弹窗

This commit is contained in:
fofolee 2025-01-12 23:05:56 +08:00
parent 90e8ec7ff1
commit 4053f7a9c2
2 changed files with 174 additions and 67 deletions

View File

@ -470,24 +470,29 @@ const showSystemSelectList = async function (items, title = "") {
}; };
// 系统级按钮组弹窗 // 系统级按钮组弹窗
const showSystemButtonBox = async function (buttons, content, title = "") { const showSystemButtonBox = async function (buttons, content = "", title = "") {
const iconPath = getQuickcommandIconPath(); const iconPath = getQuickcommandIconPath();
if (window.utools.isMacOs()) { if (window.utools.isMacOs()) {
let iconParam = "note"; try {
if (iconPath) { let iconParam = "note";
const posixPath = iconPath.replace(/\\/g, "/"); if (iconPath) {
iconParam = `alias POSIX file "${posixPath}"`; const posixPath = iconPath.replace(/\\/g, "/");
iconParam = `alias POSIX file "${posixPath}"`;
}
const buttonList = buttons.map((btn) => `"${btn}"`).join(", ");
const script = `display dialog "${content}" with title "${title}" buttons {${buttonList}} default button "${buttons[0]}" with icon ${iconParam}`;
const result = await this.runAppleScript(script);
const match = result.match(/button returned:(.+)/);
if (match) {
const text = match[1];
const id = buttons.findIndex((btn) => btn === text);
return { id, text };
}
return null;
} catch (error) {
window.utools.showNotification(error);
throw error;
} }
const buttonList = buttons.map((btn) => `"${btn}"`).join(", ");
const script = `display dialog "${content}" with title "${title}" buttons {${buttonList}} default button "${buttons[0]}" with icon ${iconParam}`;
const result = await this.runAppleScript(script);
const match = result.match(/button returned:(.+)/);
if (match) {
const text = match[1];
const id = buttons.findIndex((btn) => btn === text);
return { id, text };
}
return null;
} else if (window.utools.isWindows()) { } else if (window.utools.isWindows()) {
const escapedIconPath = iconPath ? iconPath.replace(/\\/g, "\\\\") : null; const escapedIconPath = iconPath ? iconPath.replace(/\\/g, "\\\\") : null;
const csharpScript = ` const csharpScript = `

View File

@ -79,7 +79,6 @@ const DIALOG_CONFIG = {
extensions: { extensions: {
label: "扩展名", label: "扩展名",
noIcon: true, noIcon: true,
width: 7,
disableToggleType: true, disableToggleType: true,
options: { options: {
items: ["*", "jpg", "png", "gif", "txt", "json", "exe"], items: ["*", "jpg", "png", "gif", "txt", "json", "exe"],
@ -126,6 +125,24 @@ export const uiCommands = {
], ],
defaultRowValue: newVarInputVal("str"), defaultRowValue: newVarInputVal("str"),
}, },
{
label: "标题",
component: "VariableInput",
defaultValue: newVarInputVal("str", "请选择"),
width: 12,
},
],
subCommands: [
{
value: "quickcommand.showButtonBox",
icon: "call_to_action",
label: "插件内弹窗",
},
{
value: "quickcommand.showSystemButtonBox",
icon: "report",
label: "系统弹窗",
},
], ],
}, },
{ {
@ -134,42 +151,79 @@ export const uiCommands = {
isAsync: true, isAsync: true,
outputVariable: "[inputValue1]", outputVariable: "[inputValue1]",
saveOutput: true, saveOutput: true,
width: 12, subCommands: [
config: [
{ {
label: "输入框", value: "quickcommand.showInputBox",
component: "ArrayEditor", icon: "call_to_action",
width: 12, label: "插件内弹窗",
columns: { config: [
label: {
label: "标签",
},
value: {
label: "默认值",
},
},
defaultValue: [
{ {
label: newVarInputVal("str", "请输入"), label: "输入框",
value: newVarInputVal("str"), component: "ArrayEditor",
width: 12,
columns: {
label: {
label: "标签",
},
value: {
label: "默认值",
},
},
defaultValue: [
{
label: newVarInputVal("str", "请输入"),
value: newVarInputVal("str"),
},
],
}, },
], ],
}, },
{ {
label: "标题", value: "quickcommand.showSystemInputBox",
component: "VariableInput", icon: "report",
defaultValue: newVarInputVal("str"), label: "系统弹窗",
width: 12, config: [
{
label: "提示信息",
component: "ArrayEditor",
width: 12,
},
{
label: "标题",
component: "VariableInput",
defaultValue: newVarInputVal("str", "请输入"),
width: 12,
},
],
}, },
], ],
}, },
{ {
value: "quickcommand.showSelectList", value: "quickcommand.showSelectList",
label: "选择列表", label: "uTools选择列表",
desc: "显示一个支持搜索的选项列表,可以动态更新选项", desc: "显示一个支持搜索的选项列表,可以动态更新选项",
component: "SelectListEditor", component: "SelectListEditor",
isAsync: true, isAsync: true,
}, },
{
value: "quickcommand.showSystemSelectList",
label: "系统选择列表",
desc: "选择列表(系统)",
isAsync: true,
config: [
{
label: "选项",
component: "ArrayEditor",
width: 12,
},
{
label: "标题",
component: "VariableInput",
defaultValue: newVarInputVal("str", "请选择"),
width: 12,
},
],
},
{ {
value: "quickcommand.showTextArea", value: "quickcommand.showTextArea",
label: "文本框", label: "文本框",
@ -191,6 +245,18 @@ export const uiCommands = {
width: 6, width: 6,
}, },
], ],
subCommands: [
{
value: "quickcommand.showTextArea",
icon: "call_to_action",
label: "插件内弹窗",
},
{
value: "quickcommand.showSystemTextArea",
icon: "report",
label: "系统弹窗(Mac不支持)",
},
],
}, },
{ {
value: "quickcommand.showMessageBox", value: "quickcommand.showMessageBox",
@ -205,26 +271,48 @@ export const uiCommands = {
defaultValue: newVarInputVal("str", "这是一条提示消息"), defaultValue: newVarInputVal("str", "这是一条提示消息"),
width: 12, width: 12,
}, },
],
subCommands: [
{ {
label: "图标类型", value: "quickcommand.showMessageBox",
component: "q-select", icon: "call_to_action",
defaultValue: "success", label: "插件内弹窗",
icon: "lightbulb", config: [
width: 6, {
options: [ label: "图标类型",
{ label: "成功", value: "success" }, component: "q-select",
{ label: "错误", value: "error" }, defaultValue: "success",
{ label: "警告", value: "warning" }, icon: "lightbulb",
{ label: "信息", value: "info" }, width: 6,
options: [
{ label: "成功", value: "success" },
{ label: "错误", value: "error" },
{ label: "警告", value: "warning" },
{ label: "信息", value: "info" },
],
},
{
label: "显示时间(ms)",
component: "NumberInput",
min: 0,
step: 100,
width: 6,
placeholder: "0为手动关闭留空按文本长度调整",
},
], ],
}, },
{ {
label: "显示时间(ms)", value: "quickcommand.showSystemMessageBox",
component: "NumberInput", icon: "report",
min: 0, label: "系统弹窗",
step: 100, config: [
width: 6, {
placeholder: "0为手动关闭留空按文本长度调整", label: "标题",
component: "VariableInput",
defaultValue: newVarInputVal("str", "提示"),
width: 12,
},
],
}, },
], ],
}, },
@ -246,22 +334,36 @@ export const uiCommands = {
label: "标题", label: "标题",
component: "VariableInput", component: "VariableInput",
defaultValue: newVarInputVal("str", "提示"), defaultValue: newVarInputVal("str", "提示"),
width: 7, width: 12,
},
],
subCommands: [
{
value: "quickcommand.showConfirmBox",
icon: "call_to_action",
label: "插件内弹窗",
config: [
{
label: "支持HTML",
component: "CheckButton",
defaultValue: false,
width: 6,
},
{
label: "宽度",
component: "NumberInput",
min: 0,
step: 100,
defaultValue: 450,
width: 6,
placeholder: "对话框宽度",
},
],
}, },
{ {
label: "支持HTML", value: "quickcommand.showSystemConfirmBox",
component: "q-toggle", icon: "report",
defaultValue: false, label: "系统弹窗",
width: 2,
},
{
label: "宽度",
component: "NumberInput",
min: 0,
step: 100,
defaultValue: 450,
width: 3,
placeholder: "对话框宽度",
}, },
], ],
}, },