Mercurial > hg > forks > multipaint-js
view mpui.js @ 107:0d0b384bac0f
Update notes.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 06 Jul 2018 06:22:21 +0300 |
parents | 51014de89824 |
children | ecc0e5148b47 |
line wrap: on
line source
var mpMachine = 0; var mpMachines = { 0 : "C64 hires", 10 : "C64 multicolor", 6 : "ZX Spectrum", 5 : "MSX1 mode 2", 9 : "Plus4 hires", 19 : "Plus4 multicolor", 2 : "Amstrad CPC mode 0", }; var mpSources = [ "draw_inputs.pde", "draw_outputs.pde", "draw_smart.pde", "events.pde", "exporters.pde", "Interface.pde", "multipaint.pde", ]; function stGE(obname) { return document.getElementById(obname); } function stCE(obname, obid) { var mob = document.createElement(obname); if (obid) mob.id = obid; return mob; } function stClearChildren(obnode) { while (obnode.firstChild) obnode.removeChild(obnode.firstChild); } function stPRE(mstr) { return mstr.toLowerCase().replace(/[^a-z0-9]/g, "_"); } function stAddEventOb(obname, evobj, evtype, evcallback, evparam) { if (evobj == null || typeof(evobj) == 'undefined') { console.log("Event object '"+ obname +"' == null."); return; } evobj.addEventListener(evtype, evcallback, false); evobj.evparam = evparam; } function stAddEvent(obname, evtype, evcallback, evparam) { stAddEventOb(obname, stGE(obname), evtype, evcallback, evparam); } function mpShowMachineSelector() { var mpCanvas = stGE("mpCanvas"); mpCanvas.style.display = "none"; var mpUI = stGE("mpUI"); mobj = stCE("h2"); mobj.textContent = "Multipaint.JS" mpUI.appendChild(mobj); var mdiv = stCE("div"); mpUI.appendChild(mdiv); mobj = stCE("p"); mobj.textContent = "Choose your target machine:"; mdiv.appendChild(mobj); mobj = stCE("select", "machineID"); var mlist = Object.keys(mpMachines).sort(); for (var n = 0; n < mlist.length; n++) { var key = mlist[n]; var opt = stCE("option"); opt.value = key; opt.textContent = mpMachines[key]; mobj.appendChild(opt); } mdiv.appendChild(mobj); mobj = stCE("button", "selectID"); mobj.textContent = "RUN"; stAddEventOb(mobj.name, mobj, "click", mpMachineSelected); mdiv.appendChild(mobj); mobj = stCE("div"); mobj.innerHTML = "<p><b>Things of note:</b></p>"+ "<ul>"+ "<li>Save ('S' key) saves to browser local storage (there can be only one save there, so be careful.). "+ "<b>'Save as' ('s' key) exports to downloadable file.</b> "+ "Load ('L' and 'l' keys) work similarly. <b>However, each 'machine type' has its own save-space for local storage, so for example C64 hires and multicolor modes have different saves</b>.</li>"+ "<li>Source code export does not work.</li>"+ "<li>PNG/JPEG import/export does not work.</li>"+ "<li> .. and there may be bugs.</li>"+ "<li> .. though I've also fixed few bugs that exist in original Multipaint.</li>"+ "</ul>"+ "<p><b>NOTICE!</b> When loading/importing, you click on the load icon (or press key) and a HTML file selector button will appear "+ "ON THE BOTTOM. You need to click that, too. Sorry, that can't be automated because of pop-up blocking etc..</p>"+ "<p>You can also go see <a href=\"https://tnsp.org/hg/forks/multipaint-psjs/\">Mercurial repository for Multipaint ProcessingJS</a>.</p>"; mpUI.appendChild(mobj); mobj = stCE("hr"); mpUI.appendChild(mobj); } function mpMachineSelected() { var mpUI = stGE("mpUI"); var id = stGE("machineID"); mpMachine = id.selectedIndex >= 0 ? id.options[id.selectedIndex].value : 0; stClearChildren(mpUI); var mpCanvas = stGE("mpCanvas"); mpCanvas.style.display = "block"; window.location.href = window.location.href +"?"+ mpMachine.toString(); mpRunSketch(mpCanvas); } function mpStart() { stGE("mpNote").innerHTML = "<a href=\"http://multipaint.kameli.net/\">Multipaint</a> (C) 2016-2017 <b>Tero 'Dr. TerrorZ' Heikkinen</b>, "+ "ProcessingJS port and modifications by <b>Matti 'ccr' Hämäläinen</b> (2018)"; var slink = window.location.href; var spos, found = false; if ((spos = slink.indexOf("?")) >= 0) { var tmp = parseInt(unescape(slink.substr(spos + 1))); for (var key in mpMachines) { if (key == tmp) { mpMachine = key; found = true; break; } } } if (found) { mpRunSketch(stGE("mpCanvas")); } else { stAddEventOb("DOM", document, "DOMContentLoaded", mpShowMachineSelector); } }