diff --git a/tests/sandbox/sandbox.new.html b/tests/sandbox/sandbox.new.html index 036f960d..091dc314 100644 --- a/tests/sandbox/sandbox.new.html +++ b/tests/sandbox/sandbox.new.html @@ -156,15 +156,14 @@ fileUri = urlParams.get("fileUri") filePath = urlParams.get("filePath") if (fileUri != null){ - ttkProxy.loadFile(fileUri, ttkProxy.currentPath()+"/test_file.py"); - loadFile(ttkProxy.currentPath()+"/test_file.py") + ttkProxy.loadFile(fileUri, "test_file.py"); + loadFile("test_file.py") }else if (filePath != null){ - loadFile(ttkProxy.currentPath()+"/"+filePath) + loadFile(filePath) }else{ - loadFile(ttkProxy.currentPath()+"/demo/demo.py") + loadFile("demo/demo.py") } - //loadFile("/home/pyodide/tutorial/calculator/calculator.005.py") - w2ui.sidebar.select(ttkProxy.currentPath()+"/demo/demo.py") + w2ui.sidebar.select("demo/demo.py") term.write('Starting Demo...\n\r') diff --git a/tests/sandbox/standalone.fullscreen.html b/tests/sandbox/standalone.fullscreen.html index 1569d98c..718f234f 100644 --- a/tests/sandbox/standalone.fullscreen.html +++ b/tests/sandbox/standalone.fullscreen.html @@ -10,11 +10,14 @@ + + + + @@ -37,148 +40,27 @@ term.write('xterm.js - Loaded\n\r') - window.addEventListener('resize', (event) => { - setTimeout(()=>{fitAddon.fit()},0.5) - }); + fitAddon.fit() /* pyodide demo */ - var pyodide = null - var run = null - var namespace = null async function main(){ - pyodide = await loadPyodide(); - - let pyodideProxy = { - consoleLog: function(m){ - console.log("TTk:",m) - }, - termPush: function (s) { - term.write(s); - }, - termSize: function () { - return [term.cols, term.rows] - }, - setTimeout: function(t, i) { - // console.log("TIME",i,t) - setTimeout(() => ttk_timer(i), t) - }, - clearTimeout: function(){ - let highestTimeoutId = setTimeout(";"); - for (let i = 0 ; i < highestTimeoutId ; i++) { - clearTimeout(i); - } - }, - setInterval: function(t, i) { - setTinterval(() => console.log('WIP -> Interval' + i), t) - } - }; - pyodide.registerJsModule("pyodideProxy", pyodideProxy); - - term.write('Pyodide Proxy - Loaded\n\r') - - let zipResponse = await fetch("bin/TermTk.tgz"); - let zipBinary = await zipResponse.arrayBuffer(); - pyodide.unpackArchive(zipBinary, ".tar.gz"); + ttkProxy = new TTkProxy(term) + await ttkProxy.init() + await ttkProxy.loadLib("bin/TermTk.tgz"); term.write('TermTk - Loaded\n\r') - zipResponse = await fetch("bin/demo.tgz"); - zipBinary = await zipResponse.arrayBuffer(); - pyodide.unpackArchive(zipBinary, ".tar.gz"); - + await ttkProxy.loadLib("bin/demo.tgz"); term.write('Demos - Loaded\n\r') term.write('Starting Demo...\n\r') - namespace = pyodide.globals.get("dict")(); - pyodide.runPython(` - import sys - import TermTk as ttk - import pyodideProxy - - def ttk_input(val): - if ttk.TTkHelper._rootWidget and ttk.TTkHelper._rootWidget._input: - ttk.TTkHelper._rootWidget._input.key_process(val) - - def ttk_resize(w,h): - ttk.TTkLog.debug(f"Resize: {w=} {h=}") - if ttk.TTkHelper._rootWidget: - ttk.TTkHelper._rootWidget._win_resize_cb(w,h) - ttk.TTkHelper.rePaintAll() - # TODO: I need to get rid of this: - ttk.TTkTerm.push(ttk.TTkTerm.ALT_SCREEN + ttk.TTkTerm.CLEAR + ttk.TTkTerm.Cursor.HIDE + ttk.TTkTerm.escTitle(ttk.TTkTerm.title)) - ttk.TTkTerm.push(ttk.TTkTerm.Mouse.ON) - - def ttk_timer(tid): - ttk.TTkTimer.triggerTimerId(tid) - - def ttk_log(val): - # hex = [f"0x{ord(x):02x}" for x in val] - ttk.TTkLog.debug("---> "+val.replace("\\033","") + " - ") - ttk.TTkHelper.paintAll() - - def ttk_clean(): - if ttk.TTkHelper._rootWidget: - ttk.TTkTimer.pyodideQuit() - ttk.TTkHelper._rootWidget.quit() - ttk.TTkHelper._focusWidget = None - ttk.TTkHelper._rootCanvas = None - ttk.TTkHelper._rootWidget = None - ttk.TTkHelper._updateBuffer = [] - ttk.TTkHelper._updateWidget = [] - ttk.TTkHelper._overlay = [] - ttk.TTkHelper._shortcut = [] - ttk.TTkLog._messageHandler = [message_handler] - - def message_handler(mode, context, message): - msgType = "DEBUG" - if mode == ttk.TTkLog.InfoMsg: msgType = "[INFO]" - elif mode == ttk.TTkLog.WarningMsg: msgType = "[WARNING]" - elif mode == ttk.TTkLog.CriticalMsg: msgType = "[CRITICAL]" - elif mode == ttk.TTkLog.FatalMsg: msgType = "[FATAL]" - elif mode == ttk.TTkLog.ErrorMsg: msgType = "[ERROR]" - pyodideProxy.consoleLog(f"{msgType} {context.file} {message}") - # Register the callback to the message handler - ttk.TTkLog.installMessageHandler(message_handler) - `,{ globals: namespace } - ); - - let ttk_log = namespace.get("ttk_log"); - let ttk_input = namespace.get("ttk_input"); - let ttk_timer = namespace.get("ttk_timer"); - let ttk_resize = namespace.get("ttk_resize"); - let ttk_clean = namespace.get("ttk_clean"); - - term.onResize( (obj) => { - term.reset() - ttk_resize(obj.cols, obj.rows) - }); - term.onData((d, evt) => { ttk_input(d) }) - - pyodide.runPython(` - import sys,os - sys.path.append(os.path.join(sys.path[0],'demo')) - __file__='/home/pyodide/demo/demo.py' - __name__ = "__main__" - os.chdir('/home/pyodide/demo') - `,{ globals: namespace } - ); - - console.log("Run App") - - let content = pyodide.FS.readFile("demo.py", {encoding:'utf8'}) - pyodide.runPython(content,{ globals: namespace }); - - // TODO: I need to get rid of this: - pyodide.runPython(` - # TODO: I need to get rid of this: - ttk.TTkTerm.push(ttk.TTkTerm.ALT_SCREEN + ttk.TTkTerm.CLEAR + ttk.TTkTerm.Cursor.HIDE + ttk.TTkTerm.escTitle(ttk.TTkTerm.title)) - ttk.TTkTerm.push(ttk.TTkTerm.Mouse.ON) - `,{ globals: namespace } - ); - ttk_log("demo/demo.py - LOADED") - console.log("pippo") - fitAddon.fit() + ttkProxy.preRun() + + let file = "demo/demo.py" + let content = ttkProxy.readFile(file) + + ttkProxy.run(content, file, 60) } main() diff --git a/tests/sandbox/standalone.html b/tests/sandbox/standalone.html index 4d8dc01b..62e8c5f8 100644 --- a/tests/sandbox/standalone.html +++ b/tests/sandbox/standalone.html @@ -8,7 +8,9 @@ - + @@ -26,12 +28,12 @@