编排补全uTools接口,新增获取选中文件、图片、文字

This commit is contained in:
fofolee 2025-01-10 22:35:19 +08:00
parent bf5a2306d0
commit e7da2d3a26
7 changed files with 284 additions and 0 deletions

View File

@ -9,6 +9,7 @@ const quickcomposer = {
audio: require("./quickcomposer/audio"), audio: require("./quickcomposer/audio"),
image: require("./quickcomposer/image"), image: require("./quickcomposer/image"),
windows: require("./quickcomposer/windows"), windows: require("./quickcomposer/windows"),
status: require("./quickcomposer/status"),
}; };
module.exports = quickcomposer; module.exports = quickcomposer;

View File

@ -0,0 +1,115 @@
const { clipboard } = require("electron");
/**
* 获取当前选中的文本
* @returns {Promise<string>} 选中的文本内容
*/
function text() {
window.utools.hideMainWindow();
// 保存当前剪贴板内容
const originalText = clipboard.readText();
// 模拟 Ctrl+C/Command+C 复制操作
if (process.platform === "darwin") {
utools.simulateKeyboardTap("c", "command");
} else {
utools.simulateKeyboardTap("c", "control");
}
// 等待一小段时间确保复制完成
return new Promise((resolve) => {
setTimeout(() => {
// 获取选中的文本
const selectedText = clipboard.readText();
// 恢复原始剪贴板内容
clipboard.writeText(originalText);
resolve(selectedText);
}, 100);
});
}
/**
* 获取当前选中的图片
* @returns {Promise<string>} 选中的图片的base64数据
*/
function image() {
window.utools.hideMainWindow();
// 保存当前剪贴板内容
const originalImage = clipboard.readImage();
// 模拟 Ctrl+C/Command+C 复制操作
if (process.platform === "darwin") {
utools.simulateKeyboardTap("c", "command");
} else {
utools.simulateKeyboardTap("c", "control");
}
return new Promise((resolve, reject) => {
setTimeout(() => {
try {
// 获取剪贴板中的图片
const image = clipboard.readImage();
if (image.isEmpty()) {
// 恢复原始剪贴板内容
if (!originalImage.isEmpty()) {
clipboard.writeImage(originalImage);
}
resolve(null);
return;
}
// 将图片转换为 base64
const base64 = image.toDataURL();
// 恢复原始剪贴板内容
if (!originalImage.isEmpty()) {
clipboard.writeImage(originalImage);
}
resolve(base64);
} catch (error) {
reject(error);
}
}, 100);
});
}
/**
* 获取当前选中的文件
* @returns {Promise<string[]>} 选中的文件路径数组
*/
function files() {
window.utools.hideMainWindow();
// 保存当前剪贴板内容
const originalFiles = utools.getCopyedFiles();
// 模拟 Ctrl+C/Command+C 复制操作
if (process.platform === "darwin") {
utools.simulateKeyboardTap("c", "command");
} else {
utools.simulateKeyboardTap("c", "control");
}
return new Promise((resolve) => {
setTimeout(() => {
// 获取选中的文件
const selectedFiles = utools.getCopyedFiles();
// 恢复原始剪贴板内容
if (originalFiles && originalFiles.length > 0) {
utools.copyFile(originalFiles);
}
resolve(selectedFiles || []);
}, 100);
});
}
module.exports = {
text,
image,
files,
};

View File

@ -0,0 +1,7 @@
const getSelected = require("./getSelected");
module.exports = {
getSelectedText: getSelected.text,
getSelectedImage: getSelected.image,
getSelectedFiles: getSelected.files,
};

View File

