diff --git a/Inquirer.js b/Inquirer.js index 44dc418..ddbc48a 100644 --- a/Inquirer.js +++ b/Inquirer.js @@ -29,6 +29,7 @@ config = { color: { normal: "#000", + gray: "#777", string: "#0A0", number: "#00B", keyword: "#809", @@ -51,32 +52,6 @@ }); } - function objectResumeLink(obj) { - var a = document.createElement("a"), isError; - a.href = "#"; - if (obj instanceof Error) { - a.appendChild(document.createTextNode(obj)); - isError = true; - } - else if (obj instanceof BasicError) { - a.appendChild(document.createTextNode(obj.message)); - isError = true; - } else - a.appendChild(document.createTextNode(objectResumeText(obj))); - a.style.merge({ - color: "black", - textDecoration: "none" - }); - a.onclick = function () { - if (isError) - getApp().showError(obj); - else - inq.inspect(obj); - return false; - } - return a; - } - /** A formatter tool for console output */ function formatter(rtd) { var r, p, rtp, i; @@ -92,7 +67,16 @@ p.data = rtp; if (rtp.c) p.style.color = rtp.c; + if (rtp.s) + p.style.fontSize = rtp.s; p.innerText = rtp.v; + if (rtp.onclick) { + p.onclick = rtp.onclick; + p.style.textDecoration = "underline"; + p.style.cursor = "pointer"; + } + if (rtp.tooltip) + p.title = rtp.tooltip; r.appendChild(p); } } @@ -101,12 +85,14 @@ /** expandable object resume */ function compactObject(m, d) { - var r, f, mn, dn; + var r, f, mn, dn, s; r = document.createElement("span"); f = document.createElement("span"); + f.innerHTML = ""; + s = f.firstChild; mn = formatter(m); function open() { - f.innerText = "▼ "; + s.setAttribute("transform", "rotate(90)") if (r.contains(mn)) r.removeChild(mn); if (dn == null) { @@ -119,7 +105,7 @@ return r; } function close() { - f.innerText = "▶︎ "; + s.setAttribute("transform", "rotate(0)"); if (r.contains(dn)) r.removeChild(dn); r.appendChild(mn); @@ -130,6 +116,9 @@ r.appendChild(f); r.close = close; r.open = open; + r.onmousedown = function () { + s.setAttribute("transform", "rotate(45)"); + } close(); return r; } @@ -151,16 +140,19 @@ function objectResume(obj) { var r = [], k, max = 10, first = true; if (Array.isArray(obj)) { - r.push({ c: config.color.normal, v: "Array (" + obj.length + ")" }); - r.push(inspectorLink(obj)); + r.push({ c: config.color.normal, v: "[" }); + r.push({ c: config.color.gray, s: "8px", v: obj.length }); + r.push({ c: config.color.normal, v: "]" }); } else { - if (obj.constructor) - r.push({ c: config.color.normal, v: functionName(obj.constructor) + " " }); - r.push(inspectorLink(obj)); + if (obj.constructor) { + var oname = functionName(obj.constructor); + if (oname && oname.toLowerCase() != "object") + r.push({ c: config.color.normal, v: functionName(obj.constructor) }); + } r.push({ c: config.color.normal, v: "{" }); for (k in obj) { if (max-- <= 0) { - r.push({ c: config.color.normal, v: "..." }); + r.push({ c: config.color.normal, v: "…" }); break; } if (first) @@ -179,19 +171,21 @@ return function () { var r = [], k, d; if (Array.isArray(obj)) { - r.push({ c: config.color.normal, v: "Array (" + obj.length + ")" }); - r.push(inspectorLink(obj)); r.push({ c: config.color.normal, v: "[" }); + r.push({ c: config.color.gray, s: "8px", v: obj.length }); } else { - if (obj.constructor) - r.push({ c: config.color.normal, v: functionName(obj.constructor) + " " }); - r.push(inspectorLink(obj)); + if (obj.constructor) { + var oname = functionName(obj.constructor); + if (oname && oname.toLowerCase() != "object") + r.push({ c: config.color.normal, v: functionName(obj.constructor) }); + } r.push({ c: config.color.normal, v: "{" }); } for (k in obj) { r.push(d = document.createElement("div")); d.appendChild(formatter([ { c: config.color.keyword, v: k }, + inspectorLink(obj[k]), { c: config.color.normal, v: ": " }, objectRow(obj[k]) ])) @@ -231,7 +225,7 @@ row.appendChild(formatter([ { c: config.color.normal, v: '"' }, { c: config.color.string, v: obj.substr(0, 512) }, - { c: config.color.normal, v: '..."' }, + { c: config.color.normal, v: '…"' }, ])) else row.appendChild(formatter([ @@ -249,7 +243,7 @@ row.appendChild(robj = compactObject([ { c: config.color.keyword, v: "function" }, obj.name ? { c: config.color.normal, v: " " + functionName(obj) } : null, - { c: config.color.normal, v: "() {...}" }, + { c: config.color.normal, v: "() {…}" }, ], functionDetails(obj) )); @@ -261,17 +255,27 @@ row.innerText = obj; break; } - if (expanded) + if (robj && expanded) robj.open(); return row; } function inspectorLink(object) { + return { + c: config.color.normal, + v: "※",//○※ + onclick: function () { + openInspector(object); + }, + tooltip: "Show on variable inspector" + } var lnk = document.createElement("IMG"); lnk.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABBElEQVQ4T6XTvyvFURjH8delGJTJoMRA+bGIjDax2cxS18Km5B+wyGJQDP4C/gKlsCgTBgMSokh2g0U6Om7H1/1+u9c96/k87/N5Ps9zSho8pQbr5QE6MIon3OIz76EsoBVrWKICP8Us7qpBsoANzGMFx+jBOtqjo/csJAUE229YwE4i7MQDlrFdBJjCAfpj36n2HBfR3S9G6mAA15jEYaJqxgu2sFrkoAknaME0XhGKN1HGCG6KAOGuD/voxhW6YoAhvEVcRpcVTrU9aMMcxvCIPQxjN4Y8EeHfkFo3cTCONUwktDaO+3oAQTuEI5xhBh/1AoK+F88/xf8B/NnmWjPI/bRf61ssEdnALW4AAAAASUVORK5CYII="; lnk.style.merge({ verticalAlign: "middle", cursor: "pointer", + width: "8px", + height: "8px" }); lnk.onclick = function () { openInspector(object); @@ -336,16 +340,15 @@ ], onClose: function () { this.hide(); - //getApp().removeWindow(win); }, - load: function () { - win.content.Lerror.setText(eMessage); - win.content.Tinfo.setText(eData); + load: function (msg, data) { + win.content.Lerror.setText(msg); + win.content.Tinfo.setText(data); } }); getApp().addWindow(win); } - win.load(); + win.load(eMessage, eData); win.show(); return win; } @@ -488,6 +491,10 @@ case 'e': d.appendChild(objectRow(object)); head.appendChild(document.createTextNode("!")); + head.style.cursonr = "pointer"; + head.onclick = function () { + getApp().showError(object); + } head.style.color = "#F88"; d.style.background = "#FEE"; head.style.background = "#FEE"; @@ -617,6 +624,8 @@ anchor: "TBRL", style: { overflow: "scroll", + fontFamily: "Lucida Console, Monospace", + border: "0", }, }), merger.ui.button("insp_close", { @@ -640,6 +649,8 @@ getApp().addWindow(win); win.load(); win.show(); + win.setTop(win.top + ((Math.random() * 60) - 30)); + win.setLeft(win.left + ((Math.random() * 60) - 30)); return win; } diff --git a/MergerTester.js b/MergerTester.js index 17191d4..819c5c3 100644 --- a/MergerTester.js +++ b/MergerTester.js @@ -30,6 +30,7 @@ title: "Resizable window", width: wwidth, height: wheight, + resizable: true, } }).show(); } @@ -130,10 +131,10 @@ ] }), ], - onLoad: function () { + onLoad: function () { }, onAbout: function () { - merger.dialogs.messageBox(app, "MergerTester ©2017 XWolf Override.
Merger desktop is a framework that mimiks a classic desktop over a webpage, and allows development of desktop look and feel web applications. 🐉", "About merger", null, this.icon); + merger.dialogs.messageBox(app, "MergerTester ©2017-2018 XWolf Override.
Merger desktop is a framework that mimiks a classic desktop over a webpage, and allows development of desktop look and feel web applications. 🐉", "About merger", null, this.icon); }, });