More work on Layers UI, base internal work to get layers created.

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@667 eee81c28-f429-11dd-99c0-75d572ba1ddd
This commit is contained in:
Jeff Schiller
2009-09-21 02:05:58 +00:00
parent c8c8fdb9f3
commit 1479bf7de4
5 changed files with 35 additions and 25 deletions

BIN
editor/images/go-down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

BIN
editor/images/go-up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 B

View File

@@ -36,18 +36,17 @@
<div id="sidepanels"> <div id="sidepanels">
<div id="layerpanel"> <div id="layerpanel">
<h3>Layers</h3> <h3>Layers</h3>
<fieldset id="layerbuttons"> <fieldset id="layerbuttons">
<img id="layer_new" class="layer_button" src="images/clear.png" alt="New Layer" title="New Layer"></img> <img id="layer_new" class="layer_button" src="images/clear.png" alt="New Layer" title="New Layer"></img>
<img id="layer_delete" class="layer_button" src="images/delete.png" alt="Delete Layer" title="Delete Layer"></img> <img id="layer_delete" class="layer_button" src="images/delete.png" alt="Delete Layer" title="Delete Layer"></img>
<img id="layer_rename" class="layer_button" src="images/view-refresh.png" alt="Rename Layer" title="Rename Layer"></img>
<img id="layer_up" class="layer_button" src="images/go-up.png" alt="Move Layer up" title="Move Layer Up"></img>
<img id="layer_down" class="layer_button" src="images/go-down.png" alt="Move Layer Down" title="Move Layer Down"></img>
</fieldset> </fieldset>
<select id="layerlist" size="20" multiple="multiple"> <select id="layerlist" size="20" multiple="multiple">
<option value="Layer_1" selected="selected">Layer 1</option> <option value="Layer_1" selected="selected">Layer 1</option>
</select> </select>
<p><b>By default, this panel will be collapsed. It will be expandable by some button/handle.</b></p>
</div> </div>
</div> </div>

View File

