1 Star 1 Fork 25

supercoeus / aardio扩展库

forked from 小肥羊 / aardio扩展库 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
libstool 26.31 KB
一键复制 编辑 原始数据 按行查看 历史
小肥羊 提交于 2023-03-19 11:09 . 修改窗口控件相对坐标
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
//扩展库(收集版 v6.0)
// 小肥羊修改版,仓库使用的是gitee,但是貌似有些限制会导致下载失败!添加了备用服务器地址
//风行者再次修改6.0
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio扩展库(收集版)";right=862;bottom=517)
winform.add(
btnDeselectAll={cls="button";text="取消全选";left=631;top=486;right=710;bottom=515;db=1;dr=1;z=3};
btnSearch={cls="button";text="搜索扩展库";left=733;top=5;right=851;bottom=35;dr=1;dt=1;z=7};
btnSelectAll={cls="button";text="全选";left=530;top=486;right=609;bottom=515;db=1;dr=1;z=2};
btnSetup={cls="button";text="安装/更新";left=732;top=486;right=846;bottom=515;db=1;dr=1;z=4};
button2={cls="button";text="加载使用量(较慢)";left=10;top=5;right=136;bottom=36;dl=1;dt=1;z=10};
combobox={cls="combobox";left=22;top=490;right=144;bottom=510;db=1;dl=1;edge=1;items={};mode="dropdown";z=11};
editKeyword={cls="edit";left=506;top=5;right=723;bottom=35;dr=1;dt=1;edge=1;z=6};
lbInfo={cls="static";text="鼠标双击上面的扩展库项目打开相关范例";left=160;top=490;right=483;bottom=510;center=1;db=1;dl=1;dr=1;transparent=1;z=5};
lbKeyword={cls="static";text="库名称或库功能有关的关键词:";left=285;top=12;right=498;bottom=34;align="right";dr=1;dt=1;transparent=1;z=8};
listview={cls="listview";left=11;top=41;right=852;bottom=484;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;edge=1;fullRow=1;z=1};
static2={cls="static";left=149;top=12;right=288;bottom=36;dl=1;dt=1;transparent=1;z=9}
)
/*}}*/
import inet.http;
import win.ui.atom;
import ide;
import console;
var giteeurl = "https://gitee.com/yang_lite/aardio-extension-library/raw/main/" //gitee服务器
var priurl = "https://aarlib.52hy.top/aardio-extension-library/" //自己服务器
//https://gitee.com/yang_lite/aardio-extension-library/raw/main/lzma/dll.dm.tar.lzma
lnk = {
list = "https://gitee.com/yang_lite/aardio-extension-library/raw/main/list";
//list = "https://aardio_lib.52hy.top/list.php";
res = giteeurl
}
var atom, hwnd = winform.atom("aardio.extlib.54AE3DC1-DC89-439C-8BFC-52576EA86CB8");
if (!atom) {
win.quitMessage();
return;
}
getCount = function(key, n, g) {
return win.invoke(function(key, n, g) {
import win;
var get = g ? "hit" : "get";
var name = n ? "feiyang-aardio-sampleCode" : "feiyang-aardio-libs"
import web.rest.jsonLiteClient;
var countApi = web.rest.jsonLiteClient().api("https://api.countapi.xyz/" + get + "/{namespace}/{key}")
var data = countApi[name][key].get();
return data[["value"]];
}, key, n, g)
}
winform.combobox.items = {
"Gitee下载";
"备用服务器下载"
}
winform.combobox.selIndex = 2;
winform.enableDpiScaling();
// 初始化 imagelist
import win.imageList;
var iml = win.imageList(16, 15);
iml.add('GIF\56\57a \0\15\0\x80\0\0\x80\x80\x80\xff\0\xff\33\xf9\4\0\0\0\0\0\44\0\0\0\0 \0\15\0\0\2\31\x8c\x8f\xa9\xcb\xed\15\xa3\x9c\xb4N\xf0\x80\xde\56k\xbfA\\\xd7\x84 \x97Y\xea\xca\xb6\xee\11\xc7F\1\0;', 0xff00ff);
winform.listview.setColumnImageList(iml);
winform.listview.setExtended(0x4 /*_LVS_EX_CHECKBOXES*/ )
winform.listview.insertColumn("扩展库", 135)
winform.listview.insertColumn("版本", 50)
winform.listview.insertColumn("本地版本", 65)
winform.listview.insertColumn("作者", 60)
winform.listview.insertColumn("说明", -1)
winform.listview.insertColumn("安装量", 55)
winform.listview.insertColumn("范例", 55)
//winform.listview.insertColumn("工具",50)
// 排序函数
winform.listview.sortBy = function(ind) {
var image = winform.listview.getColumnImage(ind);
// 已按照升序排序,则按照降序排序;其余情况按照升序排序
var desc = image == 0;
// 冒泡排序,大家也可采用其他排序方式
var i, j, k;
var num = winform.listview.count;
var strCurrect, strLast, strTemp;
for (j = 2; num) {
for (i = num; j; - 1) {
strCurrect = winform.listview.getItemText(i, ind);
strLast = winform.listview.getItemText(i - 1, ind);
if (strCurrect < strLast && !desc || strCurrect > strLast && desc) {
// 交换两行的位置
for (k = 1; 7) {
strTemp = winform.listview.getItemText(i, k);
strCh = winform.listview.getChecked(i)
winform.listview.setItemText(winform.listview.getItemText(i - 1, k), i, k);
winform.listview.setChecked(i,winform.listview.getChecked(i-1))
winform.listview.setItemText(strTemp, i - 1, k);
winform.listview.setChecked(i-1,strCh)
}
}
}
}
// 更新列图标
winform.listview.clearColumnImage()
winform.listview.setColumnImage(ind, desc ? 1 : 0);
}
winform.show()
winform.text = "aardio扩展库安装程序 正在获取服务器列表...."
showLibs = function(libs) {
winform.listview.clear();
winform.listview.redraw();
if (libs) {
var installedLibs = ide.getExtLibs();
for libName, libInfo in table.eachName(libs) {
//console.dump()
var row = winform.listview.addItem({
libName;
libInfo.version;
installedLibs[libName][["version"]]: "未安装";
libInfo.author;
libInfo.description;
"未加载";
(libInfo.codeUrl: libInfo.zipUrl) ? "有";
(libInfo.istool) ? "是" : "否";
})
if (installedLibs[libName][["version"]])
winform.listview.setChecked(row, true)
}
}
else {
winform.text = "aardio扩展库(收集版)安装程序 - " + (err: "为避免滥用免费资源,请稍后再试")
return;
}
}
var http = inet.http()
http.disableCache()
var libs = eval(http.get(lnk.list): "");
showLibs(libs);
winform.text = "aardio扩展库(收集版) - 已获取服务器最新列表";
winform.btnSetup.oncommand = function(id, event) {
winform.btnSetup.disabled = true;
var installedLibs = ide.getExtLibs();
for (i = winform.listview.count; 1; - 1) {
if (winform.listview.getChecked(i)) {
var libName = winform.listview.getItemText(i, 1);
var libVersion = winform.listview.getItemText(i, 2);
var installVersion = installedLibs[libName][["version"]];
if (installVersion != libVersion) {
winform.text = "aardio扩展库安装程序 正在安装扩展库:" + libName;
win.invoke(function(libName, lnk) {
/*idex{{*/
namespace idex {
import inet.http;
import fsys;
import sevenZip.lzma;
import fsys.untar;
import inet.downBox;
import process.mutex;
import win;
getExtLibs = function() {
var strLibVers = ..string.load("~\extensions\extlibver.table") or "{}";
return eval(strLibVers) or {};
};
requestLibInfo = function(libName) {
if (!libName) error("请指定库名称参数", 2);
return win.invoke(function(libName, lnk) {
import inet.http;
var http = inet.http();
http.disableCache();
var listLib = eval(http.get(lnk.list): "")
if libName = "all"
return listLib;
return listLib[libName];
}, libName, lnk)
};
installLib = function(libName, askTitle) {
return importFile(libName, askTitle: "", true);
};
var hasBeenEntered = {};
importFile = function(libName, askTitle, installOnly) {
if (hasBeenEntered[libName]) {
error('导入库失败,未找到库文件\n库路径:' + libName, 3);
}
hasBeenEntered[libName] = true;
var downloadUrl, downloadLibName, downloadVersion;
var updateInfo = requestLibInfo(libName);
if (!(updateInfo)) {
if (!installOnly) {
error('导入库失败,未找到库文件\n库路径:' + libName, 3);
}
hasBeenEntered[libName] = false;
return false;
}
if (installOnly) {
var libVers = getExtLibs();
if (libVers[libName][["version"]] == updateInfo.version) {
hasBeenEntered[libName] = false;
return true;
}
}
downloadLibName = updateInfo.libName;
downloadUrl = lnk.res + "lzma/" + downloadLibName + ".tar.lzma";
//downloadUrl = lnk.res+ "resouce/"+downloadLibName+ ".aardio";
downloadVersion = updateInfo.version;
if (!askTitle)
askTitle = libName + " 扩展库尚未安装,您需要下载安装 " + libName + " 扩展库吗?";
if ((!#askTitle) || win.msgboxTest(askTitle, "aardio")) {
var mutex = process.mutex("{54AE3DC1-DC89-439C-8BFC-52576EA86CB8}.lock.import." + libName, false, false);
mutex.wait(); {
if (..string.endWith(downloadUrl, ".tar.lzma", true)) {
var ok = download(downloadUrl, "aardio- 下载 " + libName + " 扩展库", "~/download/lib/", , downloadLibName + ".tar.lzma");
if (ok) {
if (downloadVersion && ..io.libpath(libName)) {
var libVers = getExtLibs();
libVers[downloadLibName] = {
version = downloadVersion
};
..string.save("~\extensions\extlibver.table", ..table.tostring(libVers))
}
}
}
elseif(..string.endWith(downloadUrl, ".aardio", true)) {
var bin = inet.http().get(downloadUrl);
if (bin) {
var libPath, libDir = ..io.libpath(libName)
console.dump(libPaht, libDir)
if (!libPath) libPath = ..io.joinpath(libDir, "_.aardio");
..string.save(libPath, bin)
}
var msg = "安装失败";
if (..io.libpath(libName)) {
msg = " 已安装成功";
}
if (installOnly) {
win.msgboxTimeout("库 " + libName++msg, "aardio");
}
}
}
mutex.release();
if (..io.libpath(libName)) {
if (!installOnly) {
global.import(libName);
}
hasBeenEntered[libName] = false;
return true;
}
}
hasBeenEntered[libName] = false;
if (!installOnly) {
error('导入库失败,未找到库文件\n库路径: ' + libName, 3);
}
return false;
}
download = function(url, title = "下载", saveDir, extraDir, saveName, parentForm) {
var tUrl = ..inet.url.split(url);
if (!tUrl) {
error("错误的URL参数", 2)
}
var tPath = ..io.splitpath(tUrl.path)
saveDir = ..io.fullpath(saveDir: "~\download\")
..fsys.createDir(saveDir);
if (!saveName) {
saveName = tPath.file;
}
if (!extraDir) {
extraDir = ..string.match(saveName, "(.+)\.[^\.]+$");
if (!extraDir) extraDir = saveName + ".uncompress";
extraDir = ..fsys.joinpath(saveDir, extraDir)
}
else {
extraDir = ..io.fullpath(extraDir);
}
var pathCabinet = ..fsys.joinpath(saveDir, saveName)
var downBox = ..inet.downBox(parentForm, title, false)
downBox.headers = self.headers;
downBox.referer = self.referer;
downBox.userAgent = self.userAgent;
downBox.preget = self.preget;
downBox.endProc = function() {
downBox.text = "正在解压缩:" + saveName;
..win.peekPumpInputMessage();
var tarTempName = pathCabinet + ".tar";
downBox.progress.hide = false;
var processed = 0;
import fsys.file
var step = (downBox.contentLength: fsys.file(pathCabinet).size()) / 1000;
downBox.progress.setProgressRange(1, 1000);
var peekMsg = ..win.peekPumpMessage;
var ret = ..sevenZip.lzma.decodeFile(pathCabinet, tarTempName, function(inProcessed, outProcessed) {
if ((peekMsg() !== null) && downBox.continueModal) {
processed = processed + inProcessed;
downBox.progress.progressPos = processed / step;
}
else {
return true;
}
});
if (!ret) {
owner.complete = false;
owner.endModal();
return;
}
downBox.onClose = function() {
return false;
}
downBox.text = "正在展开:" + saveName;
var tarFile = ..fsys.untar(tarTempName, extraDir);
tarFile.onProgressFile = function(path) {
downBox.labInfo.text = path;
};
downBox.progress.setProgressRange(1, 1000);
for (fileName, writeSize, remainSize, pos in tarFile.eachBlock(1000)) {
if (peekMsg() !== null) {
downBox.progress.progressPos = pos;
}
else {
break;
}
}
tarFile.close()
..io.remove(tarTempName);
downBox.onClose = null;
if (tarFile.complete) {
owner.endModal();
}
else {
downBox.text = tarFile.lastError
}
}
downBox.download(url, pathCabinet, null, null, "")
if (!downBox.complete) {
return;
}
if (!..io.exist(pathCabinet, 4)) {
return false;
}
var fileRootDir;
..fsys.enum(extraDir, "*.*", function(dir, filename, fullpath, findData) {
if (filename) {
fileRootDir = dir;
return false;
}
});
if (!fileRootDir) return;
var setupFile = ..fsys.joinpath(fileRootDir, "setup.dl.aardio")
if (..io.exist(setupFile)) {
var handle = ..thread.create(setupFile);
if (..win.isClosed()) {
..thread.wait(handle)
}
else {
..thread.waitOne(handle)
}
..raw.closehandle(handle)
}
return true;
}
}
/*}}*/
idex.installLib(libName)
}, libName, lnk)
if (..win.isClosed()) return;
installedLibs = ide.getExtLibs();
winform.listview.setItemText(installedLibs[libName][["version"]]: "安装失败", i, 3);
if (installedLibs[libName][["version"]] == libVersion) {
winform.text = "aardio扩展库安装程序 已安装扩展库:" + libName;
winform.listview.setItemText(getCount(libName, , 1), i, 6);
}
else {
winform.text = "aardio扩展库安装程序 扩展库:" + libName + " 安装失败!";
}
}
else {
winform.text = "aardio扩展库安装程序 忽略已安装扩展库:" + libName;
}
}
}
winform.text = "aardio扩展库安装程序 安装已完成";
ide.refreshStdLib();
winform.btnSetup.disabled = false;
}
//取消全选
winform.btnDeselectAll.oncommand = function(id, event) {
for (i = winform.listview.count; 1; - 1) {
winform.listview.setChecked(i, false)
}
}
//全选
winform.btnSelectAll.oncommand = function(id, event) {
for (i = winform.listview.count; 1; - 1) {
winform.listview.setChecked(i, true)
}
}
import inet.downBox;
import process;
import zlib.unzip;
import fsys;
fsys.createDir("/.sampleCode/");
winform.listview.onnotify = function(id, code, ptr) {
select (code) {
//自绘
case 0xFFFFFFF4 /*_NM_CUSTOMDRAW*/ {
var lvcd = winform.listview.getNotifyCustomDraw(code, ptr);
if (lvcd.nmcd.dwDrawStage == 0x10001 /*_CDDS_ITEMPREPAINT*/ )
return 0x20 /*_CDRF_NOTIFYSUBITEMDRAW*/
elseif(lvcd.nmcd.dwDrawStage == 1 /*_CDDS_PREPAINT*/ ) {
return 0x20 /*_CDRF_NOTIFYITEMDRAW*/ ;
}
elseif(lvcd.nmcd.dwDrawStage == (0x10001 /*_CDDS_ITEMPREPAINT*/ | 0x20000 /*_CDDS_SUBITEM*/ )) {
//注意这里 iSubItem 的索引自0开始( 其他函数通常自1开始 )
//lvcd.clrText = lvcd.iSubItem % 2 ? gdi.RGB(255,255,255) : gdi.RGB(12,255,120);
lvcd.clrTextBk = lvcd.nmcd.dwItemSpec % 2 ? gdi.RGB(168, 199, 255) : gdi.RGB(164, 237, 197);
lvcd.update()
return 0 /*_CDRF_DODEFAULT*/
}
}
case 0xFFFFFF94 /*_LVN_COLUMNCLICK*/ {
var nmlvw = winform.listview.getNotifyMessage(code, ptr)
winform.listview.sortBy(nmlvw.iSubItem);
}
case 0xFFFFFFFD /*_NM_DBLCLK*/ {
var nm = winform.listview.getNotifyMessage(code, ptr)
if (winform.listview.selIndex) {
var libName = winform.listview.getItemText(nm.iItem, 1)
if (!libName) return;
var libInfo = libs[libName]
if (libInfo.codeUrl) {
var url = lnk.res + "sampleCode/" + libName
var code, err = win.invoke(function(url) {
import inet.http;
var http = inet.http();
http.disableCache();
return http.get(url);
}, url)
if (!code) return;
var codePath = "/.sampleCode/" + libName + ".aardio";
string.save(codePath, code)
winform.show(0x6 /*_SW_MINIMIZE*/ )
ide.openDocument(io.exist(codePath))
winform.listview.setItemText(getCount(libName, 1, 1), nm.iItem, 7)
}
elseif(libInfo.zipUrl) {
var codePath = "/.sampleCode/" + libName + ".zip";
var downBox = inet.downBox(winform, "/.sampleCode/" + libName, true)
if (downBox.download(lnk.res + "sampleCode/" + libName + ".zip", codePath)) {
var ok, err = zlib.unzip.extract(codePath, "/.sampleCode/" + libName)
..process.explore("/.sampleCode/" + libName)
winform.listview.setItemText(getCount(libName, 1, 1), nm.iItem, 7)
}
}
else {
winform.lbInfo.text = "抱歉,暂时没有找到与 " + libName + "扩展库有关的范例"
..process.execute("http://api.aardio.com/v10/pages/search?q=" + libName);
return;
};
}
}
}
}
import win.debounce;
var search = win.debounce(function(id, event) {
var k = winform.editKeyword.text;
if (#k) k = string.trim(k);
if (!#k) {
showLibs(libs);
return;
}
keywords = string.splitEx(string.lower(k), "\s+");
var result = {}
for (name, libInfo in libs) {
for (i, k in keywords) {
if (libInfo.keywords) {
if (string.indexOf(string.lower(libInfo.keywords), k)) {
result[name] = libInfo;
continue;
}
}
if (libInfo.description) {
if (string.indexOf(string.lower(libInfo.description), k)) {
result[name] = libInfo;
continue;
}
}
if (libInfo.author) {
if (string.indexOf(libInfo.author, k)) {
result[name] = libInfo;
continue;
}
}
if (string.indexOf(name, k)) {
result[name] = libInfo;
continue;
}
}
};
showLibs(result);
})
winform.btnSearch.oncommand = function(id, event) {
winform.listview.clear();
search();
}
winform.onOk = function() {
winform.listview.clear();
search();
}
winform.editKeyword.oncommand = function(id, event) {
if (event = 0x300 /*_EN_CHANGE*/ ) {
search();
}
}
winform.button2.oncommand = function(id, event) {
winform.button2.disabled = true;
for (i = winform.listview.count; 1; - 1) {
var libName = winform.listview.getItemText(i, 1);
var install = getCount(libName);
var sample = getCount(libName, 1)
if install winform.listview.setItemText(install, i, 6);
if sample winform.listview.setItemText(sample, i, 7);
}
winform.button2.disabled = false;
}
winform.static2.text = string.concat("启动次数:", getCount("total", , 1))
winform.combobox.onListChange = function() {
var index = winform.combobox.selIndex;
if (index = 2) {
lnk.res = priurl
}
else {
lnk.res = giteeurl
}
}
winform.editKeyword.setFocus();
win.loopMessage();
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
其他
1
https://gitee.com/supercoeus/aardio-extension-library.git
git@gitee.com:supercoeus/aardio-extension-library.git
supercoeus
aardio-extension-library
aardio扩展库
main

搜索帮助

344bd9b3 5694891 D2dac590 5694891