load('ansiedit.js'); load('frame.js'); load('tree.js'); load('scrollbar.js'); load('event-timer.js'); load('graphic.js'); const sauce_lib = load({}, 'sauce_lib.js'); if (bbs.mods.avatar_lib) { avatar_lib = bbs.mods.avatar_lib; } else { avatar_lib = load({}, 'avatar_lib.js'); } var CONTROL_EDIT = '1'; function edit(fo) { log(LOG_DEBUG,'+ Control EDIT loaded'); var complete = false; Object.defineProperty(this,'getName', { get: function() { return 'Frame Edit'; } }); Object.defineProperty(this,'isComplete', { get: function() { return complete; } }); const frames = { parent : null, container : null, highlight : null, scrollbar : null }; log(LOG_DEBUG,' - Owner: '+JSON.stringify(fo.owner)); const frame = new Frame(1,1,console.screen_columns,console.screen_rows,BG_BLACK|LIGHTGRAY); frame.gotoxy(1,1); header = '\1n'+fo.owner+' '.repeat(FRAME_HEADER-console.strlen(fo.owner))+'\1n '+ '\1W\1H'+fo.page+' '.repeat(FRAME_PAGENUM-fo.page.length)+' '+ '\1G\1H'+' Edit'; frame.putmsg(header); frame.open(); var editor = new ANSIEdit({ x: 1, y: 2, width: 80, height: 23, attr: WHITE, //showPosition: true, menuHeading: 'Frame Edit '+fo.page, parentFrame: frame, }); editor.open(); editor.menu.addItem('Save', _save); editor.menu.addItem('Exit', on_exit); editor.menu.addItem('Save & Exit', save_and_exit); x = new Graphic; x.ANSI = base64_decode(fo.content); log(LOG_DEBUG,JSON.stringify(x)); const bin = x.BIN; var o = 0; // offset into 'bin' for (var yy = 0; yy < 22; yy++) { for (var xx = 0; xx < 80; xx++) { editor.putChar({ x : xx, y : yy, ch : bin.substr(o, 1), attr : bin.substr(o + 1, 1).charCodeAt(0) || BG_BLACK }); o = o + 2; } } editor.cycle(); frame.cycle(); this.handle=function(read) { if (! js.terminated && ascii(read) != 27) { editor.getcmd(read); editor.cycle(); frame.cycle(); return ''; } editor.close(); frame.close(); complete = true; console.clear(LIGHTGRAY); fo.content = base64_encode(editor.exportAnsi().join('')); fo.save(); console.putmsg(fo.render()); return ''; } function _save() { log(LOG_DEBUG, '+ FrameEdit save()'); } function on_exit() { log(LOG_DEBUG, '+ FrameEdit on_exit()'); complete = true; console.clear(LIGHTGRAY); console.putmsg(fo.render()); } function save_and_exit() { _save(); on_exit(); } } this;