aardio 文档

aardio 范例: CabQuicker - 压缩打包工具

//Cab 打包压缩
import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="CabQuicker -  压缩打包工具";right=599;bottom=399;parent=...)
winform.add(
tab={cls="tab";left=9;top=8;right=587;bottom=389;db=1;dl=1;dr=1;dt=1;edge=1;z=1}
)
/*}}*/

var frmCompress,frmUnCompress;

/*压缩工具{{*/
frmCompress = winform.tab.add( text="压缩";acceptfiles=1;bottom=363;parent=...;right=590 )
frmCompress.add( 
editDst={ dl=1;bottom=147;right=344;left=41;dt=1;top=120;z=3;text="/test.cab";edge=1;cls="edit" };
btnCompress={ dr=1;bottom=345;text="生成压缩文件";font=LOGFONT(name='FontAwesome');left=393;top=305;z=8;db=1;right=553;cls="button" };
static={ dl=1;bottom=48;right=309;left=41;dt=1;top=26;transparent=1;text="请拖放需要压缩的目录或文件到下面输入框中";z=2;cls="static" };
staticDst={ dl=1;bottom=118;right=309;left=41;dt=1;top=96;transparent=1;text="请选择cab文件存储路径";z=5;cls="static" };
cmbType={ dr=1;bottom=334;right=377;left=314;text="LZX";
items={ "LZX";"MSZIP" };top=314;z=7;db=1;mode="dropdown";edge=1;cls="combobox" };
staticType={ dr=1;bottom=339;align="right";text="压缩算法:";left=238;top=317;z=6;db=1;right=309;transparent=1;cls="static" };
editSrc={ dl=1;bottom=77;right=549;left=41;dt=1;top=48;z=1;edge=1;cls="edit" };
btnBrowser={ dl=1;bottom=149;right=465;left=349;dt=1;top=116;z=4;text="浏览...";cls="button" };
editLog={ dr=1;dl=1;bottom=289;vscroll=1;right=550;left=38;multiline=1;top=171;dt=1;z=9;db=1;hscroll=1;edge=1;cls="richedit" }
)

frmCompress.btnCompress.oncommand = function(id,event){
    frmCompress.btnCompress.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}

    thread.invokeAndWait(
        function(frmCompress,path,target,compressType){
            import win.ui;
            import fsys.cab.maker;
            import console;

            frmCompress.editLog.text = "正在计算文件数目......"
            fsys.cab.maker.logger = frmCompress.editLog; 
            ok,err = fsys.cab.maker.compress(path,target,compressType)
            if(ok){
                frmCompress.editLog.appendText(  '\r\n已生成' 
                    , err , '\r\n全部操作已完成\r\n' 
                ); 
            }
            else {
                frmCompress.editLog.appendText( '\r\n' , err );
            }
        },frmCompress,frmCompress.editSrc.text,frmCompress.editDst.text
        /*,frmCompress.cmbType.text*/
    )

    frmCompress.btnCompress.disabledText = null;
} 
import fsys.dlg;
frmCompress.btnBrowser.oncommand = function(id,event){
    frmCompress.editDst.text = fsys.dlg.save( "*.cab|*.cab||","请选择cab文件存储目录",,frmCompress.hwnd)
} 
frmCompress.wndproc = function(hwnd,message,wParam,lParam){
    select(message) {//判断消息类型
        case 0x233/*_WM_DROPFILES*/ { 
            var path = win.getDropFile(wParam )[1];
            if( ..string.endWith(path,".cab",true) ){
                frmUnCompress.editSrc.text = path;
                winform.tab.selIndex = 2;
                return;
            }

            frmCompress.editSrc.text = path 
            var tPath =  io.splitpath(frmCompress.editSrc.text)

            if( fsys.isDir(frmCompress.editSrc.text) ){
                frmCompress.editDst.text = tPath.dir + tPath.file + ".cab"
            } 
            else {
                frmCompress.editDst.text = tPath.dir + tPath.name + ".cab"
            }


            frmUnCompress.editSrc.text = frmCompress.editDst.text;
        } 
    }
} 
/*}}*/

/*解压缩工具{{*/
frmUnCompress = winform.tab.add(text="解压缩";right=590;bottom=363;acceptfiles=1;parent=...)
frmUnCompress.add(
btnBrowser={cls="button";text="浏览...";left=406;top=117;right=522;bottom=150;dl=1;dt=1;z=4};
btnUnCompress={cls="button";text="解压缩文件";font=LOGFONT(name='FontAwesome');left=320;top=309;right=480;bottom=349;dl=1;dt=1;z=6};
editDst={cls="edit";text="/";left=41;top=120;right=381;bottom=147;dl=1;dt=1;edge=1;z=3};
editLog={cls="richedit";left=40;top=160;right=566;bottom=301;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=7};
editSrc={cls="edit";left=40;top=48;right=566;bottom=77;dl=1;dt=1;edge=1;z=1};
static={cls="static";text="请拖放需要解压的cab文件到下面输入框中";left=41;top=26;right=309;bottom=48;dl=1;dt=1;transparent=1;z=2};
staticDst={cls="static";text="请选择存储目录";left=41;top=96;right=309;bottom=118;dl=1;dt=1;transparent=1;z=5}
)

frmUnCompress.onFileInCabinet = function(filename,targetDir,fullTargetName){
    frmUnCompress.editLog.log("正在解压:",filename,'\n');
}

frmUnCompress.btnUnCompress.oncommand = function(id,event){
    frmUnCompress.btnUnCompress.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}

    thread.invokeAndWait(
        function( frmUnCompress,path,target ){ 
            import fsys.cab;
            fsys.cab.onFileInCabinet = function(...){
                frmUnCompress.onFileInCabinet(...)
            };
            fsys.cab.extract(path,target)
            frmCompress.editLog.log("操作已完成");
        },frmUnCompress,frmUnCompress.editSrc.text,frmUnCompress.editDst.text 
    )

    frmUnCompress.btnUnCompress.disabledText  = null;
} 

import fsys.dlg.dir;
frmUnCompress.btnBrowser.oncommand = function(id,event){
    frmUnCompress.editDst.text = import fsys.dlg.dir( frmUnCompress.editDst.text,frmUnCompress.hwnd )
}

frmUnCompress.wndproc = function(hwnd,message,wParam,lParam){
    select(message) {//判断消息类型
        case 0x233/*_WM_DROPFILES*/ { 
            var path = win.getDropFile(wParam )[1];
            if( !..string.endWith(path,".cab",true) ){
                frmCompress.editSrc.text = path;
                winform.tab.selIndex = 1;
                return;
            }

            frmUnCompress.editSrc.text = path; 
            var tPath =  io.splitpath(frmUnCompress.editSrc.text)
            frmUnCompress.editDst.text = tPath.dir + tPath.name 
        } 
    }
} 

/*}}*/

winform.enableDpiScaling();
winform.show() 
win.loopMessage();

Markdown 格式