From de580d8668010c76479ece84407b7a1b134d573b Mon Sep 17 00:00:00 2001 From: fofolee Date: Mon, 22 Jun 2020 23:00:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/options.js | 15 +++++--- src/assets/style/options.css | 4 +- src/preload.js | 73 ++++++++++++++++++++++-------------- 3 files changed, 56 insertions(+), 36 deletions(-) diff --git a/src/assets/options.js b/src/assets/options.js index 64d818e..040d30b 100644 --- a/src/assets/options.js +++ b/src/assets/options.js @@ -337,12 +337,14 @@ let showCustomize = () => { createEditor() $('#program, #type, #output').select2({ width: '40%', - minimumResultsForSearch: Infinity + minimumResultsForSearch: Infinity, + dropdownParent: $("#customize") }); $('#vars').select2({ width: '40%', placeholder: "插入特殊变量", - minimumResultsForSearch: Infinity + minimumResultsForSearch: Infinity, + dropdownParent: $("#customize") }); $('#tags').select2({ width: '40%', @@ -350,7 +352,8 @@ let showCustomize = () => { tags: true, allowClear: true, tokenSeparators: [',', ' '], - maximumSelectionLength: 3 + maximumSelectionLength: 3, + dropdownParent: $("#customize") }); $("#customize").animate({ top: '0px' }); } @@ -972,7 +975,8 @@ showCodeEditor = () => { ` $("#options").html(customWindow) createEditor() - $(".CodeMirror").css({ height: '41rem' }) + $(".CodeMirror").css({ height: '580px' }) + $(".robot").css({ "margin-bottom": "5px" }); $("#customize").css({ top: '0px', padding: '0px' }); $("span.customscript > input").css({"height": "30px"}) var db = getDB('codeHistory') @@ -984,7 +988,8 @@ showCodeEditor = () => { programCheck() $('#program').select2({ width: 100, - minimumResultsForSearch: Infinity + minimumResultsForSearch: Infinity, + dropdownParent: $("#customize") }); $("#options").show() } diff --git a/src/assets/style/options.css b/src/assets/style/options.css index 0f8e568..dcc98e8 100644 --- a/src/assets/style/options.css +++ b/src/assets/style/options.css @@ -523,9 +523,9 @@ input::-webkit-input-placeholder { transition: 0.5s; } -::-webkit-scrollbar { +/* ::-webkit-scrollbar { height: 0; -} +} */ li.CodeMirror-hint { min-width: 200px; diff --git a/src/preload.js b/src/preload.js index 710dbee..d23b561 100644 --- a/src/preload.js +++ b/src/preload.js @@ -81,7 +81,7 @@ const quickcommand = { showInputBox: function (callback, placeHolders) { let helps = `正确用法: - showInputBox(yourinput => { + quickcommand.showInputBox(yourinput => { do something... }, [placeholder of input1, placeholder of input2...])` if (!(callback instanceof Function)) throw helps @@ -109,8 +109,10 @@ const quickcommand = { showSelectBox: function (callback, selects) { let helps = `正确用法: - showSelectBox(yourchoise => { - do something... + quickcommand.showSelectBox(choise => { + var index = choise.index + var text = choise.text + //do something... }, [option1, option2...])` if (!(callback instanceof Function)) throw helps if (!(selects instanceof Array) || (selects && !selects.length)) throw helps @@ -122,7 +124,7 @@ const quickcommand = { var selectBoxNumbers = selects.length modWindowHeight(selectBoxNumbers) for (let i = 0; i < selectBoxNumbers; i++) { - html += `` + html += `` } html += `` $("body").append(html) @@ -135,7 +137,7 @@ const quickcommand = { $('#quickselect .select2').hide() $('#selectBox').on('select2:select', function (e) { $('#selectBox').off('select2:select'); - callback($(this).val()) + callback({ index: $(this).val(), text: selects[$(this).val()] }) $("#quickselect").remove() }) $('#quickselect .select2-search__field').bind("input propertychange change",function(event){ @@ -145,8 +147,10 @@ const quickcommand = { showButtonBox: function (callback, buttons) { let helps = `正确用法: - showButtonBox(yourchoise => { - do something... + quickcommand.showButtonBox(yourchoise => { + var index = choise.index + var text = choise.text + //do something... }, [button1, button2...])` if (!(callback instanceof Function)) throw helps if (!(buttons instanceof Array) || (buttons && !buttons.length)) throw helps @@ -258,27 +262,39 @@ runCodeInVm = (cmd, cb) => { // shell 以环境变量下命令作为代码提示 getShellCommand = () => { - var bin = [] - if (!utools.isWindows()) { - process.env.PATH.split(':').forEach(d => { - try { - bin = bin.concat(fs.readdirSync(d).filter(x => x[0] != ".")) - } catch (e) { } - }) + var bin = localStorage['shellcommand'] + if (bin) { + bin = JSON.parse(bin) + } else { + bin = [] + if (!utools.isWindows()) { + process.env.PATH.split(':').forEach(d => { + try { + bin = bin.concat(fs.readdirSync(d).filter(x => x[0] != ".")) + } catch (e) { } + }) + localStorage['shellcommand'] = JSON.stringify(bin) + } } return bin } // cmd 以环境变量下命令作为代码提示 getCmdCommand = () => { - var bin = [] - if (utools.isWindows()) { - process.env.Path.split(';').forEach(d => { - try { - bin = bin.concat(fs.readdirSync(d).filter(x => x.length > 4 && x.slice(-4) == '.exe')) - } catch (e) { } - }) - bin = bin.concat(bin).join("|").replace(/\.exe/g, '').split("|") + var bin = localStorage['cmdcommand'] + if (bin) { + bin = JSON.parse(bin) + } else { + bin = [] + if (utools.isWindows()) { + process.env.Path.split(';').forEach(d => { + try { + bin = bin.concat(fs.readdirSync(d).filter(x => x.length > 4 && x.slice(-4) == '.exe')) + } catch (e) { } + }) + bin = bin.concat(bin).join("|").replace(/\.exe/g, '').split("|") + localStorage['cmdcommand'] = JSON.stringify(bin) + } } return bin } @@ -455,10 +471,10 @@ runCodeFile = (cmd, option, terminal, callback) => { // } var child, cmdline if (bin.slice(-7) == 'csc.exe') { - cmdline = `pushd "${path.dirname(script)}" && ${bin} ${argv} "${script}" && "${script.slice(0, -2) + 'exe'}"` + cmdline = `${bin} ${argv} /out:"${script.slice(0, -2) + 'exe'}" "${script}" && "${script.slice(0, -2) + 'exe'}"` } else if (bin == 'gcc') { var suffix = utools.isWindows() ? '.exe' : '' - cmdline = `pushd "${path.dirname(script)}" && ${bin} ${argv} ${script.slice(0, -2)} "${script}" && "${script.slice(0, -2) + suffix}"` + cmdline = `${bin} ${argv} "${script.slice(0, -2)}" "${script}" && "${script.slice(0, -2) + suffix}"` } else if (utools.isWindows() && bin == 'bash') { cmdline = `${bin} ${argv} "${script.replace(/\\/g, '/').replace(/C:/i, '/mnt/c')}"` } else { @@ -469,21 +485,19 @@ runCodeFile = (cmd, option, terminal, callback) => { if (utools.isWindows()) { if (bin.slice(-7) == 'csc.exe' || bin == 'gcc') { cmdline = cmdline.split("&&") - cmdline = cmdline[0] + "&&" + cmdline[1] + "&& start cmd /k " + cmdline[2] + cmdline = cmdline[0] + "&& start cmd /k " + cmdline[1] } else { cmdline = `start cmd /k ${cmdline}` } } else if(utools.isMacOs()){ var appleScript = `if application "Terminal" is running then tell application "Terminal" - # do script without "in window" will open a new window - do script "clear;${bin} ${argv} ${script}" + do script "clear;${cmdline.replace(/"/g, `\\"`)}" activate end tell else tell application "Terminal" - # window 1 is guaranteed to be recently opened window - do script "clear;${bin} ${argv} ${script}" in window 1 + do script "clear;${cmdline.replace(/"/g, `\\"`)}" in window 1 activate end tell end if`; @@ -495,6 +509,7 @@ runCodeFile = (cmd, option, terminal, callback) => { child = child_process.spawn(cmdline, { encoding: 'buffer', shell: true }) // var chunks = [], // err_chunks = []; + console.log('running: ' + cmdline); child.stdout.on('data', chunk => { if (option.codec) chunk = iconv.decode(chunk, option.codec) callback(chunk, null)