@@ -557,12 +557,14 @@ function BatchCommand(text) {
var shape = svgdoc.getElementById(data.attr.id); var shape = svgdoc.getElementById(data.attr.id);
// if shape is a path but we need to create a rect/ellipse, then remove the path // if shape is a path but we need to create a rect/ellipse, then remove the path
if (shape && data.element != shape.tagName) { if (shape && data.element != shape.tagName) {
svgzoom.removeChild(shape); current_layer.removeChild(shape);
shape = null; shape = null;
} }
if (!shape) { if (!shape) {
shape = svgdoc.createElementNS(svgns, data.element); shape = svgdoc.createElementNS(svgns, data.element);
svgzoom.appendChild(shape); if (current_layer) {
current_layer.appendChild(shape);
}
} }
assignAttributes(shape, data.attr, 100); assignAttributes(shape, data.attr, 100);
cleanupElement(shape); cleanupElement(shape);
@@ -592,7 +594,11 @@ function BatchCommand(text) {
svgroot.appendChild(svgzoom); svgroot.appendChild(svgzoom);
var comment = svgdoc.createComment(" created with SVG-edit - http://svg-edit.googlecode.com/ "); var comment = svgdoc.createComment(" created with SVG-edit - http://svg-edit.googlecode.com/ ");
svgzoom.appendChild(comment); svgzoom.appendChild(comment);
// associative array of layer names to <g> elements
var all_layers = {};
// pointer to the current layer <g>
var current_layer = null;
var d_attr = null; var d_attr = null;
var started = false; var started = false;
var obj_num = 1; var obj_num = 1;
@@ -674,7 +680,7 @@ function BatchCommand(text) {
var resultList = null; var resultList = null;
try { try {
resultList = svgroot.getIntersectionList(rect, null); resultList = current_layer.getIntersectionList(rect, null);
} catch(e) { } } catch(e) { }
if (resultList == null || typeof(resultList.item) != "function") { if (resultList == null || typeof(resultList.item) != "function") {
@@ -1378,11 +1384,10 @@ function BatchCommand(text) {
started = true; started = true;
current_resize_mode = "none"; current_resize_mode = "none";
var t = evt.target; var t = evt.target;
// if this element is in a group, go up until we reach the top-level group // if this element is in a group, go up until we reach the top-level group
// TODO: once we implement Layers, the top-level groups will be layers so // just below the layer groups
// we will want to stop just before then (parentNode.parentNode)
// TODO: once we implement links, we also would have to check for <a> elements // TODO: once we implement links, we also would have to check for <a> elements
while (t.parentNode.tagName == "g") { while (t.parentNode.parentNode.tagName == "g") {
t = t.parentNode; t = t.parentNode;
} }
// WebKit returns <div> when the canvas is clicked, Firefox/Opera return <svg> // WebKit returns <div> when the canvas is clicked, Firefox/Opera return <svg>
@@ -2512,7 +2517,6 @@ function BatchCommand(text) {
}; };
// this function returns false if the set was unsuccessful, true otherwise // this function returns false if the set was unsuccessful, true otherwise
// TODO: should this function keep throwing the exception?
// TODO: after parsing in the new text, do we need to synchronize getId()? // TODO: after parsing in the new text, do we need to synchronize getId()?
this.setSvgString = function(xmlString) { this.setSvgString = function(xmlString) {
try { try {
@@ -2524,11 +2528,6 @@ function BatchCommand(text) {
var batchCmd = new BatchCommand("Change Source"); var batchCmd = new BatchCommand("Change Source");
// save our old selectorParentGroup
// not needed anymore, we can keep svgroot forever (and just replace svgzoom)
// TODO: reset zoom level on svgroot
// selectorManager.selectorParentGroup = svgroot.removeChild(selectorManager.selectorParentGroup);
// remove old svg document // remove old svg document
var oldzoom = svgroot.removeChild(svgzoom); var oldzoom = svgroot.removeChild(svgzoom);
batchCmd.addSubCommand(new RemoveElementCommand(oldzoom, svgroot)); batchCmd.addSubCommand(new RemoveElementCommand(oldzoom, svgroot));
@@ -2564,10 +2563,9 @@ function BatchCommand(text) {
// reset zoom // reset zoom
current_zoom = 1; current_zoom = 1;
// identify layers
// add back in parentSelectorGroup
// not needed anymore
// svgroot.appendChild(selectorManager.selectorParentGroup);
selectorManager.update(); selectorManager.update();
addCommandToHistory(batchCmd); addCommandToHistory(batchCmd);
@@ -2581,18 +2579,29 @@ function BatchCommand(text) {
}; };
this.clear = function() { this.clear = function() {
current_poly_pts = [];
// clear the svgzoom node
var nodes = svgzoom.childNodes; var nodes = svgzoom.childNodes;
var len = svgzoom.childNodes.length; var len = svgzoom.childNodes.length;
var i = 0; var i = 0;
current_poly_pts = [];
this.clearSelection(); this.clearSelection();
for(var rep = 0; rep < len; rep++){ for(var rep = 0; rep < len; rep++){
if (nodes[i].nodeType == 1) { // element node if (nodes[i].nodeType == 1) { // element node
nodes[i].parentNode.removeChild(nodes[i]); svgzoom.removeChild(nodes[i]);
} else { } else {
i++; i++;
} }
} }
// create empty first layer
current_layer = svgdoc.createElementNS(svgns, "g");
var layer_title = svgdoc.createElementNS(svgns, "title");
layer_title.appendChild(svgdoc.createTextNode("Layer 1"));
current_layer.appendChild(layer_title);
current_layer = svgzoom.appendChild(current_layer);
all_layers = {};
all_layers["Layer 1"] = current_layer;
// clear the undo stack // clear the undo stack
resetUndoStack(); resetUndoStack();
// reset the selector manager // reset the selector manager
@@ -3410,7 +3419,7 @@ function BatchCommand(text) {
}; };
this.getVisibleElements = function(includeBBox) { this.getVisibleElements = function(includeBBox) {
var nodes = svgzoom.childNodes; var nodes = current_layer.childNodes;
var i = nodes.length; var i = nodes.length;
var contentElems = []; var contentElems = [];
@@ -3643,7 +3652,9 @@ function BatchCommand(text) {
this.moveSelectedElements(dx,dy); this.moveSelectedElements(dx,dy);
}; };
this.getZoom = function(){return current_zoom;}; this.getZoom = function(){return current_zoom;};
}
this.clear();
};
// Static class for various utility functions // Static class for various utility functions