Merge pull request #4 from ghostbody/feature/subinput

feat: 支持子命令
This commit is contained in:
fofolee 2019-10-15 21:10:22 +08:00 committed by GitHub
commit a891952283
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 93 additions and 59 deletions

View File

@ -7,8 +7,6 @@ utools.onPluginEnter(({ code, type, payload }) => {
$("#options").show(); $("#options").show();
showOptions(); showOptions();
} else { } else {
utools.setExpendHeight(0);
utools.hideMainWindow();
$("#options").hide(); $("#options").hide();
$("#out").show(); $("#out").show();
var db = utools.db.get('customFts').data[code], var db = utools.db.get('customFts').data[code],
@ -22,44 +20,71 @@ utools.onPluginEnter(({ code, type, payload }) => {
if (type == 'over') cmd = cmd.replace(/\{\{input\}\}/mg, payload); if (type == 'over') cmd = cmd.replace(/\{\{input\}\}/mg, payload);
// 无输出的批处理 // 无输出的批处理
if (db.output == 'ignore' && option.ext == 'bat') option.bin = 'explorer'; if (db.output == 'ignore' && option.ext == 'bat') option.bin = 'explorer';
// 运行脚本 if (db.hasSubInput) {
window.run(cmd, option, db.codec, (stdout, stderr) => { // 启动子命令输入
// 报错 // 清空输出
if (stderr) { $("#out").text('');
window.messageBox({ type: 'error', icon: window.logo, message: stderr, buttons: ['纳尼?!'] }) var subinput = '';
utools.outPlugin(); var setSubInput = () => {
return; utools.setSubInput(({text}) => {
subinput = text;
}, '');
} }
// 有输出 var handleEnter = (event) => {
if (stdout) { if (event.keyCode == 13) {
switch (db.output) { $("#out").text('');
case "ignore": var execmd = cmd.replace(/\{\{subinput\}\}/mg, subinput);
utools.outPlugin(); runCmd(execmd, option, db.codec, db.output);
break;
case "text":
utools.showMainWindow();
utools.setExpendHeight(600);
$("#out").text(stdout);
break;
case "html":
utools.showMainWindow();
utools.setExpendHeight(600);
$("#out").html(stdout);
break;
case "clip":
copyTo(stdout);
utools.outPlugin();
break;
case "send":
copyTo(stdout);
paste();
utools.outPlugin();
break;
} }
// 无输出 };
} else { setSubInput();
utools.outPlugin(); document.addEventListener('keydown', handleEnter);
} } else {
}) utools.setExpendHeight(0);
utools.hideMainWindow();
runCmd(cmd, option, db.codec, db.output);
}
} }
}); });
function runCmd(cmd, option, codec, output) {
// 运行脚本
window.run(cmd, option, codec, (stdout, stderr) => {
// 报错
if (stderr) {
window.messageBox({ type: 'error', icon: window.logo, message: stderr, buttons: ['纳尼?!'] })
utools.outPlugin();
return;
}
// 有输出
if (stdout) {
switch (output) {
case "ignore":
utools.outPlugin();
break;
case "text":
utools.showMainWindow();
utools.setExpendHeight(600);
$("#out").text(stdout);
break;
case "html":
utools.showMainWindow();
utools.setExpendHeight(600);
$("#out").html(stdout);
break;
case "clip":
copyTo(stdout);
utools.outPlugin();
break;
case "send":
copyTo(stdout);
paste();
utools.outPlugin();
break;
}
// 无输出
} else {
utools.outPlugin();
}
})
}

View File

@ -204,6 +204,7 @@ showCustomize = () => {
<option value="{{isWin}}">是否Window系统</option> <option value="{{isWin}}">是否Window系统</option>
<option value="{{HostName}}">本计算机名</option> <option value="{{HostName}}">本计算机名</option>
<option value="{{input}}">主输入框的文本</option> <option value="{{input}}">主输入框的文本</option>
<option value="{{subinput}}">子输入框的文本</option>
<option value="{{pwd}}">文件管理器当前目录</option> <option value="{{pwd}}">文件管理器当前目录</option>
<option value="{{ChromeUrl}}">Chrome当前链接</option> <option value="{{ChromeUrl}}">Chrome当前链接</option>
<option value="{{ClipText}}">剪切板的文本</option> <option value="{{ClipText}}">剪切板的文本</option>
@ -372,7 +373,8 @@ $("#options").on('click', '.saveBtn', function () {
iconpath = $("#icon").attr('src'), iconpath = $("#icon").attr('src'),
cmd = window.editor.getValue(), cmd = window.editor.getValue(),
icon, icon,
base64ico; base64ico,
hasSubInput;
if (!desc) desc = ' '; if (!desc) desc = ' ';
// 自定义了图标的情况下 // 自定义了图标的情况下
if (iconame) { if (iconame) {
@ -398,6 +400,12 @@ $("#options").on('click', '.saveBtn', function () {
} else { } else {
noKeyword = false; noKeyword = false;
} }
// 需要子输入框
if (cmd.includes('{{subinput}}')) {
hasSubInput = true;
} else {
hasSubInput = false;
}
$("#customize").animate({ top: '100%' }); $("#customize").animate({ top: '100%' });
// 添加特性 // 添加特性
pushData = { pushData = {
@ -412,7 +420,8 @@ $("#options").on('click', '.saveBtn', function () {
output: output, output: output,
codec: codec, codec: codec,
base64Ico: base64ico, base64Ico: base64ico,
noKeyword: noKeyword noKeyword: noKeyword,
hasSubInput: hasSubInput
} }
if (program == 'custom') { if (program == 'custom') {
pushData.customOptions = { pushData.customOptions = {