Merge pull request #38 from pacocoursey/master

Allow copy/cut/paste in picker input
This commit is contained in:
Лu Лinveгa 2018-07-26 20:24:40 +12:00 committed by GitHub
commit fcfe527d94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -106,11 +106,11 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
document.addEventListener('mousemove', function(e){ dotgrid.mouse_move(e); }, false); document.addEventListener('mousemove', function(e){ dotgrid.mouse_move(e); }, false);
document.addEventListener('contextmenu', function(e){ dotgrid.mouse_alt(e); }, false); document.addEventListener('contextmenu', function(e){ dotgrid.mouse_alt(e); }, false);
document.addEventListener('mouseup', function(e){ dotgrid.mouse_up(e);}, false); document.addEventListener('mouseup', function(e){ dotgrid.mouse_up(e);}, false);
document.addEventListener('copy', function(e){ dotgrid.copy(e); e.preventDefault(); }, false); document.addEventListener('copy', function(e){ dotgrid.copy(e); }, false);
document.addEventListener('cut', function(e){ dotgrid.cut(e); e.preventDefault(); }, false); document.addEventListener('cut', function(e){ dotgrid.cut(e); }, false);
document.addEventListener('paste', function(e){ dotgrid.paste(e); e.preventDefault(); }, false); document.addEventListener('paste', function(e){ dotgrid.paste(e); }, false);
window.addEventListener('drop', dotgrid.drag); window.addEventListener('drop', dotgrid.drag);
this.new(); this.new();
} }
@ -415,10 +415,13 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
{ {
dotgrid.guide.refresh(); dotgrid.guide.refresh();
e.clipboardData.setData('text/source', dotgrid.tool.export(dotgrid.tool.layer())); if (e.target !== this.picker.el) {
e.clipboardData.setData('text/plain', dotgrid.tool.path()); e.clipboardData.setData('text/source', dotgrid.tool.export(dotgrid.tool.layer()));
e.clipboardData.setData('text/html', dotgrid.renderer.to_svg()); e.clipboardData.setData('text/plain', dotgrid.tool.path());
e.clipboardData.setData('text/svg+xml', dotgrid.renderer.to_svg()); e.clipboardData.setData('text/html', dotgrid.renderer.to_svg());
e.clipboardData.setData('text/svg+xml', dotgrid.renderer.to_svg());
e.preventDefault();
}
dotgrid.guide.refresh(); dotgrid.guide.refresh();
} }
@ -427,21 +430,26 @@ function Dotgrid(width,height,grid_x,grid_y,block_x,block_y)
{ {
dotgrid.guide.refresh(); dotgrid.guide.refresh();
e.clipboardData.setData('text/plain', dotgrid.tool.export(dotgrid.tool.layer())); if (e.target !== this.picker.el) {
e.clipboardData.setData('text/html', dotgrid.renderer.to_svg()); e.clipboardData.setData('text/plain', dotgrid.tool.export(dotgrid.tool.layer()));
e.clipboardData.setData('text/svg+xml', dotgrid.renderer.to_svg()); e.clipboardData.setData('text/html', dotgrid.renderer.to_svg());
e.clipboardData.setData('text/svg+xml', dotgrid.renderer.to_svg());
dotgrid.tool.layers[dotgrid.tool.index] = []; dotgrid.tool.layers[dotgrid.tool.index] = [];
e.preventDefault();
}
dotgrid.guide.refresh(); dotgrid.guide.refresh();
} }
this.paste = function(e) this.paste = function(e)
{ {
var data = e.clipboardData.getData("text/source"); if (e.target !== this.picker.el) {
if(is_json(data)){ var data = e.clipboardData.getData("text/source");
data = JSON.parse(data.trim()); if (is_json(data)) {
dotgrid.tool.import(data); data = JSON.parse(data.trim());
dotgrid.tool.import(data);
}
e.preventDefault();
} }
dotgrid.guide.refresh(); dotgrid.guide.refresh();
@ -504,4 +512,3 @@ function is_json(text){ try{ JSON.parse(text);return true; } catch(error){ retur
function pos_is_equal(a,b){ return a && b && a.x == b.x && a.y == b.y } function pos_is_equal(a,b){ return a && b && a.x == b.x && a.y == b.y }
function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }
function step(v,s){ return parseInt(v/s) * s; } function step(v,s){ return parseInt(v/s) * s; }