项目首次迁移至当前仓库
This commit is contained in:
parent
e744a75823
commit
fc0e0bb55e
52
.gitignore
vendored
52
.gitignore
vendored
|
@ -1,43 +1,9 @@
|
||||||
# ---> Lua
|
/.build/default.main.aardio
|
||||||
# Compiled Lua sources
|
/.build/default.Manifest.xml
|
||||||
luac.out
|
/.build/update-maker.table
|
||||||
|
/.build/update-maker.aardio
|
||||||
# luarocks build files
|
/.update-files/
|
||||||
*.src.rock
|
dist/
|
||||||
*.zip
|
.build/default.init.aardio
|
||||||
*.tar.gz
|
.build/mp.lock
|
||||||
|
/.imtip
|
||||||
# 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
|
|
||||||
|
|
||||||
|
|
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