项目首次迁移至当前仓库

This commit is contained in:
一二三 2023-05-31 00:15:25 +08:00
parent e744a75823
commit fc0e0bb55e
27 changed files with 23576 additions and 43 deletions

52
.gitignore vendored
View File

@ -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
View 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=俄罗斯

BIN
app.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

12
default.aproj Normal file
View 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
View 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
View 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();

View File

View File

View File

View File

View File

View File

View 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
View 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

File diff suppressed because it is too large Load Diff

236
web/js/ace/mode-log.js Normal file
View 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;
}
});
})();

View 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

File diff suppressed because it is too large Load Diff