项目首次迁移至当前仓库
This commit is contained in:
parent
e744a75823
commit
fc0e0bb55e
52
.gitignore
vendored
52
.gitignore
vendored
|
@ -1,43 +1,9 @@
|
|||
# ---> Lua
|
||||
# Compiled Lua sources
|
||||
luac.out
|
||||
|
||||
# luarocks build files
|
||||
*.src.rock
|
||||
*.zip
|
||||
*.tar.gz
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.os
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
*.def
|
||||
*.exp
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
|
||||
/.build/default.main.aardio
|
||||
/.build/default.Manifest.xml
|
||||
/.build/update-maker.table
|
||||
/.build/update-maker.aardio
|
||||
/.update-files/
|
||||
dist/
|
||||
.build/default.init.aardio
|
||||
.build/mp.lock
|
||||
/.imtip
|
19
aardio.ini
Normal file
19
aardio.ini
Normal file
|
@ -0,0 +1,19 @@
|
|||
[Makefile]
|
||||
路径=./makefile
|
||||
文件名=project_*.mk
|
||||
|
||||
[编译模块配置]
|
||||
new=new
|
||||
app=app
|
||||
simulator=simulator
|
||||
resource=resource
|
||||
simulator_resource=simulator_resource
|
||||
|
||||
[编译配置]
|
||||
job=job=8
|
||||
j=-j4
|
||||
|
||||
[市场名]
|
||||
OP=开放
|
||||
IN=印度
|
||||
RU=俄罗斯
|
12
default.aproj
Normal file
12
default.aproj
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project ver="10" name="cmdSpecial" libEmbed="true" icon="app.ico" ui="win" output="cmdSpecial.exe" CompanyName="aardio" FileDescription="cmdSpecial" LegalCopyright="Copyright (C) 作者 2022" ProductName="cmdSpecial" InternalName="cmdSpecial" FileVersion="0.0.0.15" ProductVersion="0.0.0.15" publishDir="/dist/" dstrip="false">
|
||||
<file name="main" path="main.aardio"/>
|
||||
<folder name="窗体" path="forms" comment="" embed="true" local="false" ignored="false">
|
||||
<file name="test.aardio" path="forms\test.aardio" comment="forms\test.aardio"/>
|
||||
</folder>
|
||||
<folder name="网页" path="web" embed="true" comment="目录" local="true" ignored="false">
|
||||
<file name="index.html" path="web\index.html" comment="web\index.html"/>
|
||||
<file name="index.js" path="web\index.js" comment="web\index.js"/>
|
||||
</folder>
|
||||
<folder name="网页源码" path="web.src" embed="false" comment="目录" local="false" ignored="true"/>
|
||||
</project>
|
17
lib/config.aardio
Normal file
17
lib/config.aardio
Normal file
|
@ -0,0 +1,17 @@
|
|||
//config 配置文件
|
||||
import fsys.config;
|
||||
config = fsys.config("/config/");
|
||||
//config = fsys.config( io.appData("/软件作者/应用程序名/") );
|
||||
|
||||
//不需要序列化的配置名字前请添加下划线
|
||||
namespace config {
|
||||
__appName = "应用程序名";
|
||||
__website = "http://www.aardio.com/";
|
||||
}
|
||||
|
||||
/**intellisense(config)
|
||||
__appName = 应用程序名
|
||||
__website = 官方网站
|
||||
saveAll() = 写入所有配置到文件
|
||||
? = 获取值时指定不以下划线开始的配置表名称,\n返回一个可自动序列化到同名配置文件的表对象。\n如果此对象名以下划线开始,则可以正常读写值不会序列化为配置文件。\n否则不能对此对象直接赋值,只能对配置表对象的成员赋值。\n\n配置表可自动自文件加载,退出线程前自动序列化并存入文件。\n仅序列化以字符串、数值为键的元素,\n仅序列化值为字符串、数值、buffer 以及定义了 _serialize 元方法的成员。\n循环引用的值转换为 null,序列化时忽略成员函数\n!fsys_table.
|
||||
end intellisense**/
|
169
main.aardio
Normal file
169
main.aardio
Normal file
|
@ -0,0 +1,169 @@
|
|||
import win.ui;
|
||||
/*DSG{{*/
|
||||
mainForm = win.form(text="cmdSpecial";right=1135;bottom=702)
|
||||
mainForm.add()
|
||||
/*}}*/
|
||||
|
||||
//如果运行或发布遇到问题,请先卸载 WebView2 再运行示例以更新该组件。
|
||||
import web.view;
|
||||
var wb = web.view(mainForm);
|
||||
|
||||
|
||||
import process.popen;
|
||||
import fsys;
|
||||
import fsys.ini
|
||||
import console;
|
||||
configFile = io.splitpath(io._exefile).name + ".ini"
|
||||
|
||||
if not io.exist(configFile){
|
||||
ini = fsys.ini(configFile);
|
||||
|
||||
if(_STUDIO_INVOKED){
|
||||
ini.write("Makefile","路径","./makefile");
|
||||
}
|
||||
else {
|
||||
ini.write("Makefile","路径","./");
|
||||
}
|
||||
ini.write("Makefile","文件名","project_*.mk");
|
||||
string.save(configFile, '\r\n', true);
|
||||
|
||||
ini.write("编译模块配置","new","new");
|
||||
ini.write("编译模块配置","app","app");
|
||||
ini.write("编译模块配置","simulator","simulator");
|
||||
ini.write("编译模块配置","resource","resource");
|
||||
string.save(configFile, '\r\n', true);
|
||||
|
||||
ini.write("编译配置","job","job=8");
|
||||
ini.write("编译配置","j","-j4");
|
||||
ini.write("编译配置","job","job=8");
|
||||
string.save(configFile, '\r\n', true);
|
||||
|
||||
ini.write("市场名","OP","开放");
|
||||
ini.write("市场名","IN","印度");
|
||||
ini.write("市场名","RU","俄罗斯");
|
||||
}else {
|
||||
ini = fsys.ini(configFile)
|
||||
}
|
||||
|
||||
var getAllProjectFiles = function(path, fileName){
|
||||
var data = {};
|
||||
fsys.enum( path, fileName,
|
||||
function(dirname,filename,fullpath,findData){
|
||||
if(filename){
|
||||
table.insert(data, filename);
|
||||
}
|
||||
}
|
||||
,false/*如果此参数为false则忽略子目录*/
|
||||
);
|
||||
return data;
|
||||
}
|
||||
|
||||
var listToDict = function(p_list){
|
||||
class DictStruct {
|
||||
project_name;
|
||||
makefile_name;
|
||||
}
|
||||
|
||||
var all_project_files_list_dict = {};
|
||||
for(i=1;#p_list;1){
|
||||
var temp = DictStruct();
|
||||
temp.project_name = string.split(p_list[i],"_")[3];
|
||||
temp.makefile_name = p_list[i];
|
||||
table.push(all_project_files_list_dict,temp)
|
||||
}
|
||||
return all_project_files_list_dict;
|
||||
}
|
||||
|
||||
var tableUnique = function(arr,key){
|
||||
var rAr = {};
|
||||
var temp = {};
|
||||
for(k,v in arr){
|
||||
var a = v[key];
|
||||
if(!rAr[a]){
|
||||
rAr[a]= v;
|
||||
table.insert(temp, a);
|
||||
}
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
//获取所有文件名
|
||||
var allMakefileName = getAllProjectFiles(ini.read("Makefile","路径"), ini.read("Makefile","文件名"));
|
||||
|
||||
//设置文件名、项目名的键值对
|
||||
var allPrjFileDict = listToDict(allMakefileName);
|
||||
|
||||
//提取唯一项目名
|
||||
var allPrjName = tableUnique(allPrjFileDict,"project_name")
|
||||
table.sort(allPrjName);
|
||||
|
||||
var dicData = table.array();
|
||||
for(sub, prjName in allPrjName){
|
||||
var temp = table.array();
|
||||
for(k,prjFile in allPrjFileDict){
|
||||
if(prjFile.project_name == prjName){
|
||||
table.insert(temp, prjFile.makefile_name)
|
||||
}
|
||||
}
|
||||
dicData[prjName] = temp;
|
||||
}
|
||||
|
||||
// wb.export 导出的函数被JS调用返回的值使用JSON自动转换为JS对象
|
||||
wb.export(
|
||||
getAllPrjName = function(){
|
||||
return allPrjName;
|
||||
}
|
||||
|
||||
getAllMakefile = function(prjName){
|
||||
return dicData[prjName];
|
||||
}
|
||||
|
||||
//console.dump(ini.getSection("市场名").OP)
|
||||
getMarketName = function(makefile){
|
||||
var marketStr = string.split(makefile,"_");
|
||||
var allMarketName = {};
|
||||
marketStr = string.split(marketStr[#marketStr],".")[1];
|
||||
allMarketName = ini.read("市场名",marketStr)
|
||||
return allMarketName ? allMarketName : string.find(marketStr,"^En") ? "OP" : marketStr;;
|
||||
}
|
||||
|
||||
getMakefilePath = function(makefile){
|
||||
return io._exedir + makefile;
|
||||
}
|
||||
|
||||
cmdSpecial = function(command){
|
||||
if(_STUDIO_INVOKED){
|
||||
if(string.find(command,"make")){
|
||||
var configFile = io.splitpath(io._exefile).name + ".ini";
|
||||
var ini = fsys.ini(configFile);
|
||||
var makefilePath = string.replace(ini.getSection("Makefile").路径, "\\", "/");
|
||||
if(!string.endWith(makefilePath,"/")){
|
||||
makefilePath = makefilePath + "/";
|
||||
}
|
||||
command = string.replace(command, "make", makefilePath+"make.bat");
|
||||
mainForm.msgbox(command);
|
||||
return;
|
||||
}
|
||||
mainForm.msgbox(command);
|
||||
//return;
|
||||
}
|
||||
|
||||
//同步有同步的优势,扬长避短是智慧,倒行逆施最累人。
|
||||
prcs = process.popen(command);
|
||||
for( all,out,err in prcs.each() ){
|
||||
wb.invoke("insertAtTheEndOfEditor", all);
|
||||
}
|
||||
wb.invoke("insertAtTheEndOfEditor", "---->>>End<<<----");
|
||||
return;
|
||||
}
|
||||
|
||||
isT117 = function(){
|
||||
return true
|
||||
}
|
||||
|
||||
)
|
||||
|
||||
import wsock.tcp.simpleHttpServer;
|
||||
wb.go(wsock.tcp.simpleHttpServer.startSpaUrl("\web\index.html"))
|
||||
|
||||
mainForm.show();
|
||||
win.loopMessage();
|
0
makefile/project_S1101_A1024_EnFrPo.mk
Normal file
0
makefile/project_S1101_A1024_EnFrPo.mk
Normal file
0
makefile/project_S1101_A1024_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A1024_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A1024_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_A1024_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_A1025_EnFrPo.mk
Normal file
0
makefile/project_S1101_A1025_EnFrPo.mk
Normal file
0
makefile/project_S1101_A1025_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A1025_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A1025_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_A1025_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_A1032_EnFrPo.mk
Normal file
0
makefile/project_S1101_A1032_EnFrPo.mk
Normal file
0
makefile/project_S1101_A1032_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A1032_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A105_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_A105_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_A1224_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A1224_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A2024_EnFrPo.mk
Normal file
0
makefile/project_S1101_A2024_EnFrPo.mk
Normal file
0
makefile/project_S1101_A2024_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A2024_EnFrPo_IN.mk
Normal file
0
makefile/project_S1101_A2024_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_A2024_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_AB1025_EnFrPo.mk
Normal file
0
makefile/project_S1101_AB1025_EnFrPo.mk
Normal file
0
makefile/project_S1101_G25_EnFrPo_RU.mk
Normal file
0
makefile/project_S1101_G25_EnFrPo_RU.mk
Normal file
1
web/css/index.css
Normal file
1
web/css/index.css
Normal file
File diff suppressed because one or more lines are too long
303
web/index.html
Normal file
303
web/index.html
Normal file
|
@ -0,0 +1,303 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
<link rel="stylesheet" href="./css/index.css">
|
||||
</head>
|
||||
<style>
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
body {
|
||||
border-top: 1px solid #FFF2F2F2;
|
||||
}
|
||||
|
||||
/*---滚动条默认显示样式--*/
|
||||
.custom-scroll-bar::-webkit-scrollbar-thumb {
|
||||
background-color: #018EE8;
|
||||
height: 50px;
|
||||
outline-offset: -2px;
|
||||
outline: 2px solid #fff;
|
||||
-webkit-border-radius: 4px;
|
||||
border: 2px solid #fff;
|
||||
}
|
||||
|
||||
/*---鼠标点击滚动条显示样式--*/
|
||||
.custom-scroll-bar::-webkit-scrollbar-thumb:hover {
|
||||
background-color: #FB4446;
|
||||
height: 50px;
|
||||
-webkit-border-radius: 4px;
|
||||
}
|
||||
|
||||
/*---滚动条大小--*/
|
||||
.custom-scroll-bar::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
/*---滚动框背景样式--*/
|
||||
.custom-scroll-bar::-webkit-scrollbar-track-piece {
|
||||
background-color: #fff;
|
||||
-webkit-border-radius: 0;
|
||||
}
|
||||
|
||||
.custom-scroll-bar::-webkit-scrollbar-thumb:active {
|
||||
height: 50px;
|
||||
background-color: #000;
|
||||
-webkit-border-radius: 4px;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
/* border: 1px solid #006DB7; */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.wrap:hover {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.yu-alert {
|
||||
margin: 0;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.yu-header {
|
||||
background-color: antiquewhite;
|
||||
}
|
||||
|
||||
.yu-sidebar {
|
||||
background-color: #FFFFFFFF;
|
||||
}
|
||||
|
||||
.yu-content {
|
||||
background-color: #FFFFFFFF;
|
||||
border-left: 1px solid #FFF2F2F2;
|
||||
}
|
||||
|
||||
.web-container {}
|
||||
|
||||
#log_output_ctrl {
|
||||
width: -webkit-calc(100% - 5px);
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div class="yu-layout">
|
||||
<div class="yu-layout-inline">
|
||||
<div class="yu-sidebar custom-scroll-bar wrap">
|
||||
<div class="yu-alert primary" style="width:200px"><i class="iconfont icon-tag"></i>项目名</div>
|
||||
<div class="web-container">
|
||||
<div id="menu" class="yu-menu light vertical">
|
||||
<!--菜单、子菜单-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="yu-layout-block">
|
||||
<div id="header-title" class="yu-alert primary">···</div>
|
||||
|
||||
<div class="yu-button-group">
|
||||
<button id="new" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">new</button>
|
||||
<button id="app" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">app</button>
|
||||
<button id="simulator" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">simulator</button>
|
||||
<button id="resource" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">resource</button>
|
||||
<button id="sim-res" class="yu-button primary plain" onclick="generateCompileCommand(this.id)">simulator + resource</button>
|
||||
</div>
|
||||
|
||||
<div class="yu-input">
|
||||
<input id="build-input" value="ping baidu.com" type="text" class="append"
|
||||
style="width:-webkit-calc(100% - 90px);" placeholder="编译命令">
|
||||
<button class="yu-button append primary" style="width:90px" onclick="goBuild()">Build</button>
|
||||
</div>
|
||||
|
||||
<div id="log_output_ctrl"></div>
|
||||
|
||||
<div class="yu-alert primary"><i class="iconfont icon-check-circle"></i>
|
||||
Hello<p style="float:right; margin:0;">World</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="./js/index.js"></script>
|
||||
<script src="./js/ace/ace.js" type="text/javascript" charset="utf-8"></script>
|
||||
<!-- log窗口初始化,log回显 -->
|
||||
<script type="text/javascript">
|
||||
var logOutputCtrl = ace.edit("log_output_ctrl");
|
||||
logOutputCtrl.setTheme("ace/theme/terminal"); // 设置主题
|
||||
logOutputCtrl.getSession().setMode("ace/mode/log"); // 设置程序语言模式
|
||||
logOutputCtrl.setReadOnly(false); // 设置只读
|
||||
logOutputCtrl.renderer.setShowGutter(false); // 设置行号
|
||||
logOutputCtrl.setShowPrintMargin(false); // 设置打印边距
|
||||
logOutputCtrl.setHighlightActiveLine(false); // 设置选中高亮
|
||||
logOutputCtrl.setOption("wrap", "free"); // 自动换行,free:开,off:关
|
||||
document.getElementById('log_output_ctrl').style.fontSize='14px';
|
||||
|
||||
|
||||
function insertAtTheEndOfEditor(string) {
|
||||
var customPosition = {
|
||||
row: logOutputCtrl.session.getLength(),
|
||||
column: 0
|
||||
};
|
||||
logOutputCtrl.session.insert(customPosition, string);
|
||||
logOutputCtrl.renderer.scrollToLine(Number.POSITIVE_INFINITY)
|
||||
}
|
||||
|
||||
goBuild = async () => {
|
||||
var sBuildCommandValue = document.getElementById("build-input").value;
|
||||
if (null == sBuildCommandValue) {
|
||||
return false;
|
||||
}
|
||||
console.log(sBuildCommandValue)
|
||||
await cmdSpecial(sBuildCommandValue);
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- 菜单初始化 -->
|
||||
<script type="text/javascript">
|
||||
function generateCompileCommand(compileType) {
|
||||
var str = document.getElementById("header-title").innerText;
|
||||
if ("···" == str) {
|
||||
return;
|
||||
}
|
||||
|
||||
async function checkPlatform() {
|
||||
return await isT117();
|
||||
}
|
||||
checkPlatform().then(result=>insertCommandStr(result))
|
||||
|
||||
function insertCommandStr(isT117) {
|
||||
var sCommand;
|
||||
var project = str.match("project_(.*?).mk")[1];
|
||||
|
||||
if ("new" == compileType) {
|
||||
sCommand = "make p=" + project + " new job=8 -j4";
|
||||
}
|
||||
if ("app" == compileType) {
|
||||
sCommand = "make p=" + project + " m=app image update job=8 -j4";
|
||||
}
|
||||
if ("simulator" == compileType) {
|
||||
sCommand = "make p=" + project + " m=simulator job=8 -j4";
|
||||
}
|
||||
if ("resource" == compileType) {
|
||||
sCommand = "make p=" + project + " m=resource job=8 -j4";
|
||||
}
|
||||
if ("sim-res" == compileType) {
|
||||
sCommand = "make p=" + project + " m=simulator job=8 -j4 && ";
|
||||
sCommand += "make p=" + project + " m=resource job=8 -j4";
|
||||
}
|
||||
if (isT117){
|
||||
sCommand = sCommand.replace(/app/g,"app_main");
|
||||
sCommand = sCommand.replace(/simulator/g,"simulator_main");
|
||||
sCommand = sCommand.replace(/resource/g,"resource_main");
|
||||
}
|
||||
document.getElementById("build-input").value = sCommand;
|
||||
}
|
||||
}
|
||||
|
||||
function addEventListener2Menu(){
|
||||
var menuActivedSub = -1;
|
||||
var menuItemActivedSub = -1;
|
||||
var menus = document.querySelectorAll('.vertical .menu-title');
|
||||
var menuItems = document.querySelectorAll('.sub-menu .menu-item');
|
||||
|
||||
function menuShow(e) {
|
||||
var menuHeight = e.currentTarget.nextElementSibling.getElementsByClassName("menu-item").length * 40;
|
||||
e.currentTarget.classList.toggle('active', true);
|
||||
e.currentTarget.nextElementSibling.style.height = menuHeight + 'px';
|
||||
e.currentTarget.getElementsByClassName("iconfont")[0].classList.toggle('icon-f-text', false);
|
||||
e.currentTarget.getElementsByClassName("iconfont")[0].classList.toggle('icon-eye', true);
|
||||
}
|
||||
|
||||
function menuHide() {
|
||||
menus[menuActivedSub].classList.toggle('active', false);
|
||||
menus[menuActivedSub].nextElementSibling.style.height = '0';
|
||||
menus[menuActivedSub].getElementsByClassName("iconfont")[0].classList.toggle('icon-f-text', true);
|
||||
menus[menuActivedSub].getElementsByClassName("iconfont")[0].classList.toggle('icon-eye', false);
|
||||
}
|
||||
|
||||
Array.from(menus).forEach((item) => {
|
||||
item.addEventListener('click', function(e) {
|
||||
if (-1 == menuActivedSub) {
|
||||
//显示当前点击的菜单
|
||||
menuShow(e);
|
||||
} else if (-1 != menuActivedSub && e.currentTarget.classList.contains("active")) {
|
||||
//隐藏之前显示的菜单
|
||||
menuHide();
|
||||
} else if (-1 != menuActivedSub) {
|
||||
//隐藏之前显示的菜单
|
||||
menuHide();
|
||||
//显示当前点击的菜单
|
||||
menuShow(e);
|
||||
} else {
|
||||
alert("菜单显示/隐藏逻辑错误!");
|
||||
}
|
||||
//记录当前为显示状态的菜单下标
|
||||
for (var i = 0; i < menus.length; i++) {
|
||||
if (item == menus[i]) {
|
||||
menuActivedSub = i;
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
Array.from(menuItems).forEach((item) => {
|
||||
item.addEventListener('click', function(e) {
|
||||
//选中当前点击的菜单子项
|
||||
e.currentTarget.classList.add('active');
|
||||
|
||||
//隐藏非当前点击的、上一次选中的菜单子项
|
||||
if (-1 != menuItemActivedSub && e.currentTarget != menuItems[menuItemActivedSub]) {
|
||||
menuItems[menuItemActivedSub].classList.remove("active");
|
||||
}
|
||||
document.getElementById("header-title").innerText = e.currentTarget.id;
|
||||
//记录当前为选中状态的菜单子项下标
|
||||
for (var i = 0; i < menuItems.length; i++) {
|
||||
if (item == menuItems[i]) {
|
||||
menuItemActivedSub = i;
|
||||
return;
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
async function createMenus() {
|
||||
var allPrjName = await getAllPrjName();
|
||||
var para = document.getElementById("menu");
|
||||
for(i in allPrjName){
|
||||
var menu = ``;
|
||||
var menu_item = ``;
|
||||
var allMakefile = await getAllMakefile(allPrjName[i]);
|
||||
|
||||
for(j in allMakefile){
|
||||
var makefilePath = await getMakefilePath(allMakefile[j]);
|
||||
var marketName = await getMarketName(allMakefile[j]);
|
||||
menu_item += `<div id="`+ makefilePath +`" class="menu-item" style="padding-left: 30px">`+ marketName +`</div>`;
|
||||
}
|
||||
|
||||
menu += `
|
||||
<div class="sub-menu">
|
||||
<div class="menu-title"><i class="iconfont icon-f-text"></i>`+ allPrjName[i] +`
|
||||
<i class="iconfont icon-angle-down"></i></div>
|
||||
<div class="sub-menu" style="height: 0;overflow: hidden">
|
||||
`;
|
||||
menu += menu_item;
|
||||
menu += `
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
para.innerHTML += menu;
|
||||
}
|
||||
return "Create menus done."
|
||||
}
|
||||
|
||||
createMenus().then(result=>addEventListener2Menu())
|
||||
</script>
|
||||
</html>
|
21544
web/js/ace/ace.js
Normal file
21544
web/js/ace/ace.js
Normal file
File diff suppressed because it is too large
Load Diff
236
web/js/ace/mode-log.js
Normal file
236
web/js/ace/mode-log.js
Normal file
|
@ -0,0 +1,236 @@
|
|||
define("ace/mode/log_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
var oop = require("../lib/oop");
|
||||
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
||||
|
||||
var LogHighlightRules = function() {
|
||||
|
||||
var keywords = (
|
||||
"error|errors|fail|missing|synatax|undefined|unexpected|permission|denied"
|
||||
);
|
||||
|
||||
var builtinConstants = (
|
||||
""
|
||||
);
|
||||
|
||||
var builtinFunctions = (
|
||||
"line|lines|success"
|
||||
);
|
||||
|
||||
var dataTypes = (
|
||||
""
|
||||
);
|
||||
|
||||
var keywordMapper = this.createKeywordMapper({
|
||||
"support.function": builtinFunctions,
|
||||
"keyword": keywords,
|
||||
"constant.language": builtinConstants,
|
||||
"storage.type": dataTypes
|
||||
}, "identifier", true);
|
||||
|
||||
this.$rules = {
|
||||
"start" : [ {
|
||||
token : keywordMapper,
|
||||
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
|
||||
}]
|
||||
};
|
||||
this.normalizeRules();
|
||||
};
|
||||
|
||||
oop.inherits(LogHighlightRules, TextHighlightRules);
|
||||
|
||||
exports.LogHighlightRules = LogHighlightRules;
|
||||
});
|
||||
|
||||
define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
var oop = require("../../lib/oop");
|
||||
var Range = require("../../range").Range;
|
||||
var BaseFoldMode = require("./fold_mode").FoldMode;
|
||||
|
||||
var FoldMode = exports.FoldMode = function(commentRegex) {
|
||||
if (commentRegex) {
|
||||
this.foldingStartMarker = new RegExp(
|
||||
this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
|
||||
);
|
||||
this.foldingStopMarker = new RegExp(
|
||||
this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
|
||||
);
|
||||
}
|
||||
};
|
||||
oop.inherits(FoldMode, BaseFoldMode);
|
||||
|
||||
(function() {
|
||||
|
||||
this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
|
||||
this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
|
||||
this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
|
||||
this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
|
||||
this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
|
||||
this._getFoldWidgetBase = this.getFoldWidget;
|
||||
this.getFoldWidget = function(session, foldStyle, row) {
|
||||
var line = session.getLine(row);
|
||||
|
||||
if (this.singleLineBlockCommentRe.test(line)) {
|
||||
if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
|
||||
return "";
|
||||
}
|
||||
|
||||
var fw = this._getFoldWidgetBase(session, foldStyle, row);
|
||||
|
||||
if (!fw && this.startRegionRe.test(line))
|
||||
return "start"; // lineCommentRegionStart
|
||||
|
||||
return fw;
|
||||
};
|
||||
|
||||
this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
|
||||
var line = session.getLine(row);
|
||||
|
||||
if (this.startRegionRe.test(line))
|
||||
return this.getCommentRegionBlock(session, line, row);
|
||||
|
||||
var match = line.match(this.foldingStartMarker);
|
||||
if (match) {
|
||||
var i = match.index;
|
||||
|
||||
if (match[1])
|
||||
return this.openingBracketBlock(session, match[1], row, i);
|
||||
|
||||
var range = session.getCommentFoldRange(row, i + match[0].length, 1);
|
||||
|
||||
if (range && !range.isMultiLine()) {
|
||||
if (forceMultiline) {
|
||||
range = this.getSectionRange(session, row);
|
||||
} else if (foldStyle != "all")
|
||||
range = null;
|
||||
}
|
||||
|
||||
return range;
|
||||
}
|
||||
|
||||
if (foldStyle === "markbegin")
|
||||
return;
|
||||
|
||||
var match = line.match(this.foldingStopMarker);
|
||||
if (match) {
|
||||
var i = match.index + match[0].length;
|
||||
|
||||
if (match[1])
|
||||
return this.closingBracketBlock(session, match[1], row, i);
|
||||
|
||||
return session.getCommentFoldRange(row, i, -1);
|
||||
}
|
||||
};
|
||||
|
||||
this.getSectionRange = function(session, row) {
|
||||
var line = session.getLine(row);
|
||||
var startIndent = line.search(/\S/);
|
||||
var startRow = row;
|
||||
var startColumn = line.length;
|
||||
row = row + 1;
|
||||
var endRow = row;
|
||||
var maxRow = session.getLength();
|
||||
while (++row < maxRow) {
|
||||
line = session.getLine(row);
|
||||
var indent = line.search(/\S/);
|
||||
if (indent === -1)
|
||||
continue;
|
||||
if (startIndent > indent)
|
||||
break;
|
||||
var subRange = this.getFoldWidgetRange(session, "all", row);
|
||||
|
||||
if (subRange) {
|
||||
if (subRange.start.row <= startRow) {
|
||||
break;
|
||||
} else if (subRange.isMultiLine()) {
|
||||
row = subRange.end.row;
|
||||
} else if (startIndent == indent) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
endRow = row;
|
||||
}
|
||||
|
||||
return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
|
||||
};
|
||||
this.getCommentRegionBlock = function(session, line, row) {
|
||||
var startColumn = line.search(/\s*$/);
|
||||
var maxRow = session.getLength();
|
||||
var startRow = row;
|
||||
|
||||
var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
|
||||
var depth = 1;
|
||||
while (++row < maxRow) {
|
||||
line = session.getLine(row);
|
||||
var m = re.exec(line);
|
||||
if (!m) continue;
|
||||
if (m[1]) depth--;
|
||||
else depth++;
|
||||
|
||||
if (!depth) break;
|
||||
}
|
||||
|
||||
var endRow = row;
|
||||
if (endRow > startRow) {
|
||||
return new Range(startRow, startColumn, endRow, line.length);
|
||||
}
|
||||
};
|
||||
|
||||
}).call(FoldMode.prototype);
|
||||
|
||||
});
|
||||
|
||||
define("ace/mode/folding/log",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"], function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
var oop = require("../../lib/oop");
|
||||
var BaseFoldMode = require("./cstyle").FoldMode;
|
||||
|
||||
var FoldMode = exports.FoldMode = function() {};
|
||||
|
||||
oop.inherits(FoldMode, BaseFoldMode);
|
||||
|
||||
(function() {
|
||||
|
||||
|
||||
}).call(FoldMode.prototype);
|
||||
|
||||
});
|
||||
|
||||
define("ace/mode/log",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/log_highlight_rules","ace/mode/folding/log"], function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
var oop = require("../lib/oop");
|
||||
var TextMode = require("./text").Mode;
|
||||
var LogHighlightRules = require("./log_highlight_rules").LogHighlightRules;
|
||||
var LogFoldMode = require("./folding/log").FoldMode;
|
||||
|
||||
var Mode = function() {
|
||||
this.HighlightRules = LogHighlightRules;
|
||||
this.foldingRules = new LogFoldMode();
|
||||
this.$behaviour = this.$defaultBehaviour;
|
||||
};
|
||||
oop.inherits(Mode, TextMode);
|
||||
|
||||
(function() {
|
||||
|
||||
this.lineCommentStart = "--";
|
||||
this.blockComment = {start: "/*", end: "*/"};
|
||||
|
||||
this.$id = "ace/mode/log";
|
||||
this.snippetFileId = "ace/snippets/log";
|
||||
}).call(Mode.prototype);
|
||||
|
||||
exports.Mode = Mode;
|
||||
|
||||
}); (function() {
|
||||
window.require(["ace/mode/log"], function(m) {
|
||||
if (typeof module == "object" && typeof exports == "object" && module) {
|
||||
module.exports = m;
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
121
web/js/ace/theme-terminal.js
Normal file
121
web/js/ace/theme-terminal.js
Normal file
|
@ -0,0 +1,121 @@
|
|||
define("ace/theme/terminal",["require","exports","module","ace/lib/dom"], function(require, exports, module) {
|
||||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-terminal-theme";
|
||||
exports.cssText = ".ace-terminal-theme .ace_gutter {\
|
||||
background: #1a0005;\
|
||||
color: steelblue\
|
||||
}\
|
||||
.ace-terminal-theme .ace_print-margin {\
|
||||
width: 1px;\
|
||||
background: #1a1a1a\
|
||||
}\
|
||||
.ace-terminal-theme {\
|
||||
background-color: black;\
|
||||
color: #DEDEDE\
|
||||
}\
|
||||
.ace-terminal-theme .ace_cursor {\
|
||||
color: #9F9F9F\
|
||||
}\
|
||||
.ace-terminal-theme .ace_marker-layer .ace_selection {\
|
||||
background: #424242\
|
||||
}\
|
||||
.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {\
|
||||
box-shadow: 0 0 3px 0px black;\
|
||||
}\
|
||||
.ace-terminal-theme .ace_marker-layer .ace_step {\
|
||||
background: rgb(0, 0, 0)\
|
||||
}\
|
||||
.ace-terminal-theme .ace_marker-layer .ace_bracket {\
|
||||
background: #090;\
|
||||
}\
|
||||
.ace-terminal-theme .ace_marker-layer .ace_bracket-start {\
|
||||
background: #090;\
|
||||
}\
|
||||
.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {\
|
||||
margin: -1px 0 0 -1px;\
|
||||
border: 1px solid #900\
|
||||
}\
|
||||
.ace-terminal-theme .ace_marker-layer .ace_active-line {\
|
||||
background: #2A2A2A\
|
||||
}\
|
||||
.ace-terminal-theme .ace_gutter-active-line {\
|
||||
background-color: #2A112A\
|
||||
}\
|
||||
.ace-terminal-theme .ace_marker-layer .ace_selected-word {\
|
||||
border: 1px solid #424242\
|
||||
}\
|
||||
.ace-terminal-theme .ace_invisible {\
|
||||
color: #343434\
|
||||
}\
|
||||
.ace-terminal-theme .ace_keyword,\
|
||||
.ace-terminal-theme .ace_meta,\
|
||||
.ace-terminal-theme .ace_storage,\
|
||||
.ace-terminal-theme .ace_storage.ace_type,\
|
||||
.ace-terminal-theme .ace_support.ace_type {\
|
||||
color: tomato\
|
||||
}\
|
||||
.ace-terminal-theme .ace_keyword.ace_operator {\
|
||||
color: deeppink\
|
||||
}\
|
||||
.ace-terminal-theme .ace_constant.ace_character,\
|
||||
.ace-terminal-theme .ace_constant.ace_language,\
|
||||
.ace-terminal-theme .ace_constant.ace_numeric,\
|
||||
.ace-terminal-theme .ace_keyword.ace_other.ace_unit,\
|
||||
.ace-terminal-theme .ace_support.ace_constant,\
|
||||
.ace-terminal-theme .ace_variable.ace_parameter {\
|
||||
color: #E78C45\
|
||||
}\
|
||||
.ace-terminal-theme .ace_constant.ace_other {\
|
||||
color: gold\
|
||||
}\
|
||||
.ace-terminal-theme .ace_invalid {\
|
||||
color: yellow;\
|
||||
background-color: red\
|
||||
}\
|
||||
.ace-terminal-theme .ace_invalid.ace_deprecated {\
|
||||
color: #CED2CF;\
|
||||
background-color: #B798BF\
|
||||
}\
|
||||
.ace-terminal-theme .ace_fold {\
|
||||
background-color: #7AA6DA;\
|
||||
border-color: #DEDEDE\
|
||||
}\
|
||||
.ace-terminal-theme .ace_entity.ace_name.ace_function,\
|
||||
.ace-terminal-theme .ace_support.ace_function,\
|
||||
.ace-terminal-theme .ace_variable {\
|
||||
color: #7AA6DA\
|
||||
}\
|
||||
.ace-terminal-theme .ace_support.ace_class,\
|
||||
.ace-terminal-theme .ace_support.ace_type {\
|
||||
color: #E7C547\
|
||||
}\
|
||||
.ace-terminal-theme .ace_heading,\
|
||||
.ace-terminal-theme .ace_string {\
|
||||
color: #B9CA4A\
|
||||
}\
|
||||
.ace-terminal-theme .ace_entity.ace_name.ace_tag,\
|
||||
.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,\
|
||||
.ace-terminal-theme .ace_meta.ace_tag,\
|
||||
.ace-terminal-theme .ace_string.ace_regexp,\
|
||||
.ace-terminal-theme .ace_variable {\
|
||||
color: #D54E53\
|
||||
}\
|
||||
.ace-terminal-theme .ace_comment {\
|
||||
color: orangered\
|
||||
}\
|
||||
.ace-terminal-theme .ace_indent-guide {\
|
||||
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;\
|
||||
}\
|
||||
";
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass, false);
|
||||
}); (function() {
|
||||
window.require(["ace/theme/terminal"], function(m) {
|
||||
if (typeof module == "object" && typeof exports == "object" && module) {
|
||||
module.exports = m;
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
1145
web/js/index.js
Normal file
1145
web/js/index.js
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user