@ -15,11 +15,13 @@ import { screenCommands } from "./screenCommands";
import { audioCommands } from "./audioCommands"; import { audioCommands } from "./audioCommands";
import { imageCommands } from "./imageCommands"; import { imageCommands } from "./imageCommands";
import { windowsCommands } from "./windowsCommands"; import { windowsCommands } from "./windowsCommands";
import { statusCommands } from "./statusCommands";
let commands = [ let commands = [
fileCommands, fileCommands,
networkCommands, networkCommands,
systemCommands, systemCommands,
statusCommands,
audioCommands, audioCommands,
imageCommands, imageCommands,
notifyCommands, notifyCommands,

View File

@ -0,0 +1,51 @@
export const statusCommands = {
label: "获取状态",
icon: "task",
commands: [
{
value: "utools.readCurrentFolderPath",
label: "获取当前文件管理器路径",
desc: "获取当前文件管理器窗口路径",
icon: "folder",
isAsync: true,
outputVariable: "currentFolderPath",
saveOutput: true,
},
{
value: "utools.readCurrentBrowserUrl",
label: "获取当前浏览器地址",
desc: "获取当前浏览器窗口URL",
icon: "language",
isAsync: true,
outputVariable: "currentBrowserUrl",
saveOutput: true,
},
{
value: "quickcomposer.status.getSelectedText",
label: "获取选中文本",
desc: "获取选中的文本",
icon: "text_fields",
isAsync: true,
outputVariable: "selectedText",
saveOutput: true,
},
{
value: "quickcomposer.status.getSelectedImage",
label: "获取选中的图片",
desc: "获取选中的图片",
icon: "image",
isAsync: true,
outputVariable: "selectedImage",
saveOutput: true,
},
{
value: "quickcomposer.status.getSelectedFiles",
label: "获取选中的文件",
desc: "获取选中的文件",
icon: "file_present",
isAsync: true,
outputVariable: "selectedFiles",
saveOutput: true,
},
],
};

View File

@ -113,6 +113,100 @@ export const systemCommands = {
icon: "terminal", icon: "terminal",
isAsync: true, isAsync: true,
}, },
{
value: "utools.getPath",
label: "获取系统路径",
desc: "获取系统路径",
outputVariable: "systemPath",
saveOutput: true,
defaultValue: "home",
config: [
{
label: "路径类型",
component: "ButtonGroup",
options: [
{
label: "用户主目录",
value: "home",
},
{
label: "应用数据目录",
value: "appData",
},
{
label: "用户数据目录",
value: "userData",
},
{
label: "缓存目录",
value: "cache",
},
{
label: "临时目录",
value: "temp",
},
{
label: "桌面",
value: "desktop",
},
{
label: "文档",
value: "documents",
},
{
label: "下载",
value: "downloads",
},
{
label: "音乐",
value: "music",
},
{
label: "图片",
value: "pictures",
},
{
label: "视频",
value: "videos",
},
{
label: "uTools日志目录",
value: "logs",
},
{
label: "uTools程序目录",
value: "exe",
},
{
label: "uTools模块目录",
value: "module",
},
],
},
],
},
{
value: "utools.isMacOS",
label: "判断系统类型",
desc: "判断系统类型",
subCommands: [
{
value: "utools.isMacOS",
label: "是否Mac",
icon: "computer",
},
{
value: "utools.isWindows",
label: "是否Windows",
icon: "computer",
},
{
value: "utools.isLinux",
label: "是否Linux",
icon: "computer",
},
],
},
{ {
value: "quickcomposer.system.os.arch", value: "quickcomposer.system.os.arch",
label: "系统信息", label: "系统信息",

View File

@ -183,5 +183,19 @@ export const utoolsCommands = {
outputVariable: "windowType", outputVariable: "windowType",
saveOutput: true, saveOutput: true,
}, },
{
value: "utools.getNativeId",
label: "获取本地ID",
desc: "获取本地ID",
outputVariable: "nativeId",
saveOutput: true,
},
{
value: "utools.getAppVersion",
label: "获取uTools版本",
desc: "获取uTools版本",
outputVariable: "appVersion",
saveOutput: true,
},
], ],
}; };