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:
@@ -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">----></option>\
|
||||
<option value="start"><----</option>\
|
||||
<option value="both"><---></option>\
|
||||
<option value="mid">-->--</option>\
|
||||
<option value="mid_bk">--<--</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: "---->",
|
||||
start: "<----",
|
||||
both: "<--->",
|
||||
mid: "-->--",
|
||||
mid_bk: "--<--"
|
||||
},
|
||||
defopt: "none",
|
||||
events: {
|
||||
change: setArrow
|
||||
}
|
||||
}],
|
||||
addLangData: function(lang) {
|
||||
return {
|
||||
data: lang_list[lang]
|
||||
|
||||
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user