[AAuto] 纯文本查看 复制代码
import win.ui;
/*DSG{{*/
var winform = win.form(text="字体修改工具";right=1170;bottom=741)
winform.add(
["btn_删除字体文件"]={cls="button";text="删除字体文件";left=462;top=38;right=550;bottom=68;z=13};
["btn_添加字体文件"]={cls="button";text="添加字体文件";left=462;top=9;right=550;bottom=39;z=4};
["btn_清除无效字体文件"]={cls="button";text="清除无效字体文件";left=343;top=38;right=462;bottom=68;z=12};
["btn_选择字体文件路径"]={cls="button";text="选择字体文件路径";left=343;top=9;right=462;bottom=39;z=1};
["btn_重命名全部字体文件"]={cls="button";text="重命名全部字体文件";left=270;top=669;right=549;bottom=730;z=6};
["btn_重命名选择的字体文件"]={cls="button";text="重命名选择的字体文件";left=5;top=669;right=269;bottom=730;z=5};
["edit_字体名称"]={cls="edit";left=345;top=629;right=544;bottom=654;edge=1;multiline=1;readonly=1;z=8};
["edit_文件名"]={cls="edit";left=69;top=629;right=257;bottom=654;edge=1;multiline=1;readonly=1;z=7};
["edit_路径"]={cls="edit";left=5;top=9;right=341;bottom=39;edge=1;multiline=1;z=2};
["listbox_字体"]={cls="listbox";left=5;top=78;right=549;bottom=622;edge=1;items={};vscroll=1;z=3};
["re_字体详情"]={cls="richedit";left=562;top=1;right=1168;bottom=730;edge=1;multiline=1;z=11};
static={cls="static";text="文件名";left=15;top=632;right=72;bottom=657;center=1;transparent=1;z=9};
static2={cls="static";text="字体名称";left=278;top=631;right=335;bottom=656;center=1;transparent=1;z=10}
)
/*}}*/
import fsys;
import fsys.dlg;
import fsys.dlg.dir;
import fsys.path;
//import console;
import win.font;
//io.open();
func_文件列表去重 = function() {
var tab = winform.listbox_字体.items;
var rst = {}
// 去重
if(#tab) {
tab = table.unique(tab)
// 去除无效路径 winform.listbox_字体.items
for k, v in tab {
if(!io.exist(v)) {
table.remove(tab, k)
winform.re_字体详情.print("删除 ->",k, v)
//console.dumpJson(tab);
} else {
table.push(rst, v)
winform.re_字体详情.print("无需删除 ->",k, v)
}
}
winform.listbox_字体.items =rst;
}
}
// 定义一个函数来判断字符串是否包含中文字符
func_is_有汉字 = function(str) {
// 遍历字符串中的每个字符
for i = 1, #str, 1 {
// 获取当前字符的Unicode编码
var char = string.slice(str, i, i, true);
var u = string.charCodeAt(char);
// 检查Unicode编码是否在中文字符的范围内
if (u >= 0x4e00 && u <= 0x9fa5) {
return true;
}
}
return false;
}
winform.btn_添加字体文件.oncommand = function(id,event){
var tab = fsys.dlg.openEx('字体文件|*.ttf;||',,,winform);
//console.dumpJson(tab)
if(#tab) {
for k,v in tab {
winform.listbox_字体.add( v)
}
func_文件列表去重()
}
}
winform.listbox_字体.oncommand = function(id,event){
var p = winform.listbox_字体.selText
if(p == null) {return;}
if(io.exist(p)) {
var p_分解 = io.splitpath(p)
if(p) {
var s = win.font.getResourceInfo(p)
winform.edit_文件名.text = p_分解.name
winform.edit_字体名称.text = s.description
winform.re_字体详情.print(s)
}
}
}
winform.btn_选择字体文件路径.oncommand = function(id,event){
var p = fsys.dlg.dir(, winform, '请选择目录')
if (p) {
winform.edit_路径.text = p;
fsys.enum( p, "*.ttf*",
function(dir,filename,fullpath,findData){
if(filename){
io.print("发现文件:"+filename,"完整路径:"+fullpath)/*可使用 return false退出枚举文件过程*/
winform.listbox_字体.add( fullpath)
}
else{
io.print( "发现目录:" + dir )
}
},false
);
func_文件列表去重()
}
}
func_重命名字体 = function(字体路径, 选中索引) {
var p = 字体路径
var list_ind = winform.listbox_字体.selIndex
if(p == null) {return;}
if(io.exist(p)) {
var s;
if(p) {
s = win.font.getResourceInfo(p)
}
fontname = s.description
var p_分解 = io.splitpath(p)
newname = io.joinpath( p_分解.drive, p_分解.path, fontname + p_分解.ext)
winform.re_字体详情.print("newname = ", newname)
is_fontname_有汉字 = func_is_有汉字(fontname);
is_文件名_有汉字 = func_is_有汉字(p_分解.name);
is_a = is_fontname_有汉字 && !is_文件名_有汉字
is_b = !is_fontname_有汉字 && !is_文件名_有汉字
is_c = is_fontname_有汉字 && is_文件名_有汉字
is_d = !is_fontname_有汉字 && is_文件名_有汉字
is_文件名等于字体名 = fontname == p_分解.name
winform.re_字体详情.print("newname => ", newname)
if(!is_文件名等于字体名) {
//console.log(newname)
if( is_a || is_b || is_c) {
// 需要修改名字
if(io.exist(newname)) {
// 如果目标文件名的文件已存在,加副本2字
var 计数 = 1;
winform.re_字体详情.print("文件名已存在,保存为副本!")
newname2 = io.joinpath( p_分解.drive, p_分解.path, fontname + "-副本(" + 计数 + ")" + p_分解.ext)
winform.re_字体详情.print("newname2 = ", newname2)
if(newname2 !== newname) {
while io.exist(newname2){
计数 = 计数 + 1
newname2 = io.joinpath( p_分解.drive, p_分解.path, fontname + "-副本(" + 计数 + ")" + p_分解.ext)
}
io.rename(p, newname2)
winform.listbox_字体.delete(选中索引)
winform.listbox_字体.add(newname2, 选中索引)
winform.re_字体详情.print("修改副本名字成功!")
}else {
winform.re_字体详情.print("副本已存在,无需修改名字! ")
}
} else {
// 如果目标文件名的文件不存在,直接改名
io.rename(p, newname)
winform.listbox_字体.delete(选中索引)
winform.listbox_字体.add(newname, 选中索引)
//winform.listbox_字体. = newname
winform.re_字体详情.print("修改名字成功! => ", newname)
}
}
} else {
winform.re_字体详情.print("无需修改名字!")
}
} else {
winform.re_字体详情.print("文件不存在:" , p)
}
}
winform.btn_重命名选择的字体文件.oncommand = function(id,event){
var 字体路径 = winform.listbox_字体.selText;
var select_ind = winform.listbox_字体.selIndex;
func_重命名字体(字体路径, select_ind)
}
winform.btn_重命名全部字体文件.oncommand = function(id,event){
var tab = winform.listbox_字体.items;
if(#tab) {
for k, p in tab {
func_重命名字体(p, k)
}
}
}
winform.btn_清除无效字体文件.oncommand = function(id,event){
var rst = {}
var tmp_items = winform.listbox_字体.items
tmp_items = table.unique(tmp_items)
for k, v in tmp_items {
if( io.exist(v) ) {
winform.re_字体详情.print("存在 ", k, v)
table.push(rst, v)
} else {
winform.re_字体详情.print("不存在 ", k, v)
}
}
winform.listbox_字体.items = rst;
}
winform.btn_删除字体文件.oncommand = function(id,event){
winform.listbox_字体.delete()
import console;
console.dump(winform.listbox_字体.items)
}
winform.show();
win.loopMessage();
return winform;