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;anchors={left=1;top=1;right=1;bottom=1};edge=1;z=1}
)
/*}}*/

var frmCompress,frmUnCompress;

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

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.endsWith(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;anchors={top=1;right=1};z=4};
btnUnCompress={cls="button";text="解压缩文件";left=320;top=309;right=480;bottom=349;anchors={right=1;bottom=1};font=LOGFONT(name='FontAwesome');z=6};
editDst={cls="edit";text="/";left=41;top=120;right=381;bottom=147;anchors={left=1;top=1;right=1};edge=1;z=3};
editLog={cls="richedit";left=40;top=160;right=566;bottom=301;anchors={left=1;top=1;right=1;bottom=1};edge=1;multiline=1;z=7};
editSrc={cls="edit";left=40;top=48;right=566;bottom=77;anchors={left=1;top=1;right=1};edge=1;z=1};
static={cls="static";text="请拖放需要解压的cab文件到下面输入框中";left=41;top=26;right=309;bottom=48;anchors={left=1;top=1;right=1};transparent=1;z=2};
staticDst={cls="static";text="请选择存储目录";left=41;top=96;right=309;bottom=118;anchors={left=1;top=1;right=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 = 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.endsWith(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.show() 
win.loopMessage();

Markdown 格式