mirror of
https://github.com/fofolee/uTools-quickcommand.git
synced 2025-08-14 01:29:39 +08:00
编辑器全屏功能,窗口模式调整
This commit is contained in:
parent
3252ad3909
commit
85a923c438
@ -1,10 +1,11 @@
|
|||||||
let getDB = id => {
|
!function () {
|
||||||
|
getDB = id => {
|
||||||
var db = utools.db.get(id),
|
var db = utools.db.get(id),
|
||||||
dbData = db ? db.data : {};
|
dbData = db ? db.data : {};
|
||||||
return dbData;
|
return dbData;
|
||||||
}
|
}
|
||||||
|
|
||||||
let putDB = (code, pushData, id) => {
|
putDB = (code, pushData, id) => {
|
||||||
var db = utools.db.get(id);
|
var db = utools.db.get(id);
|
||||||
if (db) {
|
if (db) {
|
||||||
var rev = db._rev
|
var rev = db._rev
|
||||||
@ -16,10 +17,10 @@ let putDB = (code, pushData, id) => {
|
|||||||
data[code] = pushData;
|
data[code] = pushData;
|
||||||
utools.db.put({ _id: id, data: data });
|
utools.db.put({ _id: id, data: data });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导入
|
// 导入
|
||||||
let importCommand = file => {
|
let importCommand = file => {
|
||||||
var options = file ? { type: 'file', argvs: file } : { type: 'dialog', argvs: { filters: [{ name: 'json', extensions: ['json'] }] } }
|
var options = file ? { type: 'file', argvs: file } : { type: 'dialog', argvs: { filters: [{ name: 'json', extensions: ['json'] }] } }
|
||||||
options.readfile = true
|
options.readfile = true
|
||||||
var fileinfo = getFileInfo(options)
|
var fileinfo = getFileInfo(options)
|
||||||
@ -46,9 +47,9 @@ let importCommand = file => {
|
|||||||
Swal.fire({ icon: 'error', title: '啊嘞?!', text: '格式错误!', })
|
Swal.fire({ icon: 'error', title: '啊嘞?!', text: '格式错误!', })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let exportAll = () => {
|
let exportAll = () => {
|
||||||
json = utools.db.get('customFts').data,
|
json = utools.db.get('customFts').data,
|
||||||
options = {
|
options = {
|
||||||
title: '选择保存位置',
|
title: '选择保存位置',
|
||||||
@ -58,10 +59,9 @@ let exportAll = () => {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
window.saveFile(options, JSON.stringify(json));
|
window.saveFile(options, JSON.stringify(json));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let clearAll = () => {
|
||||||
let clearAll = () => {
|
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
text: '将会清空所有命令,请确认!',
|
text: '将会清空所有命令,请确认!',
|
||||||
icon: 'warning',
|
icon: 'warning',
|
||||||
@ -77,9 +77,9 @@ let clearAll = () => {
|
|||||||
showOptions();
|
showOptions();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let programs = {
|
programs = {
|
||||||
shell: {
|
shell: {
|
||||||
bin: 'bash',
|
bin: 'bash',
|
||||||
argv: '',
|
argv: '',
|
||||||
@ -164,9 +164,9 @@ let programs = {
|
|||||||
codec: '',
|
codec: '',
|
||||||
color: '#438eff'
|
color: '#438eff'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let showOptions = (tag = "默认") => {
|
showOptions = (tag = "默认") => {
|
||||||
$("#options").empty().fadeIn();
|
$("#options").empty().fadeIn();
|
||||||
var currentFts = utools.getFeatures(),
|
var currentFts = utools.getFeatures(),
|
||||||
customFts = getDB('customFts');
|
customFts = getDB('customFts');
|
||||||
@ -185,21 +185,25 @@ let showOptions = (tag = "默认") => {
|
|||||||
if (!fts.tags) return false
|
if (!fts.tags) return false
|
||||||
if (!fts.tags.includes(tag)) return false
|
if (!fts.tags.includes(tag)) return false
|
||||||
}
|
}
|
||||||
var cmds = '', rules;
|
var cmds = '', rules = features.cmds[0].match;
|
||||||
if (features.cmds[0].type == 'regex') {
|
if (features.cmds[0].type == 'regex') {
|
||||||
rules = features.cmds[0].match;
|
|
||||||
if (rules.length > 15) rules = rules.slice(0, 15) + '...';
|
if (rules.length > 15) rules = rules.slice(0, 15) + '...';
|
||||||
cmds = `<div class="topchild">正则</div><div><span class="keyword re">${rules}</span></div>`;
|
cmds = `<div class="topchild">正则</div><div><span class="keyword re">${rules}</span></div>`;
|
||||||
} else if (features.cmds[0].type == 'window') {
|
} else if (features.cmds[0].type == 'window') {
|
||||||
rules = features.cmds[0].match.app.join(",")
|
|
||||||
if(rules.length > 15) rules = rules.slice(0, 15) + '...';
|
|
||||||
cmds += `<div class="topchild">窗口</div><div>`
|
cmds += `<div class="topchild">窗口</div><div>`
|
||||||
|
if (!rules) {
|
||||||
|
cmds += `<span class="keyword win">所有窗口</span>`
|
||||||
|
} else if (rules.title || rules.class) {
|
||||||
|
cmds += `<span class="keyword win">${JSON.stringify(rules).slice(0, 15) + '...'}</span>`;
|
||||||
|
} else if (rules.app) {
|
||||||
|
rules = rules.app.join(",")
|
||||||
|
if(rules.length > 15) rules = rules.slice(0, 15) + '...';
|
||||||
rules.split(',').forEach(r => {
|
rules.split(',').forEach(r => {
|
||||||
cmds += `<span class="keyword win">${r}</span>`;
|
cmds += `<span class="keyword win">${r}</span>`;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
cmds += `</div>`
|
cmds += `</div>`
|
||||||
} else if (features.cmds[0].type == 'files') {
|
} else if (features.cmds[0].type == 'files') {
|
||||||
rules = features.cmds[0].match
|
|
||||||
if (rules.length > 15) rules = rules.slice(0, 15) + '...';
|
if (rules.length > 15) rules = rules.slice(0, 15) + '...';
|
||||||
cmds = `<div class="topchild">文件</div><div><span class="keyword fil">${rules}</span></div>`;
|
cmds = `<div class="topchild">文件</div><div><span class="keyword fil">${rules}</span></div>`;
|
||||||
} else {
|
} else {
|
||||||
@ -227,7 +231,7 @@ let showOptions = (tag = "默认") => {
|
|||||||
<div class="topchild">${features.explain}</div>
|
<div class="topchild">${features.explain}</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="info">
|
<span class="info">
|
||||||
<span style="margin: 0; color: ${fts.program == 'quickcommand' ? "#00af2c;" : programs[fts.program].color}">●</span>
|
<span style="margin: 0; font-size: smaller; color: ${fts.program == 'quickcommand' ? "#00af2c;" : programs[fts.program].color}">●</span>
|
||||||
${fts.program} | ${platformIcons.join('')}
|
${fts.program} | ${platformIcons.join('')}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -262,9 +266,9 @@ let showOptions = (tag = "默认") => {
|
|||||||
<div id="sample" class="footBtn">下载命令</div>
|
<div id="sample" class="footBtn">下载命令</div>
|
||||||
</div>`
|
</div>`
|
||||||
$("#options").append(sidebar + featureList + footer)
|
$("#options").append(sidebar + featureList + footer)
|
||||||
}
|
}
|
||||||
|
|
||||||
let showCustomize = (readonly = false) => {
|
let showCustomize = (readonly = false) => {
|
||||||
$("#customize").remove();
|
$("#customize").remove();
|
||||||
let options = `<option>${Object.keys(programs).join('</option><option>')}</option>`
|
let options = `<option>${Object.keys(programs).join('</option><option>')}</option>`
|
||||||
let allTags = []
|
let allTags = []
|
||||||
@ -345,7 +349,7 @@ let showCustomize = (readonly = false) => {
|
|||||||
<img id="win32" class="platform" src="./img/win32.svg">
|
<img id="win32" class="platform" src="./img/win32.svg">
|
||||||
<img id="darwin" class="platform" src="./img/darwin.svg">
|
<img id="darwin" class="platform" src="./img/darwin.svg">
|
||||||
<img id="linux" class="platform" src="./img/linux.svg">
|
<img id="linux" class="platform" src="./img/linux.svg">
|
||||||
${readonly ? '' : '<button class="button cmdBtn save">保存</button>'}
|
${(readonly && !fofoCommon.isDev()) ? '' : '<button class="button cmdBtn save">保存</button>'}
|
||||||
<button class="button cmdBtn run">运行</button>
|
<button class="button cmdBtn run">运行</button>
|
||||||
<button class="button cmdBtn cancel">取消</button>
|
<button class="button cmdBtn cancel">取消</button>
|
||||||
</p>`
|
</p>`
|
||||||
@ -373,13 +377,13 @@ let showCustomize = (readonly = false) => {
|
|||||||
maximumSelectionLength: 3,
|
maximumSelectionLength: 3,
|
||||||
dropdownParent: $("#customize")
|
dropdownParent: $("#customize")
|
||||||
}).on("select2:unselecting", e => {
|
}).on("select2:unselecting", e => {
|
||||||
(e.params.args.data.text == "默认") && e.preventDefault();
|
(e.params.args.data.text == "默认") && !fofoCommon.isDev() && e.preventDefault();
|
||||||
}).on("select2:selecting", e => {
|
}).on("select2:selecting", e => {
|
||||||
(e.params.args.data.text == "默认" || e.params.args.data.text == "未分类") && e.preventDefault();
|
(e.params.args.data.text == "默认" || e.params.args.data.text == "未分类") && !fofoCommon.isDev() && e.preventDefault();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
createEditor = () => {
|
let createEditor = () => {
|
||||||
window.editor = CodeMirror.fromTextArea(document.getElementById("cmd"), {
|
window.editor = CodeMirror.fromTextArea(document.getElementById("cmd"), {
|
||||||
lineNumbers: true,
|
lineNumbers: true,
|
||||||
matchBrackets: true,
|
matchBrackets: true,
|
||||||
@ -389,8 +393,10 @@ createEditor = () => {
|
|||||||
keyMap: "sublime",
|
keyMap: "sublime",
|
||||||
theme: "mdn-like",
|
theme: "mdn-like",
|
||||||
extraKeys: {
|
extraKeys: {
|
||||||
"Alt-Enter": cm => {
|
"Alt-Enter": () => {
|
||||||
cm.setOption("fullScreen", !cm.getOption("fullScreen"));
|
$('.CodeMirror').hasClass('CodeMirror-fullscreen') &&
|
||||||
|
$('.CodeMirror').removeClass('CodeMirror-fullscreen') ||
|
||||||
|
$('.CodeMirror').addClass('CodeMirror-fullscreen')
|
||||||
},
|
},
|
||||||
"Ctrl-B": () => {
|
"Ctrl-B": () => {
|
||||||
runCurrentCommand()
|
runCurrentCommand()
|
||||||
@ -412,13 +418,13 @@ createEditor = () => {
|
|||||||
|
|
||||||
window.editor.on("change", showHint);
|
window.editor.on("change", showHint);
|
||||||
window.editor.setOption("mode", 'javascript');
|
window.editor.setOption("mode", 'javascript');
|
||||||
}
|
}
|
||||||
|
|
||||||
let showHint = () => {
|
showHint = () => {
|
||||||
editor.showHint({ completeSingle: false });
|
editor.showHint({ completeSingle: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
let beautifyCode = () => {
|
let beautifyCode = () => {
|
||||||
if ($("#customize").is(":parent")) {
|
if ($("#customize").is(":parent")) {
|
||||||
var cmd = window.editor.getValue()
|
var cmd = window.editor.getValue()
|
||||||
switch ($("#program").val()) {
|
switch ($("#program").val()) {
|
||||||
@ -436,20 +442,20 @@ let beautifyCode = () => {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 获取特殊变量
|
// 获取特殊变量
|
||||||
let getSpecialVars = () => {
|
let getSpecialVars = () => {
|
||||||
var specialVars = []
|
var specialVars = []
|
||||||
$("#vars option").each(i => {
|
$("#vars option").each(i => {
|
||||||
var selector = $("#vars option").eq(i)
|
var selector = $("#vars option").eq(i)
|
||||||
if (selector.css('display') != 'none') specialVars.push(selector.val())
|
if (selector.css('display') != 'none') specialVars.push(selector.val())
|
||||||
})
|
})
|
||||||
localStorage['specialVars'] = specialVars
|
localStorage['specialVars'] = specialVars
|
||||||
}
|
}
|
||||||
|
|
||||||
let typeCheck = () => {
|
let typeCheck = () => {
|
||||||
var type = $("#type").val();
|
var type = $("#type").val();
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'key':
|
case 'key':
|
||||||
@ -473,27 +479,27 @@ let typeCheck = () => {
|
|||||||
$("#ruleWord").html("进 程");
|
$("#ruleWord").html("进 程");
|
||||||
$(".var.regex, .var.files").prop("disabled", true)
|
$(".var.regex, .var.files").prop("disabled", true)
|
||||||
$(".var.window").prop("disabled", false)
|
$(".var.window").prop("disabled", false)
|
||||||
$("#rule").prop("placeholder", '窗口的进程名,多个用逗号隔开');
|
$("#rule").prop("placeholder", '多个窗口进程逗号隔开,留空匹配所有窗口');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
getSpecialVars()
|
getSpecialVars()
|
||||||
}
|
}
|
||||||
|
|
||||||
let clearAllFeatures = () => {
|
let clearAllFeatures = () => {
|
||||||
for (var fts of utools.getFeatures()) {
|
for (var fts of utools.getFeatures()) {
|
||||||
utools.removeFeature(fts.code)
|
utools.removeFeature(fts.code)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let hasCustomIcon = () => {
|
let hasCustomIcon = () => {
|
||||||
var src = $("#icon").attr('src');
|
var src = $("#icon").attr('src');
|
||||||
var iconame = $("#iconame").val();
|
var iconame = $("#iconame").val();
|
||||||
return /data:image\/png;base64,/.test(src) || iconame
|
return /data:image\/png;base64,/.test(src) || iconame
|
||||||
}
|
}
|
||||||
|
|
||||||
let programCheck = () => {
|
let programCheck = () => {
|
||||||
let mode = $('#program').val();
|
let mode = $('#program').val();
|
||||||
$('.customscript').hide();
|
$('.customscript').hide();
|
||||||
$('.quickactions').hide();
|
$('.quickactions').hide();
|
||||||
@ -529,10 +535,10 @@ let programCheck = () => {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
window.editor.setOption("mode", mode);
|
window.editor.setOption("mode", mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 合规性校验
|
// 合规性校验
|
||||||
let cmdCheck = (type, cmd) => {
|
let cmdCheck = (type, cmd) => {
|
||||||
var blacklist
|
var blacklist
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'key':
|
case 'key':
|
||||||
@ -557,19 +563,19 @@ let cmdCheck = (type, cmd) => {
|
|||||||
} else {
|
} else {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 开关
|
// 开关
|
||||||
$("#options").on('change', 'input[type=checkbox]', function () {
|
$("#options").on('change', 'input[type=checkbox]', function () {
|
||||||
var customFts = getDB('customFts'),
|
var customFts = getDB('customFts'),
|
||||||
code = $(this).attr('id');
|
code = $(this).attr('id');
|
||||||
if (!utools.removeFeature(code)) {
|
if (!utools.removeFeature(code)) {
|
||||||
utools.setFeature(customFts[code].features);
|
utools.setFeature(customFts[code].features);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 底部功能按钮
|
// 底部功能按钮
|
||||||
$("#options").on('click', '.footBtn', function () {
|
$("#options").on('click', '.footBtn', function () {
|
||||||
switch ($(this).attr('id')) {
|
switch ($(this).attr('id')) {
|
||||||
case 'sample': visit('https://github.com/fofolee/uTools-QuickerCommand/tree/master/CommandCollections');
|
case 'sample': visit('https://github.com/fofolee/uTools-QuickerCommand/tree/master/CommandCollections');
|
||||||
break;
|
break;
|
||||||
@ -587,10 +593,10 @@ $("#options").on('click', '.footBtn', function () {
|
|||||||
case 'clear': clearAll();
|
case 'clear': clearAll();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
$("#options").on('click', '.editBtn', function () {
|
$("#options").on('click', '.editBtn', function () {
|
||||||
var readonly = false,
|
var readonly = false,
|
||||||
code = $(this).attr('code'),
|
code = $(this).attr('code'),
|
||||||
data = utools.db.get("customFts").data[code],
|
data = utools.db.get("customFts").data[code],
|
||||||
@ -604,7 +610,9 @@ $("#options").on('click', '.editBtn', function () {
|
|||||||
if (cmds.type == 'regex' || cmds.type == 'files') {
|
if (cmds.type == 'regex' || cmds.type == 'files') {
|
||||||
$('#rule').val(cmds.match);
|
$('#rule').val(cmds.match);
|
||||||
} else if (cmds.type == 'window') {
|
} else if (cmds.type == 'window') {
|
||||||
$('#rule').val(cmds.match.app);
|
if (!cmds.match) $('#rule').val('');
|
||||||
|
else if (cmds.match.title || cmds.match.class) $('#rule').val(JSON.stringify(cmds.match));
|
||||||
|
else $('#rule').val(cmds.match.app);
|
||||||
} else {
|
} else {
|
||||||
$('#type').val('key').trigger("change")
|
$('#type').val('key').trigger("change")
|
||||||
$('#rule').val(data.features.cmds.toString());
|
$('#rule').val(data.features.cmds.toString());
|
||||||
@ -629,10 +637,10 @@ $("#options").on('click', '.editBtn', function () {
|
|||||||
$("#customize").animate({ top: '0px' }, () => {
|
$("#customize").animate({ top: '0px' }, () => {
|
||||||
window.editor.replaceRange(data.cmd.slice(2000), {line: Infinity});
|
window.editor.replaceRange(data.cmd.slice(2000), {line: Infinity});
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
// 添加模拟按键
|
// 添加模拟按键
|
||||||
$("#options").on('click', '#addKey', function () {
|
$("#options").on('click', '#addKey', function () {
|
||||||
$("#addKey").text("▶ 录制中").addClass('record')
|
$("#addKey").text("▶ 录制中").addClass('record')
|
||||||
message('开始录制按键,可连续录制')
|
message('开始录制按键,可连续录制')
|
||||||
Mousetrap.record(sequence => {
|
Mousetrap.record(sequence => {
|
||||||
@ -643,17 +651,17 @@ $("#options").on('click', '#addKey', function () {
|
|||||||
})
|
})
|
||||||
$("#addKey").text("﹢按键").removeClass('record')
|
$("#addKey").text("﹢按键").removeClass('record')
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
// quickCommand的帮助
|
// quickCommand的帮助
|
||||||
$("#options").on('click', '#showHelp', function () {
|
$("#options").on('click', '#showHelp', function () {
|
||||||
$.get('./HELP.md', r => {
|
$.get('./HELP.md', r => {
|
||||||
utools.ubrowser.goto(r).run()
|
utools.ubrowser.goto(r).run()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// 添加动作
|
// 添加动作
|
||||||
$("#options").on('click', '#addAction', function () {
|
$("#options").on('click', '#addAction', function () {
|
||||||
var html = `
|
var html = `
|
||||||
<select id="actionType" class="swal2-select" style="width: 80%; height: 3rem;">
|
<select id="actionType" class="swal2-select" style="width: 80%; height: 3rem;">
|
||||||
<option value="open" args="文件、文件夹或软件的绝对路径">打开文件/文件夹/软件</option>
|
<option value="open" args="文件、文件夹或软件的绝对路径">打开文件/文件夹/软件</option>
|
||||||
@ -689,10 +697,10 @@ $("#options").on('click', '#addAction', function () {
|
|||||||
window.editor.replaceSelection(`${action}\n`)
|
window.editor.replaceSelection(`${action}\n`)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// 导出
|
// 导出
|
||||||
$("#options").on('click', '.exportBtn', function () {
|
$("#options").on('click', '.exportBtn', function () {
|
||||||
var code = $(this).attr('code'),
|
var code = $(this).attr('code'),
|
||||||
json = getDB('customFts')[code],
|
json = getDB('customFts')[code],
|
||||||
options = {
|
options = {
|
||||||
@ -702,10 +710,10 @@ $("#options").on('click', '.exportBtn', function () {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
window.saveFile(options, JSON.stringify(json));
|
window.saveFile(options, JSON.stringify(json));
|
||||||
})
|
})
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
$("#options").on('click', '.delBtn', function () {
|
$("#options").on('click', '.delBtn', function () {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
text: '删除这个快捷命令',
|
text: '删除这个快捷命令',
|
||||||
icon: 'warning',
|
icon: 'warning',
|
||||||
@ -727,10 +735,10 @@ $("#options").on('click', '.delBtn', function () {
|
|||||||
showOptions(currentTag);
|
showOptions(currentTag);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// 选择图标
|
// 选择图标
|
||||||
$("#options").on('click', '#icon, #iconame', function () {
|
$("#options").on('click', '#icon, #iconame', function () {
|
||||||
var options = {
|
var options = {
|
||||||
buttonLabel: '选择',
|
buttonLabel: '选择',
|
||||||
filters: [{
|
filters: [{
|
||||||
@ -743,17 +751,17 @@ $("#options").on('click', '#icon, #iconame', function () {
|
|||||||
$("#iconame").val(file.name);
|
$("#iconame").val(file.name);
|
||||||
$("#icon").attr('src', file.path);
|
$("#icon").attr('src', file.path);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
let SaveCurrentCommand = async (debug = false) => {
|
let SaveCurrentCommand = async () => {
|
||||||
if ($('#tags').is(":parent")) {
|
if ($('#tags').is(":parent")) {
|
||||||
var type = $('#type').val(),
|
var type = $('#type').val(),
|
||||||
code = $("#code").val(),
|
code = $("#code").val(),
|
||||||
tags = $('#tags').val(),
|
tags = $('#tags').val(),
|
||||||
rule = $('#rule').val(),
|
rule = $('#rule').val(),
|
||||||
cmd = window.editor.getValue();
|
cmd = window.editor.getValue();
|
||||||
if (tags && tags.includes("默认") && !debug) return
|
if (tags && tags.includes("默认") && !fofoCommon.isDev()) return
|
||||||
if (!rule) return swal.fire(`${$('#ruleWord').text().replace(" ", "")} 不能留空!`)
|
if (type != "window" && !rule) return swal.fire(`${$('#ruleWord').text().replace(" ", "")} 不能留空!`)
|
||||||
if (!cmdCheck(type, cmd)) return
|
if (!cmdCheck(type, cmd)) return
|
||||||
if (!code) {
|
if (!code) {
|
||||||
// 生成唯一code
|
// 生成唯一code
|
||||||
@ -870,10 +878,10 @@ let SaveCurrentCommand = async (debug = false) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 显示运行结果
|
// 显示运行结果
|
||||||
let showRunResult = (content, raw, success) => {
|
let showRunResult = (content, raw, success) => {
|
||||||
var options, position, showClass, hideClass, maxlength = 100000
|
var options, position, showClass, hideClass, maxlength = 100000
|
||||||
if ($("#vars").is(":parent")) {
|
if ($("#vars").is(":parent")) {
|
||||||
position = 'top'
|
position = 'top'
|
||||||
@ -910,9 +918,9 @@ let showRunResult = (content, raw, success) => {
|
|||||||
}
|
}
|
||||||
success ? swalOneByOne(options) : Swal.fire(options)
|
success ? swalOneByOne(options) : Swal.fire(options)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let runCurrentCommand = async () => {
|
let runCurrentCommand = async () => {
|
||||||
if ($("#customize").is(":parent")) {
|
if ($("#customize").is(":parent")) {
|
||||||
var cmd = window.editor.getValue()
|
var cmd = window.editor.getValue()
|
||||||
cmd = special(cmd)
|
cmd = special(cmd)
|
||||||
@ -969,31 +977,31 @@ let runCurrentCommand = async () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let killCurrentCommand = () => {
|
let killCurrentCommand = () => {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
let quitCurrentCommand = () => {
|
||||||
|
|
||||||
let quitCurrentCommand = () => {
|
|
||||||
if ($("#customize").is(":parent") && $("#featureList").is(":parent")) {
|
if ($("#customize").is(":parent") && $("#featureList").is(":parent")) {
|
||||||
$("#customize").animate({ top: '100%' });
|
$("#customize").animate({ top: '100%' });
|
||||||
$("#customize").empty()
|
$("#customize").empty()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let highlightIfKnown = ext => {
|
let highlightIfKnown = ext => {
|
||||||
var lang = Object.keys(programs).filter(p => programs[p].ext == ext)
|
var lang = Object.keys(programs).filter(p => programs[p].ext == ext)
|
||||||
if (lang.length) {
|
if (lang.length) {
|
||||||
if (lang[0] == 'python') getPythonMods()
|
if (lang[0] == 'python') getPythonMods()
|
||||||
window.editor.setOption("mode", lang[0])
|
window.editor.setOption("mode", lang[0])
|
||||||
return lang[0]
|
return lang[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
showCodeEditor = file => {
|
showCodeEditor = file => {
|
||||||
let options = `<option>${Object.keys(programs).join('</option><option>')}</option>`
|
let options = `<option>${Object.keys(programs).join('</option><option>')}</option>`
|
||||||
var customWindow = `
|
var customWindow = `
|
||||||
|
|
||||||
<div id="customize">
|
<div id="customize">
|
||||||
<select id="program">
|
<select id="program">
|
||||||
<option value="quickcommand">quickcommand</option>
|
<option value="quickcommand">quickcommand</option>
|
||||||
@ -1013,12 +1021,12 @@ showCodeEditor = file => {
|
|||||||
<span id="addKey" class="footBtn robot">﹢按键</span>
|
<span id="addKey" class="footBtn robot">﹢按键</span>
|
||||||
<span id="showHelp" class="footBtn robot">?帮助</span>
|
<span id="showHelp" class="footBtn robot">?帮助</span>
|
||||||
</span>
|
</span>
|
||||||
<textarea id="cmd" placeholder="可以直接拖放脚本文件至此处, 支持VSCode快捷键\nCtrl+B 运行\nCtrl+F 搜索\nShift+Alt+F 格式化(仅JS/PY)"></textarea>
|
<textarea id="cmd" placeholder="可以直接拖放脚本文件至此处, 支持VSCode快捷键\nCtrl+B 运行\nCtrl+F 搜索\nAlt+Enter 全屏\nShift+Alt+F 格式化(仅JS/PY)"></textarea>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
$("#options").html(customWindow)
|
$("#options").html(customWindow)
|
||||||
createEditor()
|
createEditor()
|
||||||
$(".CodeMirror").css({ bottom: "0", top: "33px", left: "0", right: "0" })
|
$(".CodeMirror").addClass('CodeMirror-coderunner')
|
||||||
$("#customize").css({ top: '0px', padding: '0px' });
|
$("#customize").css({ top: '0px', padding: '0px' });
|
||||||
$("span.customscript > input").css({"height": "30px"})
|
$("span.customscript > input").css({"height": "30px"})
|
||||||
var db = getDB('codeHistory')
|
var db = getDB('codeHistory')
|
||||||
@ -1044,81 +1052,82 @@ showCodeEditor = file => {
|
|||||||
}
|
}
|
||||||
programCheck()
|
programCheck()
|
||||||
$('#program').select2({
|
$('#program').select2({
|
||||||
width: 130,
|
width: 140,
|
||||||
minimumResultsForSearch: Infinity,
|
minimumResultsForSearch: Infinity,
|
||||||
dropdownParent: $("#customize"),
|
dropdownParent: $("#customize"),
|
||||||
dropdownAutoWidth: true
|
dropdownAutoWidth: true
|
||||||
});
|
});
|
||||||
$("#options").show()
|
$("#options").show()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 切换TAGS
|
// 切换TAGS
|
||||||
$("#options").on('click', '.sidebar li', function () {
|
$("#options").on('click', '.sidebar li', function () {
|
||||||
showOptions($(this).text());
|
showOptions($(this).text());
|
||||||
})
|
})
|
||||||
|
|
||||||
// 运行
|
// 运行
|
||||||
$("#options").on('click', '.cmdBtn.run, #runCode', function () {
|
$("#options").on('click', '.cmdBtn.run, #runCode', function () {
|
||||||
runCurrentCommand()
|
runCurrentCommand()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 格式化
|
// 格式化
|
||||||
$("#options").on('click', '#beautifyCode', function () {
|
$("#options").on('click', '#beautifyCode', function () {
|
||||||
beautifyCode()
|
beautifyCode()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 取消
|
// 取消
|
||||||
$("#options").on('click', '.cmdBtn.cancel', function () {
|
$("#options").on('click', '.cmdBtn.cancel', function () {
|
||||||
quitCurrentCommand()
|
quitCurrentCommand()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 保存
|
// 保存
|
||||||
$("#options").on('click', '.cmdBtn.save', function () {
|
$("#options").on('click', '.cmdBtn.save', function () {
|
||||||
SaveCurrentCommand()
|
SaveCurrentCommand()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 语言选项改变时
|
// 语言选项改变时
|
||||||
$("#options").on('change', '#program', function () {
|
$("#options").on('change', '#program', function () {
|
||||||
programCheck()
|
programCheck()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 变量选项改变时
|
// 变量选项改变时
|
||||||
$("#options").on('change', '#vars', function () {
|
$("#options").on('change', '#vars', function () {
|
||||||
$("#vars").css({'color':'black'})
|
$("#vars").css({'color':'black'})
|
||||||
window.editor.replaceSelection($("#vars").val());
|
window.editor.replaceSelection($("#vars").val());
|
||||||
})
|
})
|
||||||
|
|
||||||
$("#options").on('change', '#action', function () {
|
$("#options").on('change', '#action', function () {
|
||||||
$("#action").css({ 'color': 'black' })
|
$("#action").css({ 'color': 'black' })
|
||||||
})
|
})
|
||||||
|
|
||||||
// 方式选项改变时
|
// 方式选项改变时
|
||||||
$("#options").on('change', '#type', function () {
|
$("#options").on('change', '#type', function () {
|
||||||
// resetVars();
|
// resetVars();
|
||||||
typeCheck();
|
typeCheck();
|
||||||
})
|
})
|
||||||
|
|
||||||
// 平台按钮
|
// 平台按钮
|
||||||
$("#options").on('click', '.platform', function () {
|
$("#options").on('click', '.platform', function () {
|
||||||
if ($(this).hasClass('disabled')){
|
if ($(this).hasClass('disabled')){
|
||||||
$(this).removeClass('disabled')
|
$(this).removeClass('disabled')
|
||||||
} else {
|
} else {
|
||||||
if ($('.disabled').length == 2) message('至少保留一个平台')
|
if ($('.disabled').length == 2) message('至少保留一个平台')
|
||||||
else $(this).addClass('disabled')
|
else $(this).addClass('disabled')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Mousetrap.bind('ctrl+s', () => {
|
Mousetrap.bind('ctrl+s', () => {
|
||||||
SaveCurrentCommand()
|
SaveCurrentCommand()
|
||||||
return false
|
return false
|
||||||
});
|
});
|
||||||
|
|
||||||
Mousetrap.bind('ctrl+q', () => {
|
Mousetrap.bind('ctrl+q', () => {
|
||||||
quitCurrentCommand()
|
quitCurrentCommand()
|
||||||
return false
|
return false
|
||||||
});
|
});
|
||||||
|
|
||||||
Mousetrap.bind('ctrl+b', () => {
|
Mousetrap.bind('ctrl+b', () => {
|
||||||
runCurrentCommand()
|
runCurrentCommand()
|
||||||
return false
|
return false
|
||||||
});
|
});
|
||||||
|
}()
|
Loading…
x
Reference in New Issue
Block a user