diff --git a/editor/svg-editor.js b/editor/svg-editor.js index 1fd9a629..a1d415f9 100644 --- a/editor/svg-editor.js +++ b/editor/svg-editor.js @@ -347,7 +347,7 @@ function svg_edit_setup() { }); $('.attr_changer').change(function() { - var attr = this.getAttribute("alt"); + var attr = this.getAttribute("data-attr"); var val = this.value; var valid = false; if($.inArray(attr, length_attrs) != -1) { @@ -1102,8 +1102,8 @@ function svg_edit_setup() { svgCanvas.createLayer(newName); updateContextPanel(); populateLayers(); - $('#layerlist option').removeAttr("selected"); - $('#layerlist option:first').attr("selected", "selected"); + $('#layerlist tr.layer').removeClass("layersel"); + $('#layerlist tr.layer:first').addClass("layersel"); }); $('#layer_delete').click(function() { @@ -1113,39 +1113,40 @@ function svg_edit_setup() { // This matches what SvgCanvas does // TODO: make this behavior less brittle (svg-editor should get which // layer is selected from the canvas and then select that one in the UI) - $('#layerlist option:first').attr("selected", "selected"); + $('#layerlist tr.layer').removeClass("layersel"); + $('#layerlist tr.layer:first').addClass("layersel"); } }); $('#layer_up').click(function() { // find index position of selected option - var curIndex = $('#layerlist option:selected').prevAll().length; + var curIndex = $('#layerlist tr.layersel').prevAll().length; if (curIndex > 0) { - var total = $('#layerlist option').length; + var total = $('#layerlist tr.layer').length; curIndex--; svgCanvas.setCurrentLayerPosition(total-curIndex-1); populateLayers(); - $('#layerlist option').removeAttr("selected"); - $('#layerlist option:eq('+curIndex+')').attr("selected", "selected"); + $('#layerlist tr.layer').removeClass("layersel"); + $('#layerlist tr.layer:eq('+curIndex+')').addClass("layersel"); } }); $('#layer_down').click(function() { // find index position of selected option - var curIndex = $('#layerlist option:selected').prevAll().length; - var total = $('#layerlist option').length; + var curIndex = $('#layerlist tr.layersel').prevAll().length; + var total = $('#layerlist tr.layer').length; if (curIndex < total-1) { curIndex++; svgCanvas.setCurrentLayerPosition(total-curIndex-1); populateLayers(); - $('#layerlist option').removeAttr("selected"); - $('#layerlist option:eq('+curIndex+')').attr("selected", "selected"); + $('#layerlist tr.layer').removeClass("layersel"); + $('#layerlist tr.layer:eq('+curIndex+')').addClass("layersel"); } }); $('#layer_rename').click(function() { - var curIndex = $('#layerlist option:selected').prevAll().length; - var oldName = $('#layerlist option:selected').attr("value"); + var curIndex = $('#layerlist tr.layersel').prevAll().length; + var oldName = $('#layerlist tr.layersel td.layername').text(); var newName = prompt("Please enter the new layer name",""); if (!newName) return; if (oldName == newName) { @@ -1162,34 +1163,56 @@ function svg_edit_setup() { svgCanvas.renameCurrentLayer(newName); populateLayers(); - $('#layerlist option').removeAttr("selected"); - $('#layerlist option:eq('+curIndex+')').attr("selected", "selected"); + $('#layerlist tr.layer').removeClass("layersel"); + $('#layerlist tr.layer:eq('+curIndex+')').addClass("layersel"); }); var populateLayers = function(){ - $('#layerlist').empty(); + var layerlist = $('#layerlist tbody'); + layerlist.empty(); var layer = svgCanvas.getNumLayers(); // we get the layers in the reverse z-order (the layer rendered on top is listed first) while (layer--) { var name = svgCanvas.getLayer(layer); - $('#layerlist').append(""); + // contenteditable=\"true\" + if (svgCanvas.getLayerVisibility(name)) { + layerlist.append("" + name + ""); + } + else { + layerlist.append("" + name + ""); + } } // if we only have one layer, then always make sure that layer is selected // (This is really only required upon first initialization) - if ($('#layerlist').size() == 1) { - $('#layerlist option:first').attr("selected", "selected"); + if (layerlist.size() == 1) { + $('#layerlist tr:first').addClass("layersel"); } - $('#layerlist option').mouseup(function(evt){ - $('#layerlist option').removeAttr("selected"); - var option = $(this); - option.attr("selected", "selected"); - svgCanvas.setCurrentLayer(option.attr("value")); - }).click(function(evt) { - var container = document.getElementById("layerlist"); -// var mouse_x = evt.pageX - container.boxObject.x; -// var mouse_y = evt.pageY - container.boxObject.y; - // mouse_x, mouse_y contain the relative x,y position of the click + // handle selection of layer + $('#layerlist td.layername').click(function(evt){ + $('#layerlist tr.layer').removeClass("layersel"); + var row = $(this.parentNode); + row.addClass("layersel"); + svgCanvas.setCurrentLayer(this.textContent); }); + $('#layerlist td.layervis').click(function(evt){ + var row = $(this.parentNode).prevAll().length; + var name = $('#layerlist tr.layer:eq(' + row + ') td.layername').text(); + var vis = $(this).hasClass('layerinvis'); + svgCanvas.setLayerVisibility(name, vis); + if (vis) { + $(this).removeClass('layerinvis'); + } + else { + $(this).addClass('layerinvis'); + } + }); + + // if there were too few rows, let's add a few to make it not so lonely + var num = 5 - $('#layerlist tr.layer').size(); + while (num-- > 0) { + // FIXME: there must a better way to do this + layerlist.append("_"); + } }; populateLayers();