aardio 文档

aardio 范例:壁纸切换工具

//壁纸切换工具
import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="壁纸切换工具";right=1110;bottom=649;bgcolor=16777215;border="none")
winform.add(
bk={cls="bk";left=-10;top=-4;right=1113;bottom=39;bgcolor=16777215;dl=1;dr=1;dt=1;forecolor=12632256;linearGradient=0;z=2};
btnBingToday={cls="plus";text="当前图像简介";left=52;top=614;right=244;bottom=644;border={color=-4144960;radius=8;width=1};color=3947580;db=1;dl=1;font=LOGFONT(h=-13);hide=1;notify=1;z=20};
btnExplorer={cls="plus";text="在资源管理器中查看";left=415;top=614;right=607;bottom=644;align="left";color=3947580;db=1;dr=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF0C9';notify=1;textPadding={left=25};z=14};
btnFullScreen={cls="plus";text="全屏查看图像";left=613;top=614;right=742;bottom=644;align="left";color=3947580;db=1;dr=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF109';notify=1;textPadding={left=25};z=11};
btnOpen={cls="plus";text="选择新图像";left=509;top=10;right=621;bottom=40;align="left";color=3947580;dl=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF115';notify=1;textPadding={left=25};z=13};
btnSetCurrent={cls="plus";text="设为桌面";left=622;top=10;right=733;bottom=40;align="left";color=3947580;dl=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF108';notify=1;textPadding={left=25};z=10};
btnSetting={cls="plus";text="系统设置";left=934;top=614;right=1046;bottom=644;align="left";color=3947580;db=1;dr=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF013';notify=1;textPadding={left=25};z=15};
btnView={cls="plus";text="打开图像";left=748;top=614;right=860;bottom=644;align="left";color=3947580;db=1;dr=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF045';notify=1;textPadding={left=25};z=12};
editPath={cls="plus";left=14;top=9;right=506;bottom=35;align="right";border={bottom=1;color=-6908266};dl=1;dt=1;editable=1;font=LOGFONT(h=-13);textPadding={top=6;bottom=2};z=9};
imgHistory1={cls="plus";left=930;top=94;right=1081;bottom=176;dr=1;dt=1;edge=1;notify=1;z=4};
imgHistory2={cls="plus";left=930;top=193;right=1081;bottom=275;dr=1;dt=1;edge=1;z=5};
imgHistory3={cls="plus";left=930;top=291;right=1081;bottom=373;dr=1;dt=1;edge=1;z=6};
imgHistory4={cls="plus";left=930;top=390;right=1081;bottom=472;dr=1;dt=1;edge=1;z=7};
imgHistory5={cls="plus";left=930;top=488;right=1081;bottom=570;dr=1;dt=1;edge=1;z=8};
imgWallpaper={cls="custom";left=11;top=46;right=903;bottom=609;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;repeat="stretch";z=3};
navBing={cls="plus";text="网络壁纸";left=995;top=47;right=1072;bottom=70;bgcolor=16777215;border={bottom=1;color=-16744448};dr=1;dt=1;font=LOGFONT(name='FontAwesome');z=17};
navHistory={cls="plus";text="历史记录";left=918;top=47;right=995;bottom=70;bgcolor=16777215;border={bottom=1;color=-16744448};dr=1;dt=1;font=LOGFONT(name='FontAwesome');z=16};
pageDown={cls="plus";text='\uF0D7';left=990;top=574;right=1018;bottom=589;color=32768;db=1;dr=1;font=LOGFONT(h=-24;name='FontAwesome');hide=1;notify=1;z=19};
pageUp={cls="plus";text='\uF0D8';left=987;top=75;right=1015;bottom=90;color=32768;disabled=1;dr=1;dt=1;font=LOGFONT(h=-24;name='FontAwesome');hide=1;notify=1;z=18};
plus3={cls="plus";left=918;top=69;right=1096;bottom=594;border={color=-16744448;width=1};clipBk=false;db=1;dr=1;dt=1;z=1}
)
/*}}*/

import win.ui.simpleWindow;
win.ui.simpleWindow(winform);
winform.show();

var styles = {
    button = {
        color={
            active=0xFF00FF00;
            default=0xFF3C3C3C;
            disabled=0xFF6D6D6D;
            hover=0xFFFF0000
        }
    }
    history = {
        foreground={ 
            default=0x00FFA07A;
            active=0xAAFFA07A;
            hover=0x66FFA07A
        }
    }
    pageUpDown={
        color={
            active=0xFF00FF00;
            default=0xFF008000;
            disabled=0xFF6D6D6D;
            hover=0xFFFF0000
        }
    }
}

for(name,ctrl in winform.eachControl("plus","^btn\w+") ){
    ctrl.skin(styles.button)
}

for(name,ctrl in winform.eachControl("plus","^imgHistory\w+") ){
    ctrl.skin(styles.history)
}

import win.ui.tabs;
var tbs = win.ui.tabs(winform.navHistory,winform.navBing);

//选项卡样式   
tbs.skin({
    foreground={
        active=0xFFFFFFFF;
        default=0x00FFFFFF;
        hover=0xFFCCCCCC; 
    };
    border = { 
        default = {bottom=1;color=0xFF008000} 
        disabled = {bottom=1;color=0xFF008000} 
    };
    checked={
        foreground={ 
            default=0x00FFFFFF; 
        };
        border = { 
            default = {left=1;right=1;top=1;color=0xFF008000} 
            disabled = {left=1;right=1;top=1;color=0xFF008000} 
        }; 
    }
}); 

tbs.selIndex = 1;

import web.rest.jsonLiteClient;
var http = web.rest.jsonLiteClient();
var bingImage = http.api("https://cn.bing.com/HPImageArchive.aspx?format=js&mkt=zh-CN","GET");

var reloadBing = function(){
    winform.navBing.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250';text=''} 
    winform.navHistory.disabled = true;
    winform.pageUp.disabled = true;
    winform.pageDown.disabled = true;

    var data = bingImage(idx=winform.binWallpaperIndex,n=5);
    if(data && data.images){
        for(i=1;5;1){
            var img = data.images[i];
            if(img){ 
                winform["imgHistory"+i].backgroundTodayPath = img.copyrightlink
                    + "&filters=HpDate:%22"+string.replace(img.fullstartdate,"^"+img.startdate,img.startdate+"_")+"%22";

                winform["imgHistory"+i].backgroundUhdPath = "https://cn.bing.com" + img.urlbase + "_UHD.jpg";
                winform["imgHistory"+i].backgroundPath = "https://cn.bing.com" + img.urlbase + "_1920x1080.jpg";
                winform["imgHistory"+i].background = "https://cn.bing.com" + img.urlbase + "_1366x768.jpg";
                winform["imgHistory"+i].tooltip = img.copyright;
                winform["imgHistory"+i].tooltipTitle = img.title
            } 
        }
    }

    winform.navBing.disabledText = null;
    winform.navHistory.disabled = false;

    if(winform.binWallpaperIndex > 0){
        winform.pageUp.disabled = false;
    }

    if(winform.binWallpaperIndex < 7){
        winform.pageDown.disabled = false;
    }
}
winform.binWallpaperIndex = 0;

import sys.wallpaper;
var reloadHistory = function(init){
    var history = sys.wallpaper.getHistory();

    for(i=1;5;1){
        winform["imgHistory"+i].backgroundUhdPath = null;
        if(!#history[i]) {
            winform["imgHistory"+i].background = null;
            winform["imgHistory"+i].backgroundPath = null;
        }
        else {
            winform["imgHistory"+i].background = history[i];
            winform["imgHistory"+i].backgroundPath = history[i] 

            if(i==1 && init){ 
                winform.imgWallpaper.image = history[1]; 
                winform.imgWallpaper.redrawBackground();    
            }   
        } 
    }
}

reloadHistory(true);

tbs.onSelchange = function(idx,strip,form){
    if(idx==1){
        winform.pageUp.hide = true;
        winform.pageDown.hide = true;
        winform.btnBingToday.hide = true;

        reloadHistory();
    }
    else {
        winform.pageUp.hide = false;
        winform.pageDown.hide = false;

        reloadBing();
    } 
}

import fsys.dlg;
winform.btnOpen.oncommand = function(id,event){
    var path = fsys.dlg.open("*.jpg|*.jpg","请选择图像");
    if(path){
        winform.editPath.text = path;
        winform.imgWallpaper.image = path;
        winform.imgWallpaper.redrawBackground();
    }
}

import win.ui.tooltip;
var tooltipCtrl = win.ui.tooltip.balloon(winform);
var tooltipInfo = tooltipCtrl.addTool(winform.btnBingToday);
for(name,ctrl in winform.eachControl("plus","^imgHistory\w+") ){
    ctrl.oncommand = function(id,event){
        winform.editPath.text = ctrl.backgroundUhdPath || ctrl.backgroundPath;
        winform.imgWallpaper.image = ctrl.backgroundPath;
        winform.imgWallpaper.backgroundTodayPath = ctrl.backgroundTodayPath;

        winform.imgWallpaper.redrawBackground(); 
        tooltipInfo.setText(ctrl.tooltip:"");
        tooltipCtrl.setTitle(ctrl.tooltipTitle:"");

        winform.btnBingToday.hide = !ctrl.backgroundUhdPath;
    }
}

winform.btnSetCurrent.oncommand = function(id,event){
    var path = winform.editPath.text;
    if(!#path) return winform.msgboxErr("请选择图像");

    winform.btnSetCurrent.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}
    thread.invokeEx( 
        function(winform,path){
            import sys.wallpaper;
            import inet.http;

            if(string.startWith(path,"http",true)){ 
                var filename = string.match(path,"\w+.jpg");
                if(!filename) {
                    winform.btnSetCurrent.disabledText = null;
                    return winform.msgboxErr("文件名错误");
                } 

                var imgPath = io.appData("/aardio/wallpaper/" + filename);
                if(!io.exist(imgPath)){
                    var data = inet.http.get(path);
                    if(!data) {
                        winform.btnSetCurrent.disabledText = null;
                        return winform.msgboxErr("下载图像失败");
                    }
                    string.save(imgPath,data); 
                } 

                path = imgPath;
            } 

            if(io.exist(path)){
                sys.wallpaper.setCurrent(path);
                winform.reloadHistory()
                thread.delay(500);
            }
            else {
                winform.editPath.editBox.showWarningTip("请指定正确的图像图像");
            }   

        },winform,path
    )

    winform.btnSetCurrent.disabledText = null;
}

winform.reloadHistory = function(){
    if(tbs.selIndex==1){
        winform.setTimeout( 
            function(){
                reloadHistory();
            },500
        )               
    }   
}

import process;
winform.btnExplorer.oncommand = function(id,event){
    var path = winform.editPath.text;
    if(!#path) return winform.msgboxErr("请选择图像");

    if(string.startWith(path,"http",true)){
        process.execute(path);
    }
    else {
        process.exploreSelect(path)
    } 
}

import process.imageView;
winform.btnView.oncommand = function(id,event){
    process.imageView(winform.editPath.text);
}

winform.btnFullScreen.oncommand = function(id,event){
    //用 custom 控件显示图像,custom 控件自带全屏功能
    winform.imgWallpaper.fullscreen(true);
}

import process.wow64;
winform.btnSetting.oncommand = function(id,event){
    process.wow64.explore("shell:::{ED834ED6-4B5A-4bfe-8F11-A626DCB6A921} -Microsoft.Personalization\pageWallpaper");
}

winform.pageUp.skin(styles.pageUpDown)
winform.pageUp.oncommand = function(id,event){

    winform.binWallpaperIndex = winform.binWallpaperIndex - 1;
    reloadBing();
}

winform.pageDown.skin(styles.pageUpDown)
winform.pageDown.oncommand = function(id,event){
    winform.binWallpaperIndex = winform.binWallpaperIndex + 1;
    winform.pageUp.disabled = false;

    reloadBing(); 
}

winform.btnBingToday.skin(styles.button)
winform.btnBingToday.oncommand = function(id,event){

    if(winform.imgWallpaper.backgroundTodayPath){
        thread.invoke( 
            function(winform,url){
                winform.btnBingToday.disabledText = {"✶";"✸";"✹";"✺";"✹";"✷"};

                import web.rest.htmlClient;
                var htmlDoc = web.rest.htmlClient.get(url);
                winform.btnBingToday.disabledText = null;

                if(htmlDoc){
                    var str = htmlDoc.getEle("ency_desc_full").innerText()
                    winform.msgbox(str)
                }


            },winform,winform.imgWallpaper.backgroundTodayPath
        )

    } 
}

win.loopMessage();

Markdown 格式