-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathrenderer.js
84 lines (81 loc) · 3.36 KB
/
renderer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
function connectSession(term, termElement, paneId=0) {
const ipcRenderer = electronAccess.ipcRenderer;
term.processInputBytes = function(data) {
ipcRenderer.send('process-input-bytes', paneId, data);
};
term.reportEvent = function(name, data) {
ipcRenderer.send('report-event', paneId, name, data);
};
term.setWindowSize = function(numRows, numColumns,
availHeight, availWidth) {
ipcRenderer.send('set-window-size', paneId, numRows, numColumns,
availHeight, availWidth);
};
ipcRenderer.on('output-data', function (event, paneId, data) {
if (paneId == 0)
DomTerm._handleOutputData(term, data);
else {
let childNode = DomTerm.layoutTop.firstChild;
for (; childNode != null; childNode = childNode.nextSibling) {
if (childNode.tagName == "IFRAME"
&& childNode.paneNumber === paneId) {
DomTerm.sendChildMessage(childNode,
'output-data', paneId, data);
}
}
}
});
DomTerm.aboutMessageVariant = function() {
return ' This variant of DomTerm uses Electron '
+ DomTerm.versions.electron
+ ' for the "front-end" and node.js ' + electronAccess.process.versions.node +' with node-pty for the "back-end".';
};
}
DomTerm.loadDomTerm = function() {
DomTerm.mainLocation = location.href;
let name = "kterm1";
let termElement = DomTerm.makeElement(name, document.body);
let term = new window.DTerminal(name, termElement);
DomTerm.setInputMode(99, term);
DomTerm.supportsAutoInputMode = false;
if (! DomTerm.isInIFrame()) {
connectSession(term, termElement);
DomTerm.handleCommand = function(iframe, command, args) {
let paneId = iframe ? iframe.paneNumber : 0;
if (command == 'process-input-bytes'
|| command == 'report-event'
|| command == 'set-window-size') {
electronAccess.ipcRenderer.send(command, paneId, ... args);
return true;
}
return false;
}
DomTerm.newPaneHook = function(paneNumber, sessionNumber, wrapper) {
electronAccess.ipcRenderer.send('new-pane', paneNumber, -1);
}
} else {
// in iframe
DomTerm.handleCommand = function(iframe, command, args) {
if (command==='output-data') {
DomTerm._handleOutputData(DomTerm.focusedTerm, args[1]);
return true;
}
return false;
}
term.processInputBytes = function(data) {
DomTerm.sendParentMessage('process-input-bytes', data);
};
term.reportEvent = function(name, data) {
console.log("inferior reportEvent "+name+" "+data);
DomTerm.sendParentMessage("report-event", name, data);
};
term.setWindowSize = function(numRows, numColumns,
availHeight, availWidth) {
DomTerm.sendParentMessage('set-window-size',
numRows, numColumns,
availHeight, availWidth);
};
}
term.initializeTerminal(termElement);
term.reportEvent("VERSION", DomTerm.versionInfo);
}