自定义 Excalidraw 脚本 - 默认应用打开图片

自定义 Excalidraw 脚本 - 默认应用打开图片

该片段在 自定义Excalidraw脚本-建立库外Eagle素材库的连接 中有过介绍,这里单独分离出一篇文章来介绍了。

OpenSelectImage 脚本

OpenSelectImage

默认软件打开画板中选中的图片,适用于当您想用默认软件编辑笔记画板中的图片时,采用的一个快捷方式。
自定义 Excalidraw 脚本 - 默认应用打开图片--OpenSelectImage 脚本

设置不同软件打开

在 Excalidraw 插件设置里面可以设置参数,除了默认应用打开外,还可以自定义多个不同软件打开:

自定义 Excalidraw 脚本 - 默认应用打开图片--设置不同软件打开

自定义 Excalidraw 脚本 - 默认应用打开图片--设置不同软件打开

脚本安装

脚本安装可以根据源码来安装,也可以通过 Excalidraw 插件提供的脚本安装代码块来安装

  • 代码块链接方法:
    • 优点:一键安装脚本和图标,操作方便,后续脚本更新可以检测
    • 缺点:国内需要可访问 GitHub 的网络
  • 源码拷贝方式:
    • 优点:不需要特殊网络
    • 缺点:需要手动复制源码,这个过程很容易出问题,没有图标,脚本更新无法检测…

PS:之后我的脚本更新或者 BUG 修复,可能不会更新到网站,而是直接更新到 GitHub,因为这样对我来说比较方便点而且快速点。

代码块链接方法

```excalidraw-script-install
https://raw.githubusercontent.com/PandaNocturne/ExcalidrawScripts/master/PandaScripts/OpenSelectImage.md
```

将上述代码块放到一个 md 文件,阅读模式下该代码块会显示为 安装脚本的按钮,点击安装之后,更新为脚本已是最新 - 点击重新安装,即当前脚本已经安装,在 Excalidraw 画布界面的侧边Obsidian 工具面板中可以查看。

源码拷贝方式

/*
 * @Author: 熊猫别熬夜 
 * @Date: 2024-03-11 23:41:55 
 * @Last Modified by:   熊猫别熬夜 
 * @Last Modified time: 2024-03-11 23:41:55 
 */

await ea.addElementsToView();
const { exec } = require('child_process');

// 设置 quickerInsetNote 模板设置
let settings = ea.getScriptSettings();
//set default values on first run
if (!settings["OpenSelectImage"]) {
  settings = {
    "OpenSelectImage": {
      value: "D:\\FastStone Image Viewer\\FSViewer.exe",
      height: "250px",
      description: "其他默认图片编辑软件路径,以换行分隔"
    },
  };
  ea.setScriptSettings(settings);
}

const img = ea.getViewSelectedElements().filter(el => el.type === "image");
if (img.length === 0) {
  new Notice("No image is selected");
  return;
}

let choices = settings["OpenSelectImage"].value.split("\n");
choices.unshift("默认", "打开文件夹");
const choice = await utils.suggester(choices.map(i => i.split("\\").at(-1).replace("\.exe", "")), choices, "图片打开的方式");
if (!choice) return;

for (i of img) {
  const currentPath = ea.plugin.filesMaster.get(i.fileId).path;
  const file = app.vault.getAbstractFileByPath(currentPath);
  if (!file) {
    new Notice("Can't find file: " + currentPath);
    continue;
  }

  const filePath = file.path;
  if (choice === choices[0]) {
    // 用默认应用打开
    app.openWithDefaultApp(filePath);
  } else if (choice === choices[1]) {
    // 使用打开当前笔记文件夹
    app.showInFolder(filePath);
  } else {
    // 获取库的基本路径
    const fileBasePath = file.vault.adapter.basePath;
    // 获取文件的完整路径
    const fileFullPath = `${fileBasePath}/${filePath}`;
    exec(`"${choice}" "${fileFullPath}"`, (error, stdout, stderr) => {
      if (error) {
        new Notice(`Error opening file: ${error.message}`);
        return;
      }
      if (stderr) {
        new Notice(`Error opening file: ${stderr}`);
        return;
      }
      new Notice(`File opened with ${choice}`);
    });
  }
}

ChangeLog

  • 2024-03-11:设置选项框,除了默认应用打开外,还可以自定义多个不同软件打开

讨论

若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。



反馈交流

其他渠道

版权声明