Scratch Calculator

A paper-like multi-line calculator: evaluate as you type, keep a draft history, add notes to each line, copy results or export the sheet as an image, with local draft management and dark mode.

by Tioit-Wang·v0.3.0 Official catalog

About this plugin

草稿计算器

PI-Desktop 插件:草稿纸式多行演算计算器,干净利落的直角风格,左右布局:左当前草稿、右草稿列表

界面

  • 固定窗口尺寸(700×500,不可缩放,内容完整显示的最小尺寸);左右布局:左当前草稿、右草稿列表;
  • 左栏 = 当前草稿:顶部输入卡片 + 「本次草稿」分隔线 + 本稿历史卡片(新→旧向下排,可滚动);底部按钮居中清空 / 锁定 / 复制为图片 / 夜间(均为无边框按钮,图标使用 Lucide——与 PI-Desktop 主程序同款图标库,随插件打包,不依赖外部网络);
  • 右栏 = 历史区域(草稿列表,宽度足够显示完整日期时间名):点击切换当前草稿,底部 + 新建草稿⚙ 管理(icon 按钮);窄窗口(<560px)自动上下堆叠;
  • 所有按钮均为无边框款式(悬停变色),直角卡片、黑白灰配色、system-ui 字体;支持黑夜/白天模式:默认跟随系统,底部「夜间」按钮手动切换(偏好本地保存)。

单个计算卡片

  • 第一行:公式,靠左、整行宽、自动换行;
  • 第二行:备注(默认空,悬停显示「点击添加备注」,点击即可输入、支持换行、失焦自动保存)+ 结果固定靠右(灰色 = 前缀,点击复制结果);
  • 输入卡片实时计算:边输入边显示 = 结果,出错时红色提示原因。

交互

  • 回车确认:当前输入行成为本稿历史第 1 条(最新置顶),输入区自动带入上一步结果可继续链式计算(1+2 回车得 3,再 *4 回车得 12);纯数字回车不记录;
  • 点击历史公式:回填到输入区继续修改;点击结果:一键复制;
  • Esc:清空输入公式与备注(备注区 Esc 还原);
  • 🔒 锁定 / 解锁(只锁当前记录):锁定只作用于当前草稿——输入/备注只读、回车不计算、历史回填与清空禁用;右侧新建、切换、管理删除不受影响;锁定状态随草稿保存,列表中的锁定草稿显示小锁标记,切换到其他草稿后自动恢复可编辑;再点一次解锁;
  • 清空:两段式确认后清空当前草稿(历史 + 输入);
  • 复制为图片:把当前草稿(含未提交的输入行、备注、结果)绘制成 PNG 复制到剪贴板;若环境不支持直接复制图片,弹出预览可右键另存;
  • 草稿管理:+ 新建草稿以完整时间命名(如 2026-08-13 14:32:05,不可修改;旧数据自动补全);点击列表项切换草稿(切换/新建前会自动把输入区有效内容提交进原草稿,不丢数据);⚙ 管理模式下每条出现 × 可删除草稿,删光后自动补一份空草稿;
  • 多窗口自动同步;数据全部保存在本机 localStorage(每稿最多 200 行、最多 100 份草稿)。

支持的公式语法

  • 四则运算:+ - * /,兼容全角 + - × ÷( )% 与全角数字、小数点;
  • 百分比100+10% = 110200×5% = 1050% = 0.5(Windows 计算器语义,对当前累计值取百分比);
  • 括号任意嵌套;乘方 ^ 右结合(2^3^2 = 512),支持负指数,** 亦可;
  • 一元正负号:-33*-2-(2+3)-2^2 = -4);
  • 隐式乘法:2(3+1)(2)(3);常量 πe
  • 小数与科学计数法:0.1+0.2 = 0.3,超大/超小结果自动用 e 记数;
  • 尾部运算符容错:10+88+ 回车得 98,历史记干净公式;非运算字符(字母、@ 等)报错提示。

开发

  1. 打开 Plugins 页面,用 Load development plugin 指向本目录,保存文件后插件自动重载;
  2. 命令面板执行「草稿计算器:打开面板」;
  3. 校验与打包:
pnpm pi-plugin check .
pnpm pi-plugin pack .
# 写入 dist/pi.scratch-calc-0.2.0.piplug

实现说明

  • 求值器为手写 tokenizer + 递归下降解析器,内嵌于 renderer/index.html,无第三方依赖;
  • 复制为图片由 canvas 手绘实现(文本换行、卡片布局与界面一致),无第三方库;
  • 纯前端:无网络请求、无文件访问;旧版单稿历史(v1)首次启动自动迁移为首份草稿。