Files
ctbjrj/tools/ribbon_add_icons.py
T

47 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
"""把 24 个按钮的 Image 行(FromFile 形态)写进 MainForm.Designer.cs——设计器里直接显示图标。
锚定 .Name = "原字段名" 行(SD 重序列化后变量名是 ribbonButtonN,不能依赖变量名),Image 紧随其后。
路径用本机绝对路径(设计器进程 CWD 不可控);FromFile 找不到文件返回 null 不抛异常,
换机后设计器只是不画图,运行时由 MainForm.cs 用 BaseDirectory 兜底。幂等。"""
import io
import os
import re
ROOT = r"C:\Users\099978\Documents\SharpDevelop Projects\成套报价软件"
DSG = os.path.join(ROOT, "成套报价软件", "MainForm.Designer.cs")
ICON_DIR = os.path.join(ROOT, "成套报价软件", "bin", "Debug", "icons")
BIND = {
"button1": "new-project", "button2": "edit-project", "button3": "delete-project",
"button4": "open-project", "button5": "copy-project", "button7": "export-project",
"button8": "import-project", "button9": "open-quote", "button10": "edit-quote",
"button17": "save", "button18": "import-quote", "button16": "report",
"button15": "busbar", "button13": "factor", "button33": "sort-components",
"button29": "template-cost", "button11": "cad-grab",
"btn登录": "login", "btn修改密码": "password", "btn会员信息": "member",
"btn企业信息": "company", "btn保存布局": "save-layout",
"btn备份": "backup", "btn恢复": "restore",
}
s = io.open(DSG, encoding="utf-8-sig").read()
if ".Image = Smart.CustomComponents.RibbonButton.FromFile(" in s:
print("Image 行已存在,跳过")
else:
lines = s.split("\n")
out = []
n = 0
name_re = re.compile(r'^\t\t\t([A-Za-z0-9_]+)\.Name = "([^"]+)";')
for line in lines:
out.append(line)
m = name_re.match(line)
if m:
var, btn = m.group(1), m.group(2)
if btn in BIND:
png = os.path.join(ICON_DIR, BIND[btn] + ".png")
out.append('\t\t\t%s.Image = Smart.CustomComponents.RibbonButton.FromFile("%s");'
% (var, png.replace("\\", "\\\\")))
n += 1
assert n == 24, "只锚定 %d 个按钮(期望 24)" % n
io.open(DSG, "w", encoding="utf-8-sig").write("\n".join(out))
print("Designer.cs 已插入 %d 行 Image(FromFile)" % n)