!7 static S snippetID; static EditorFrame e; p-substance { e = new EditorFrame; showFrame(e); e.textArea.setText("Hello\nWorld"); addMenu(e, "Load", "Load snippet...", r { selectSnippetID(voidfunc(S snippetID) { main.snippetID = snippetID; e.textArea.setText(loadSnippet(snippetID)); frameTitle(e, snippetID); }); }); addMenu(e, "Save", "Save snippet", r { saveSnippetThen(null) }); addMenu(e, "Transpile", "Save & Quick Transpile", r { transpile(false) }); addMenu(e, "Transpile", "Save & Medium Transpile", r { transpile(true) }); addMenu(e, "Activate", "Butter-Reload", f _butterReload); hideConsole(); } svoid status(S s) { e.setStatus(infoBoxAndReturn(s)); } svoid saveSnippetThen(final Runnable next) { if (empty(snippetID)) ret; fS text = getText(e.textArea); status("Saving..."); thread { fS page = editSnippet(snippetID, text); status("Saved snippet: " + page); awtCallF(next); } } svoid _butterReload() { time { butterReload(snippetID); } infoBox("Reloaded in " + lastTiming_format100ms()); } svoid transpile(final bool medium) { saveSnippetThen(r { _transpile(medium) }); } svoid _transpile(final bool medium) { status("Transpiling..."); //jdisable(btnEleuReload); thread "Transpiling" { try { final Pair p = transpileOnServer(snippetID, medium ? "medium" : "quick"); awt { if (p.a) status("Transpiled OK!"); else { status("Transpilation error. " + p.b); showText("Transpilation Error", p.b); } } } catch print e { status("Transpilation problem. " + e); } //jenable(btnEleuReload); } }