static void systemCommands(S s, O env) {
call(env, "postSystemMessage", systemCommands_impl(s, env));
}
static S systemCommands_impl(S s, O env) {
new Matches m;
// SYSTEM COMMANDS
if (matchOneOf(s, m, "start program *", "start *")
&& isSnippetID(m.unq(0))) {
S progID = m.fsi(0);
S title = getSnippetTitle(progID);
// TODO: Show author!
S msg = "Run program " + progID + " - " + title + "?";
if (confirmOKCancel((JFrame) getOpt(env, "frame"), msg)) {
call(env, "postSystemMessage", "Starting program " + progID + " - " + quote(title));
nohupJavax(progID);
} else
call(env, "postSystemMessage", "Program start cancelled by user (was: " + progID + ")");
}
if (matchOneOf(s, m, "hotwire *", "hotwire * with argument *")) {
S progID = m.fsi(0), arg = unnull(m.unq(1));
S title = getSnippetTitle(progID);
S msg = "Hotwire & run program " + progID + " - " + quote(title) + (empty(arg) ? "" : " with argument " + quote(arg)) + "?";
if (confirmOKCancel((JFrame) getOpt(env, "frame"), msg)) {
call(env, "postSystemMessage", "Hotwiring & running program " + progID + " - " + quote(title) + (empty(arg) ? "" : " with argument " + quote(arg)));
run(progID, arg);
} else
call(env, "postSystemMessage", "Program start cancelled by user (was: " + progID + ")");
}
if (matchOneOf(s, "jfresh", "fresh")) {
ret veryQuickJava_refresh() ? "OK, refreshed." : "Nothing to do";
}
if (startsWithOneOf(s, "awt ")) {
S code = onlyAfter(s, ' ');
code = tok_addReturn(trim(code));
bool x = !containsReturnWithArgument(code);
S keyword = x ? "r" : "func";
ret systemCommands_evalJava("swingAndWait(" + keyword + " {\n" + code + "\n})" + (x ? ";" : ""));
}
if (startsWithOneOf(s, "java ", "j ")) {
S code = onlyAfter(s, ' ');
ret systemCommands_evalJava(code);
}
if (startsWith(s, "phone ")) {
S code = onlyAfter(s, ' ');
ret systemCommands_onPhone(code);
}
if (startsWithOneOf(s, "jfresh ", "fresh ")) {
veryQuickJava_refresh();
S code = afterSpace(s);
ret systemCommands_evalJava(code);
}
if "restart" {
call(env, "postSystemMessage", "Restarting...");
restart();
}
if "pop" { // pop up last chat line in a window
S text = nextToLast((L<S>) get(env, "log"));
if (empty(text))
ret "Nothing to show";
else
showText(text);
}
if (jmatch("addll *-*", s, m)) { // add to "Logic List"
int mm = m.psi(0), nn = m.psi(1);
// account for the command itself in the log
int i = l(gLog())-1;
S part = fromLines(subList(gLog(), i-nn, i-mm+1));
systemCommands_ll(env, part);
}
if (jmatch("addll *", s, m)) { // add to "Logic List"
S part;
if (isInteger(m.get(0))) {
int mm = m.psi(0);
// account for the command itself in the log
int i = l(gLog())-1;
part = get(gLog(), i-mm);
} else
part = m.unq(0);
systemCommands_ll(env, part);
}
if (swic(s, "care "))
systemCommands_ll(env, "!care " + afterSpace(s));
null;
}
static void systemCommands_ll(O env, S text) {
addToLogicList(text);
call(env, "postSystemMessage", "Added to Logic List: " + text);
}
static O systemCommands_lastResult;
static S systemCommands_evalJava(S code) {
S main = "!include #1003911\n" + // functions for quick eval
+ evalJava_prep(code, "calc");
O obj = veryQuickJava(main);
setOpt(obj, "getProgramName_cache", "User Code");
long time = now();
O result = callCalc(obj);
systemCommands_lastResult = result;
time = now()-time;
ret time + " ms\n" + systemCommands_prettyPrint(result);
}
static S systemCommands_prettyPrint(O o) {
if (o instanceof L)
ret fromLines(map(func(O o) { systemCommands_prettyPrint(o) }, (L) o));
if (eq(getClassName(o), "main$Snippet"))
ret formatSnippetID(getString(o, "id")) + " - " + getString(o, "title");
if (eq(getClassName(o), "java.awt.image.BufferedImage"))
showImage("User Image", (BufferedImage) o);
ret structureOrText(o);
}
static S systemCommands_onPhone(S code) {
long time = now();
O result = onPhone(code);
systemCommands_lastResult = result;
time = now()-time;
ret time + " ms\n" + systemCommands_prettyPrint(result);
}
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1003814 |
| Snippet name: | systemCommands - "!j" etc |
| Eternal ID of this version: | #1003814/6 |
| Text MD5: | c68ab5d9cd8f2acd66f1b31ae5fffa9f |
| Author: | stefan |
| Category: | javax / talking robots |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2017-03-05 23:06:26 |
| Source code size: | 4441 bytes / 140 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 1202 / 1072 |
| Version history: | 5 change(s) |
| Referenced in: | [show references] |