[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;