update files

This commit is contained in:
nuintun 2015-12-02 16:50:31 +08:00
parent 0de8de60c8
commit 3671a3c456
2 changed files with 34 additions and 17 deletions

View File

@ -161,18 +161,21 @@ module.exports = Vue.component('app-main', {
context.expandCommand = trigger && trigger.contains(target); context.expandCommand = trigger && trigger.contains(target);
}, false); }, false);
window.TERMSTR = '';
ipc.on('emulator', function (event, type, project, data){ ipc.on('emulator', function (event, type, project, data){
worker.postMessage({ action: 'write', name: project.name, data: data + '' }); switch (type) {
case 'data':
window.TERMSTR += JSON.stringify(data.toString()) + '\n'; data = data.toString();
break;
case 'error':
data = '\u001b[31m发生错误 \u001b[0m' + data.toString();
break;
case 'close':
data = '\u001b[32m命令执行完成\u001b[0m';
break;
}
worker.postMessage({ action: 'write', name: project.name, data: data.toString() });
// event.sender.send('emulator', project, 'stop'); // event.sender.send('emulator', project, 'stop');
}); });
window.doWrite = function (){
require('fs').writeFile('./screen.text', window.TERMSTR);
};
}, },
ready: function (){ ready: function (){
var context = this; var context = this;
@ -183,8 +186,6 @@ module.exports = Vue.component('app-main', {
} }
}; };
window.worker = worker;
openXTerm(this.project.name); openXTerm(this.project.name);
} }
}); });

View File

@ -6,6 +6,7 @@
importScripts('../../terminal/index.js'); importScripts('../../terminal/index.js');
var ACTIVE;
var RUNTIMECACHE = {}; var RUNTIMECACHE = {};
function send(name, xterm){ function send(name, xterm){
@ -16,22 +17,37 @@ function send(name, xterm){
} }
onmessage = function (event){ onmessage = function (event){
var xterm;
var message = event.data; var message = event.data;
switch (message.action) { switch (message.action) {
case 'open': case 'open':
RUNTIMECACHE[message.name] = RUNTIMECACHE[message.name] || new AnsiTerminal(120, 60, 0); xterm = RUNTIMECACHE[message.name];
send(message.name, RUNTIMECACHE[message.name]);
if (!xterm) {
xterm = new AnsiTerminal(120, 60, 0);
xterm.newline_mode = true;
RUNTIMECACHE[message.name] = xterm;
}
ACTIVE = message.name;
send(message.name, xterm);
break; break;
case 'close': case 'close':
delete RUNTIMECACHE[message.name]; delete RUNTIMECACHE[message.name];
break; break;
case 'write': case 'write':
var xterm = RUNTIMECACHE[message.name]; xterm = RUNTIMECACHE[message.name];
xterm.write(message.data); if (ACTIVE === message.name) {
xterm.write(message.data);
send(message.name, xterm); send(message.name, xterm);
} else {
setTimeout(function (){
xterm.write(message.data);
}, 16);
}
break; break;
} }
}; };