From b7af2bd1ff05da168eb1b42e08582a45213da9e1 Mon Sep 17 00:00:00 2001 From: fofolee Date: Sat, 11 Jan 2025 20:24:46 +0800 Subject: [PATCH] =?UTF-8?q?MacOS=E4=B8=93=E5=8C=BA=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=AE=BF=E8=BE=BE=E7=AE=A1=E7=90=86=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=8E=B7=E5=8F=96=E9=80=89=E4=B8=AD=E9=A1=B9=EF=BC=8C?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=89=93=E5=BC=80=E7=9A=84=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=EF=BC=8C=E6=98=BE=E7=A4=BA=E9=9A=90=E8=97=8F=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E8=8E=B7=E5=8F=96=E7=AA=97=E5=8F=A3=E5=88=97=E8=A1=A8?= =?UTF-8?q?=EF=BC=8C=E6=BF=80=E6=B4=BB=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/lib/quickcomposer/macos/finder.js | 126 ++++++++---------- .../composer/param/ParamImporter.vue | 2 +- src/js/composer/commands/macosCommands.js | 99 +++----------- 3 files changed, 70 insertions(+), 157 deletions(-) diff --git a/plugin/lib/quickcomposer/macos/finder.js b/plugin/lib/quickcomposer/macos/finder.js index e958b15..d7c6b57 100644 --- a/plugin/lib/quickcomposer/macos/finder.js +++ b/plugin/lib/quickcomposer/macos/finder.js @@ -1,76 +1,47 @@ module.exports = { // 获取选中项 getSelection: async function () { - return await quickcommand.runAppleScript(` + const result = await quickcommand.runAppleScript(` tell application "Finder" set selectedItems to selection - set itemList to {} - repeat with theItem in selectedItems - set end of itemList to { - name: name of theItem, - path: POSIX path of (theItem as alias), - kind: kind of theItem, - size: size of theItem, - created: creation date of theItem, - modified: modification date of theItem - } + set json to "[" + repeat with i from 1 to count of selectedItems + set theItem to item i of selectedItems + set json to json & "{" + set json to json & "\\"name\\":\\"" & name of theItem & "\\"," + set json to json & "\\"path\\":\\"" & POSIX path of (theItem as alias) & "\\"," + set json to json & "\\"kind\\":\\"" & kind of theItem & "\\"," + set json to json & "\\"size\\":" & size of theItem & "," + set json to json & "\\"created\\":\\"" & creation date of theItem & "\\"," + set json to json & "\\"modified\\":\\"" & modification date of theItem & "\\"" + set json to json & "}" + if i < count of selectedItems then + set json to json & "," + end if end repeat - return itemList + set json to json & "]" + return json end tell `); + return JSON.parse(result); }, // 获取当前文件夹 getCurrentFolder: async function () { - return await quickcommand.runAppleScript(` + const result = await quickcommand.runAppleScript(` tell application "Finder" set currentFolder to (target of front window) as alias - return { - name: name of currentFolder, - path: POSIX path of currentFolder, - kind: kind of currentFolder, - created: creation date of currentFolder, - modified: modification date of currentFolder - } - end tell - `); - }, - - // 新建文件夹 - newFolder: async function (name) { - return await quickcommand.runAppleScript(` - tell application "Finder" - set currentFolder to (target of front window) as alias - make new folder at currentFolder with properties {name:"${name}"} - end tell - `); - }, - - // 移到废纸篓 - moveToTrash: async function () { - return await quickcommand.runAppleScript(` - tell application "Finder" - delete selection - end tell - `); - }, - - // 清空废纸篓 - emptyTrash: async function () { - return await quickcommand.runAppleScript(` - tell application "Finder" - empty trash - end tell - `); - }, - - // 显示包内容 - showPackageContents: async function (path) { - return await quickcommand.runAppleScript(` - tell application "Finder" - open package folder "${path}" + set json to "{" + set json to json & "\\"name\\":\\"" & name of currentFolder & "\\"," + set json to json & "\\"path\\":\\"" & POSIX path of currentFolder & "\\"," + set json to json & "\\"kind\\":\\"" & kind of currentFolder & "\\"," + set json to json & "\\"created\\":\\"" & creation date of currentFolder & "\\"," + set json to json & "\\"modified\\":\\"" & modification date of currentFolder & "\\"" + set json to json & "}" + return json end tell `); + return JSON.parse(result); }, // 设置显示隐藏文件 @@ -81,29 +52,38 @@ module.exports = { `); }, - // 设置显示路径栏 - setShowPathbar: async function (show) { - return await quickcommand.runAppleScript(` + // 获取窗口列表 + getWindows: async function () { + const result = await quickcommand.runAppleScript(` tell application "Finder" - set ShowPathbar to ${show} + set windowList to every window + set json to "[" + repeat with i from 1 to count of windowList + set theWindow to item i of windowList + set json to json & "{" + set json to json & "\\"name\\":\\"" & name of theWindow & "\\"," + set json to json & "\\"index\\":" & index of theWindow & "," + set json to json & "\\"bounds\\":\\"" & bounds of theWindow & "\\"," + set json to json & "\\"target\\":\\"" & POSIX path of (target of theWindow as alias) & "\\"" + set json to json & "}" + if i < count of windowList then + set json to json & "," + end if + end repeat + set json to json & "]" + return json end tell `); + return JSON.parse(result); }, - // 设置显示状态栏 - setShowStatusBar: async function (show) { + // 激活指定窗口 + activateWindow: async function (index) { return await quickcommand.runAppleScript(` tell application "Finder" - set StatusBar to ${show} - end tell - `); - }, - - // 设置显示预览面板 - setShowPreviewPane: async function (show) { - return await quickcommand.runAppleScript(` - tell application "Finder" - set PreviewPaneIsVisible to ${show} + activate + set theWindow to window ${index} + set index of theWindow to 1 end tell `); }, diff --git a/src/components/composer/param/ParamImporter.vue b/src/components/composer/param/ParamImporter.vue index 23503aa..53d04d2 100644 --- a/src/components/composer/param/ParamImporter.vue +++ b/src/components/composer/param/ParamImporter.vue @@ -43,7 +43,7 @@ export default defineComponent({ required: true, }, modelValue: { - type: [Object, String, Number, Array, Boolean], + type: null, required: true, }, }, diff --git a/src/js/composer/commands/macosCommands.js b/src/js/composer/commands/macosCommands.js index 9f56937..b0c45ae 100644 --- a/src/js/composer/commands/macosCommands.js +++ b/src/js/composer/commands/macosCommands.js @@ -288,7 +288,7 @@ export const macosCommands = { ], }, { - value: "quickcomposer.macos.finder", + value: "quickcomposer.macos.finder.getSelection", label: "访达管理", desc: "访达操作和文件管理功能", icon: "folder", @@ -297,61 +297,16 @@ export const macosCommands = { { value: "quickcomposer.macos.finder.getSelection", label: "获取选中项", - desc: "获取访达中当前选中的项目", icon: "select_all", }, { value: "quickcomposer.macos.finder.getCurrentFolder", - label: "获取当前文件夹", - desc: "获取访达当前打开的文件夹路径", + label: "获取打开的路径", icon: "folder_open", }, - { - value: "quickcomposer.macos.finder.newFolder", - label: "新建文件夹", - desc: "在当前位置创建新文件夹", - icon: "create_new_folder", - config: [ - { - key: "name", - label: "文件夹名称", - component: "TextInput", - width: 12, - placeholder: "新建文件夹", - }, - ], - }, - { - value: "quickcomposer.macos.finder.moveToTrash", - label: "移到废纸篓", - desc: "将选中项目移动到废纸篓", - icon: "delete", - }, - { - value: "quickcomposer.macos.finder.emptyTrash", - label: "清空废纸篓", - desc: "清空废纸篓", - icon: "delete_forever", - }, - { - value: "quickcomposer.macos.finder.showPackageContents", - label: "显示包内容", - desc: "显示应用程序包内容", - icon: "folder_zip", - config: [ - { - key: "path", - label: "应用路径", - component: "FilePicker", - width: 12, - placeholder: "选择应用程序", - }, - ], - }, { value: "quickcomposer.macos.finder.setShowHiddenFiles", label: "显示隐藏文件", - desc: "设置是否显示隐藏文件", icon: "visibility", config: [ { @@ -364,47 +319,25 @@ export const macosCommands = { ], }, { - value: "quickcomposer.macos.finder.setShowPathbar", - label: "显示路径栏", - desc: "设置是否显示路径栏", - icon: "wrap_text", - config: [ - { - key: "show", - label: "显示", - component: "CheckButton", - width: 12, - defaultValue: true, - }, - ], + value: "quickcomposer.macos.finder.getWindows", + label: "获取窗口列表", + desc: "获取所有访达窗口信息", + icon: "window", }, { - value: "quickcomposer.macos.finder.setShowStatusBar", - label: "显示状态栏", - desc: "设置是否显示状态栏", - icon: "info", + value: "quickcomposer.macos.finder.activateWindow", + label: "激活窗口", + desc: "激活指定的访达窗口", + icon: "open_in_new", config: [ { - key: "show", - label: "显示", - component: "CheckButton", + key: "index", + label: "窗口索引", + component: "NumberInput", + icon: "window", + min: 1, + defaultValue: 1, width: 12, - defaultValue: true, - }, - ], - }, - { - value: "quickcomposer.macos.finder.setShowPreviewPane", - label: "显示预览面板", - desc: "设置是否显示预览面板", - icon: "preview", - config: [ - { - key: "show", - label: "显示", - component: "CheckButton", - width: 12, - defaultValue: true, }, ], },