//解压缩
import win.ui;
/*DSG{{*/
var winform = win.form(text="7Zip 解压缩演示";right=774;bottom=437)
winform.add(
edit={cls="edit";left=11;top=20;right=763;bottom=388;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1};
progress={cls="plus";left=16;top=410;right=762;bottom=422;bgcolor=6447459;db=1;dl=1;dr=1;forecolor=9959653;notify=1;z=2}
)
/*}}*/

winform.progress.setProgressRange(1,100);
winform.show();

import fsys.dlg;
import sevenZip.decoder2;
import win.dlg.message;

var archive = sevenZip.decoder2();
archive.printError = function(name,message){
    winform.edit.print(name,message);
}

if( !archive.open( fsys.dlg.open("7z压缩包|*.7z||") ) ){
    return winform.msgErr("打开压缩包出错"); 
}

//列出所有文件
for path,isDir,time,size64 in archive.each(){
	winform.edit.print(path,isDir,time,size64.format())
}

archive.extractSetTotal = function(size){
    winform.edit.print("压缩包大小",fsys.formatSize(size) )
}

archive.extractSetCompleted = function(lowSize,hiSize,percent){
    winform.edit.print("已解压",fsys.formatSize(lowSize,hiSize)," %" + percent )
    winform.progress.progressPercentage = percent;
}

archive.extractPrepareOperation = function(askExtractMode,itemIndex,filepath,isDir){
   winform.edit.print("正在解压",filepath)
}
archive.extractSetOperationResult = function(opRet){
        if( opRet == 0/*kOK*/ ){
       		winform.edit.print("OK!")
        }
        elseif( opRet == 1/*kUnSupportedMethod*/ ){
            winform.edit.print("Unsupported Method")
        }
        elseif( opRet == 0/*kDataError*/ ){
            winform.edit.print("CRC Failed")
        }
        elseif( opRet == 0/*kCRCError*/ ){
            winform.edit.print("Data Error")
        }
        else {
           winform.edit.print("Unknown Error")
        }
}

import fsys.dlg.dir;
if( archive.extract( fsys.dlg.dir(,,"请指定解压目录") ) ){
    winform.edit.print("已完成所有操作")
}
else {
    winform.edit.print("解压缩遇到错误")
}

win.loopMessage();
