diff options
Diffstat (limited to 'js/clipboard.js')
| -rw-r--r-- | js/clipboard.js | 114 |
1 files changed, 72 insertions, 42 deletions
diff --git a/js/clipboard.js b/js/clipboard.js index 501b189..97261bc 100644 --- a/js/clipboard.js +++ b/js/clipboard.js @@ -1,49 +1,79 @@ var clipboard = (function () { - var format; - var disabled = false; - var contentType = 'text/plain;charset=utf-8' - document.body.addEventListener('copy', function (e) { - if (disabled) { return } - if (e.clipboardData) { - e.preventDefault(); - e.clipboardData.setData(contentType, canvas.irssi()); - } - if (window.clipboardData) { - e.returnValue = false; - window.clipboardData.setData(contentType, canvas.irssi()); - } - }, false); - - function import_data () { - var data = import_textarea.value - lines = data.split("\n") - } - function export_data () { - var output - switch (format) { - case 'ascii': - output = canvas.ascii() - break - case 'mirc': - output = canvas.mirc() - break - case 'irssi': - output = canvas.irssi() - break - } - } + var exports = { + format: "irssi", + importing: false, + visible: false, + + bind: 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) + export_button.addEventListener("click", exports.export_data) + import_textarea.addEventListener("focus", exports.focus) + import_textarea.addEventListener("blur", exports.blur) + import_irssi.setAttribute("checked", true) + }, + setFormat: function (name) { + return function () { + clipboard.format = name + if (! clipboard.importing) { clipboard.export_data() } + } + }, + show: function () { import_rapper.style.display = "block"; clipboard.visible = true }, + hide: function () { import_rapper.style.display = "none"; clipboard.visible = false }, + focus: function () { + if (! clipboard.importing) { + import_textarea.focus() + import_textarea.select() + } + }, + blur: function () { + }, - import_ascii.addEventListener("click", function(){ format = "ascii" }) - import_irssi.addEventListener("click", function(){ format = "irssi" }) - import_mirc.addEventListener("click", function(){ format = "mirc" }) - import_button.addEventListener("click", import_data) - export_button.addEventListener("click", export_data) - // import_textarea + import_mode: function () { + focus() + clipboard.importing = true + import_button.style.display = "inline-block" + export_button.style.display = format_group.display = "none" + import_textarea.value = "" + }, + export_mode: function () { + focus() + clipboard.importing = false + import_button.style.display = "none" + export_button.style.display = format_group.display = "inline-block" + clipboard.export_data() + }, + import_data: function () { + var data = import_textarea.value + lines = data.split("\n") + var width = lines.reduce(function(a,b){ return Math.max(a, b.length) }) + var height = lines.length + }, + export_data: function () { + var output + switch (clipboard.format) { + case 'ascii': + output = canvas.ascii() + break + case 'mirc': + output = canvas.mirc() + break + case 'irssi': + output = canvas.irssi() + break + } + import_textarea.value = output + clipboard.focus() + return output + }, - return { - enable: function(){ disabled = false }, - disable: function(){ disabled = true } } + exports.bind() + + return exports + })()
\ No newline at end of file |
