aardio 文档
aardio 范例: packer
import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="WinAsar - packer";right=1075;bottom=734;acceptfiles=1;bgcolor=16777215;parent=...)
winform.add(
btnBuild={cls="plus";text="生成asar文件";left=805;top=664;right=967;bottom=701;align="left";db=1;dr=1;font=LOGFONT(h=-15);iconStyle={align="left";font=LOGFONT(name='FontAwesome');padding={left=15}};iconText='\uF090';notify=1;textPadding={left=35};z=3};
btnClear={cls="plus";text="清空";left=272;top=8;right=355;bottom=43;align="left";dl=1;dt=1;font=LOGFONT(h=-15);iconStyle={align="left";font=LOGFONT(name='FontAwesome');padding={left=15}};iconText='\uF1F8';textPadding={left=35};z=8};
btnOpen={cls="plus";text="添加";left=25;top=8;right=129;bottom=43;align="left";dl=1;dt=1;font=LOGFONT(h=-15);iconStyle={align="left";font=LOGFONT(name='FontAwesome');padding={left=15}};iconText='\uF07C';textPadding={left=35};z=5};
btnRemove={cls="plus";text="移除";left=135;top=8;right=239;bottom=43;align="left";disabled=1;dl=1;dt=1;font=LOGFONT(h=-15);iconStyle={align="left";font=LOGFONT(name='FontAwesome');padding={left=15}};iconText='\uF08B';textPadding={left=35};z=9};
editInfo={cls="richedit";left=371;top=8;right=1064;bottom=655;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=2};
editOutPath={cls="edit";left=138;top=666;right=800;bottom=699;db=1;dl=1;dr=1;edge=1;multiline=1;z=6};
lbTip={cls="plus";text="可直接拖放要添加的文件到当前窗体";left=382;top=706;right=663;bottom=728;align="right";db=1;dr=1;transparent=1;z=11};
plusWebSite={cls="plus";text="Star";left=975;top=698;right=1052;bottom=729;align="left";color=-1;db=1;dr=1;font=LOGFONT(h=-15);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=15;top=1}};iconText='\uF09B';notify=1;textPadding={left=35;bottom=1};z=10};
progress={cls="plus";left=21;top=710;right=1058;bottom=723;bgcolor=6447459;db=1;dl=1;dr=1;forecolor=9959653;hide=1;max=100;min=0;z=4};
static={cls="static";text="输出文件:";left=42;top=672;right=128;bottom=696;align="right";db=1;dl=1;font=LOGFONT(h=-15);transparent=1;z=7};
treeview={cls="treeview";left=18;top=51;right=364;bottom=658;bgcolor=16777215;db=1;dl=1;dt=1;edge=1;vscroll=1;z=1}
)
/*}}*/
import fsys.asar.writer;
var asarFile = fsys.asar.writer();
var showAsarInfo = function(){
var info,err = asarFile.createInfo();
if(!info){
winform.msgboxErr(err)
return;
}
winform.treeview.clear();
winform.treeview.insertItem(asarFile.treeData());
winform.editInfo.text = web.json.stringify(asarFile.info,true);
if( ( !# ( ..string.trim( winform.editOutPath.text )) )
|| (winform.editOutPath.autoPath = winform.editOutPath.text ) ){
winform.editOutPath.text = fsys.path.removeBackslash(asarFile.rootDirectory) + ".asar";
winform.editOutPath.autoPath = winform.editOutPath.text;
}
}
winform.btnClear.oncommand = function(id,event){
asarFile.clear();
winform.treeview.clear();
winform.editInfo.text = "";
winform.btnRemove.disabled = true;
}
import fsys.dlg;
winform.btnOpen.oncommand = function(id,event){
var path = fsys.dlg.open("*.*|*.*||","添加文件到asar文件",,winform.hwnd);
if(#path){
asarFile.add( path );
showAsarInfo();
}
}
winform.wndproc = {
[0x233/*_WM_DROPFILES*/] = function(hwnd,message,wParam,lParam){
var files = win.getDropFile(wParam)
if(#files){
for(i=1;#files;1){
asarFile.add( files[i] );
}
showAsarInfo();
};
}
}
import fsys;
import win.ui.menu;
import process;
winform.treeview.onnotify = function(id,code,ptr){
if( code == 0xFFFFFE3D/*_TVN_SELCHANGEDW*/ ){
var hItem = winform.treeview.getSelection();
if(hItem){
winform.btnRemove.disabled = false;
var data = winform.treeview.getItemData(hItem);
var data = table.clone(data);
for(k,v in data){
if( v[["size"]] ) v.size =..math.size64(v.size).format();
}
if( data[["size"]] ) data.size =..math.size64(data.size).format();
winform.editInfo.text = web.json.stringify(data,true)
}
else {
winform.btnRemove.disabled = true;
}
}
}
import fsys.dlg;
import process;
winform.btnBuild.oncommand = function(id,event){
var outpath = winform.editOutPath.text;
if(!#outpath){
outpath = fsys.dlg.save("*.asar|*.asar||","请选择asar文件",,winform.hwnd);
}
if(!#outpath) return;
if(!..string.endWith(outpath,".asar",true)){
winform.msgboxErr("输出文件必须以.asar作为文件名后缀");
winform.editOutPath.setFocus();
return;
}
winform.plusWebSite.hide = true;
winform.btnBuild.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}
winform.progress.hide = false;
winform.progress.setProgressRange(1,1000);
for(path,size,progress in asarFile.eachPack(outpath)){
winform.progress.progressPos = progress * 1000;
win.delay(1)
}
winform.btnBuild.disabledText = null;
if( asarFile.lasterr ) winform.msgboxErr(asarFile.lasterr)
winform.progress.hide = true;
process.explore_select(outpath)
}
winform.btnRemove.oncommand = function(id,event){
var hItem = winform.treeview.getSelection();
if(hItem){
var path = winform.treeview.getItemPath(hItem);
if(asarFile.remove(path)){
winform.treeview.delItem(hItem)
}
}
}
winform.btnClear.skin({
background={
default=0xFF8FB2B0;
hover=0xFF928BB3;
disabled=0xFFCCCCCC;
}
})
winform.btnOpen.skin({
background={
default=0xFF8FB2B0;
hover=0xFF928BB3;
disabled=0xFFCCCCCC;
}
})
winform.btnRemove.skin({
background={
default=0xFF8FB2B0;
hover=0xFF928BB3;
disabled=0xFFCCCCCC;
}
})
winform.btnBuild.skin({
background={
default=0xFF8FB2B0;
hover=0xFF928BB3;
disabled=0xFFCCCCCC;
}
})
winform.plusWebSite.skin(
color = {
hover = 0xFFFF0000;
active = 0xFF00FF00;
}
)
winform.plusWebSite.oncommand = function(id,event){
import process
process.openUrl("https://github.com/aardio/WinAsar")
}
winform.enableDpiScaling();
winform.show();
win.loopMessage();
return winform;
Markdown 格式