diff options
| -rw-r--r-- | index.html | 5 | ||||
| -rw-r--r-- | js/app.js | 3 | ||||
| -rw-r--r-- | js/clipboard.js | 51 | ||||
| -rw-r--r-- | js/draw.js | 1 | ||||
| -rw-r--r-- | js/util.js | 1 |
5 files changed, 55 insertions, 6 deletions
@@ -44,7 +44,10 @@ <input type="radio" name="import_format" id="import_irssi"><label for="import_irssi">irssi</label> <input type="radio" name="import_format" id="import_mirc"><label for="import_mirc">mirc</label> </span> - <button id="import_button">import</button> + <span id="import_buttons"> + <button id="import_button">import ascii</button> + <button id="import_html">import sally</button> + </span> <button id="export_button">export</button><br> <textarea id="import_textarea"></textarea> </div> @@ -4,6 +4,7 @@ var drawing = false var erasing = false var selecting = false var filling = false +var changed = false var focused var canvas, tools, palette, controls, brush, mode, current_tool, current_canvas @@ -58,7 +59,7 @@ function bind () { }) window.onbeforeunload = function() { - return "Are you sure you want to navigate away?"; + if (changed) return "You have edited this drawing." } } diff --git a/js/clipboard.js b/js/clipboard.js index da326ff..66c0c67 100644 --- a/js/clipboard.js +++ b/js/clipboard.js @@ -9,10 +9,12 @@ var clipboard = (function () { import_ascii.addEventListener("change", exports.setFormat("ascii")) import_irssi.addEventListener("change", exports.setFormat("irssi")) import_mirc.addEventListener("change", exports.setFormat("mirc")) - import_button.addEventListener("click", exports.import_data) + import_button.addEventListener("click", exports.import_text) + import_html.addEventListener("click", exports.import_html) export_button.addEventListener("click", exports.export_data) import_textarea.addEventListener("focus", exports.focus) import_textarea.addEventListener("blur", exports.blur) + import_textarea.addEventListener('paste', exports.paste) import_irssi.setAttribute("checked", true) }, setFormat: function (name) { @@ -35,18 +37,59 @@ var clipboard = (function () { import_mode: function () { focus() clipboard.importing = true - import_button.style.display = "inline-block" + import_buttons.style.display = "inline-block" export_button.style.display = format_group.style.display = "none" import_textarea.value = "" }, export_mode: function () { focus() clipboard.importing = false - import_button.style.display = "none" + import_buttons.style.display = "none" export_button.style.display = format_group.style.display = "inline-block" clipboard.export_data() }, - import_data: function () { + + paste: function (e) { + toArray(e.clipboardData.items).forEach(function(item,i){ + console.log(item.kind, item.type) + if (item.kind == 'file' && item.type.match('image/')) { + var blob = item.getAsFile(); + window.URL = window.URL || window.webkitURL; + var blobUrl = window.URL.createObjectURL(blob); + + var img = document.createElement('img'); + img.onerror = function(){ + // error! + console.log("error! bad image!") + } + img.onload = function(){ + // load! + //document.body.appendChild(img); + // handle importing an image? + console.log("image import not supported") + } + img.src = blobUrl; + } + // this can be text/plain or text/html.. + else if (item.kind == 'string' && item.type.match('text/plain') && e.clipboardData.items.length > 1) { + return + } + else if (item.kind == 'string') { + item.getAsString(function(text){ + import_textarea.value = text + }) + } + else { + console.error("unknown type!", item.type) + } + }) + + }, + + import_html: function () { + }, + + import_text: function () { var data = import_textarea.value lines = data.split("\n") var width = lines.reduce(function(a,b){ return Math.max(a, b.length) }) @@ -5,6 +5,7 @@ var draw = (function(){ function down (e, lex, point) { erasing = (e.which == "3" || e.ctrlKey) + changed = true if (e.shiftKey) { line (lex, last_point, point, erasing) } @@ -83,6 +83,7 @@ function smoothstep(min,max,n){ return t * t * (3.0 - 2.0 * t) } +function toArray(a){ return Array.prototype.slice.call(a) } function shuffle(a){ for (var i = a.length; i > 0; i--){ var r = randint(i) |
