mirror of
https://codeberg.org/TicklishHoneyBee/CLIte.git
synced 2026-03-11 09:04:37 +00:00
move clite.state.input and clite.events to clite.term
This commit is contained in:
parent
856579064b
commit
6128bc86db
1 changed files with 71 additions and 72 deletions
143
clite/core.js
143
clite/core.js
|
|
@ -1,54 +1,7 @@
|
|||
var clite = {
|
||||
state:{
|
||||
version:'0.1-13',
|
||||
isinit:false,
|
||||
terminal:null,
|
||||
input:{
|
||||
type:'text',
|
||||
form:null,
|
||||
field:null
|
||||
}
|
||||
},
|
||||
events:{
|
||||
keydown:function(e) {
|
||||
return clite.events.keypress(e);
|
||||
},
|
||||
keypress:function(e) {
|
||||
if (e.key == 'Tab') {
|
||||
clite.shell.tabfill();
|
||||
clite.events.refocus();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
keyup:function(e) {
|
||||
try {
|
||||
if (e.key == 'Down' || e.key == 'ArrowDown') {
|
||||
clite.shell.history.down();
|
||||
return false;
|
||||
}
|
||||
if (e.key == 'Up' || e.key == 'ArrowUp') {
|
||||
clite.shell.history.up();
|
||||
return false;
|
||||
}
|
||||
if (e.key == 'Tab') {
|
||||
return false;
|
||||
}
|
||||
var t = clite.state.input.field.value;
|
||||
if (e.key != 'Enter') {
|
||||
clite.shell.history.setCurrent(t);
|
||||
return true;
|
||||
}
|
||||
clite.shell.run(t);
|
||||
return false;
|
||||
} catch(err) {return false;}
|
||||
},
|
||||
refocus:function(e) {
|
||||
try {
|
||||
clite.term.genForm();
|
||||
clite.state.input.field.focus();
|
||||
} catch(err) {}
|
||||
}
|
||||
isinit:false
|
||||
},
|
||||
core:{
|
||||
execSafe:function(f) {
|
||||
|
|
@ -489,7 +442,7 @@ clite.user = {
|
|||
}
|
||||
vfs.mkLink('/usr/home/guest/web','/usr/share/site');
|
||||
setLogin('guest',1,1,[]);
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
|
@ -1055,6 +1008,52 @@ clite.log = {
|
|||
};
|
||||
|
||||
clite.term = {
|
||||
data:{
|
||||
type:'text',
|
||||
form:null,
|
||||
field:null
|
||||
},
|
||||
events:{
|
||||
keydown:function(e) {
|
||||
return clite.term.events.keypress(e);
|
||||
},
|
||||
keypress:function(e) {
|
||||
if (e.key == 'Tab') {
|
||||
clite.shell.tabfill();
|
||||
clite.term.events.refocus();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
keyup:function(e) {
|
||||
try {
|
||||
if (e.key == 'Down' || e.key == 'ArrowDown') {
|
||||
clite.shell.history.down();
|
||||
return false;
|
||||
}
|
||||
if (e.key == 'Up' || e.key == 'ArrowUp') {
|
||||
clite.shell.history.up();
|
||||
return false;
|
||||
}
|
||||
if (e.key == 'Tab') {
|
||||
return false;
|
||||
}
|
||||
var t = clite.term.data.field.value;
|
||||
if (e.key != 'Enter') {
|
||||
clite.shell.history.setCurrent(t);
|
||||
return true;
|
||||
}
|
||||
clite.shell.run(t);
|
||||
return false;
|
||||
} catch(err) {return false;}
|
||||
},
|
||||
refocus:function(e) {
|
||||
try {
|
||||
clite.term.genForm();
|
||||
clite.term.data.field.focus();
|
||||
} catch(err) {}
|
||||
}
|
||||
},
|
||||
tty:{
|
||||
data:null,
|
||||
keydown:function(e) {
|
||||
|
|
@ -1063,7 +1062,7 @@ clite.term = {
|
|||
},
|
||||
keypress:function(e) {
|
||||
if (e.key == 'Tab') {
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
return false;
|
||||
}
|
||||
// urgh, no. handle press in keyup because fuck js
|
||||
|
|
@ -1112,8 +1111,8 @@ clite.term = {
|
|||
i.type = clite.term.getType();
|
||||
i.value = clite.shell.history.getCurrent();
|
||||
f.appendChild(i);
|
||||
clite.state.input.form = f;
|
||||
clite.state.input.field = i;
|
||||
clite.term.data.form = f;
|
||||
clite.term.data.field = i;
|
||||
var t = document.getElementById('terminal');
|
||||
if (!t)
|
||||
return;
|
||||
|
|
@ -1127,24 +1126,24 @@ clite.term = {
|
|||
i.onkeypress = clite.shell.reading.keypress;
|
||||
i.onkeyup = clite.shell.reading.keyup;
|
||||
}else{
|
||||
i.onkeydown = clite.events.keydown;
|
||||
i.onkeypress = clite.events.keypress;
|
||||
i.onkeyup = clite.events.keyup;
|
||||
i.onkeydown = clite.term.events.keydown;
|
||||
i.onkeypress = clite.term.events.keypress;
|
||||
i.onkeyup = clite.term.events.keyup;
|
||||
}
|
||||
i.onfocusout = clite.events.refocus;
|
||||
i.onblur = clite.events.refocus;
|
||||
i.onfocusout = clite.term.events.refocus;
|
||||
i.onblur = clite.term.events.refocus;
|
||||
if (i.type == 'file') { // this is only needed due to dirty hacks to read in a file: path
|
||||
i.onchange = function(e) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function() {
|
||||
var cb = clite.state.input.type.callback;
|
||||
var cb = clite.term.data.type.callback;
|
||||
clite.term.setPass(false);
|
||||
clite.term.writeLine('loaded');
|
||||
clite.term.preventInput();
|
||||
cb(reader.result);
|
||||
};
|
||||
reader.onerror = function() {
|
||||
var cb = clite.state.input.type.callback;
|
||||
var cb = clite.term.data.type.callback;
|
||||
clite.term.setPass(false);
|
||||
clite.term.writeLine('load failed');
|
||||
clite.term.preventInput();
|
||||
|
|
@ -1156,16 +1155,16 @@ clite.term = {
|
|||
f.onsubmit = function() {return false;};
|
||||
},
|
||||
setPass:function(is) {
|
||||
clite.state.input.type = (!!is) ? 'password' : 'text';
|
||||
clite.term.data.type = (!!is) ? 'password' : 'text';
|
||||
},
|
||||
setCustom:function(type) {
|
||||
clite.state.input.type = type;
|
||||
clite.term.data.type = type;
|
||||
},
|
||||
getType:function() {
|
||||
if (typeof clite.state.input.type == 'string')
|
||||
return clite.state.input.type;
|
||||
if (typeof clite.state.input.type == 'object' && typeof clite.state.input.type.type == 'string')
|
||||
return clite.state.input.type.type;
|
||||
if (typeof clite.term.data.type == 'string')
|
||||
return clite.term.data.type;
|
||||
if (typeof clite.term.data.type == 'object' && typeof clite.term.data.type.type == 'string')
|
||||
return clite.term.data.type.type;
|
||||
return 'text';
|
||||
},
|
||||
api:{
|
||||
|
|
@ -1228,7 +1227,7 @@ clite.term = {
|
|||
// TODO: shouldn't need the 0.8 thing, but urgh
|
||||
tty.chars = parseInt((tty.data.el.offsetWidth/s.offsetWidth)*0.8);
|
||||
tty.data.el.removeChild(s);
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
return tty;
|
||||
},
|
||||
closeTTY:function(tty) {
|
||||
|
|
@ -1252,7 +1251,7 @@ clite.shell = {
|
|||
},
|
||||
keypress:function(e) {
|
||||
if (e.key == 'Tab') {
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
return false;
|
||||
}
|
||||
// urgh, no. handle press in keyup because fuck js
|
||||
|
|
@ -1277,17 +1276,17 @@ clite.shell = {
|
|||
if (clite.term.tty.data != null)
|
||||
clite.term.api.closeTTY(clite.term.tty.data);
|
||||
clite.shell.prompt.pop();
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
},
|
||||
readLine:function(cb) {
|
||||
clite.shell.reading.is = true;
|
||||
clite.shell.reading.buff = '';
|
||||
clite.shell.reading.callback = cb;
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
},
|
||||
writeLine:function(txt) {
|
||||
clite.term.writeLine(txt);
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
},
|
||||
resolvePath:function(txt) {
|
||||
var paths = clite.shell.env.PATH.split(':');
|
||||
|
|
@ -1600,13 +1599,13 @@ clite.shell = {
|
|||
if (clite.shell.history.index == 0)
|
||||
return;
|
||||
clite.shell.history.index--;
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
},
|
||||
down:function() {
|
||||
if (clite.shell.history.index == clite.shell.history.data.length)
|
||||
return;
|
||||
clite.shell.history.index++;
|
||||
clite.events.refocus();
|
||||
clite.term.events.refocus();
|
||||
},
|
||||
setCurrent:function(txt) {
|
||||
clite.shell.history.current = txt;
|
||||
|
|
|
|||
Loading…
Reference in a new issue