Made connectors be removed upon connected-element deletion. Made easier method for adding context panel options

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1345 eee81c28-f429-11dd-99c0-75d572ba1ddd
This commit is contained in:
Alexis Deveria
2010-02-05 16:11:19 +00:00
parent 7e8f5a312b
commit a4f835a044
4 changed files with 135 additions and 47 deletions

View File

@@ -9,8 +9,7 @@
$(function() {
svgCanvas.addExtension("Arrows", function(S) {
var svgcontent = S.content,
getElem = S.getElem,
var svgcontent = S.svgcontent,
addElem = S.addSvgElementFromJson,
selElems;
@@ -64,7 +63,7 @@ $(function() {
function addMarker(id, type) {
// TODO: Make marker (or use?) per arrow type, since refX can be different
var marker = getElem(id);
var marker = S.getElem(id);
var pathdata = {
se_arrow_fw: {d:"m0,0l10,5l-10,5l5,-5l-5,-5z", refx:8},
@@ -104,7 +103,8 @@ $(function() {
marker.setAttribute('refX', data.refx);
}
function setArrow(type) {
function setArrow() {
var type = this.value;
resetMarker();
if(type == "none") {
@@ -114,7 +114,6 @@ $(function() {
var fw_id = "se_arrow_fw";
var bk_id = "se_arrow_bk";
// Set marker on element
var id = fw_id;
if(type == "mid_bk") {
@@ -134,24 +133,25 @@ $(function() {
S.call("changed", selElems);
}
// Init code
(function() {
var conn_tools = $('<div id="arrow_panel">\
<label><select id="arrow_list">\
<option value="none">No arrow</option>\
<option value="end">----&gt;</option>\
<option value="start">&lt;----</option>\
<option value="both">&lt;---&gt;</option>\
<option value="mid">--&gt;--</option>\
<option value="mid_bk">--&lt;--</option>\
</select></label></div>"').hide().appendTo("#tools_top");
$('#arrow_list').change(function() {
setArrow(this.value);
});
}());
return {
name: "Arrows",
context_panels: [{
type: "select",
id: "arrow_panel",
list_id: "arrow_list",
options: {
none: "No arrow",
end: "----&gt;",
start: "&lt;----",
both: "&lt;---&gt;",
mid: "--&gt;--",
mid_bk: "--&lt;--"
},
defopt: "none",
events: {
change: setArrow
}
}],
addLangData: function(lang) {
return {
data: lang_list[lang]

View File

@@ -9,8 +9,8 @@
$(function() {
svgCanvas.addExtension("Connector", function(S) {
var svgcontent = S.content,
svgroot = S.root,
var svgcontent = S.svgcontent,
svgroot = S.svgroot,
getNextId = S.getNextId,
getElem = S.getElem,
addElem = S.addSvgElementFromJson,
@@ -104,14 +104,29 @@ $(function() {
svgCanvas.removeFromSelection($(conn_sel).toArray());
}
// Loop through selected elements
while(i--) {
var elem = all_els[i];
if(!elem) continue;
// Element was deleted, so delete connector
var was_deleted = !elem.parentNode;
// Skip connector
if($(elem).data('c_start')) continue;
// Loop through connectors to see if one is connected to the element
connectors.each(function() {
var start = $(this).data("c_start");
var end = $(this).data("c_end");
// Connector found for this element
if(start == elem.id || end == elem.id) {
if(was_deleted) {
$(this).remove();
return;
}
var bb = svgCanvas.getStrokedBBox([elem]);
connections.push({
elem: elem,
@@ -138,8 +153,8 @@ $(function() {
var line = conn.connector;
var elem = conn.elem;
var pre = conn.is_start?'start':'end';
var sw = line.getAttribute('stroke-width');
var pre = conn.is_start?'start':'end';
// Update bbox for this element
var bb = svgCanvas.getStrokedBBox([elem]);