Fixed issue 112: Values for certain attributes must now be numbers, enter/return on field now updates value in Opera

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@453 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Alexis Deveria 2009-08-24 15:26:35 +00:00
parent 835574375c
commit c4cc408465
2 changed files with 33 additions and 1 deletions

View File

@ -37,6 +37,7 @@
</a> </a>
</div> </div>
<form id="tool_form">
<div id="tools_top" class="tools_panel"> <div id="tools_top" class="tools_panel">
<!-- File-like buttons: New, Save, Source --> <!-- File-like buttons: New, Save, Source -->
<div> <div>
@ -264,6 +265,7 @@
<div id="tool_alignright" class="tool_flyout_button" title="Align to Right"></div> <div id="tool_alignright" class="tool_flyout_button" title="Align to Right"></div>
<div id="tool_aligncenter" class="tool_flyout_button" title="Align to Center"></div> <div id="tool_aligncenter" class="tool_flyout_button" title="Align to Center"></div>
</div> </div>
</form>
</div> <!-- svg_editor --> </div> <!-- svg_editor -->

View File

@ -25,6 +25,8 @@ function svg_edit_setup() {
var selectedElement = null; var selectedElement = null;
var multiselected = false; var multiselected = false;
var editingsource = false; var editingsource = false;
var length_attrs = ['x','y','x1','x2','y1','y2','cx','cy','width','height','r','rx','ry','width','height','radius'];
var length_types = ['em','ex','px','cm','mm','in','pt','pc','%'];
var fillPaint = new $.jGraduate.Paint({solidColor: "FF0000"}); // solid red var fillPaint = new $.jGraduate.Paint({solidColor: "FF0000"}); // solid red
var strokePaint = new $.jGraduate.Paint({solidColor: "000000"}); // solid black var strokePaint = new $.jGraduate.Paint({solidColor: "000000"}); // solid black
@ -308,7 +310,31 @@ function svg_edit_setup() {
}); });
$('.attr_changer').change(function() { $('.attr_changer').change(function() {
svgCanvas.changeSelectedAttribute(this.getAttribute("alt"), this.value); var attr = this.getAttribute("alt");
var val = this.value;
var valid = false;
if($.inArray(attr, length_attrs) != -1) {
if(!isNaN(val)) {
valid = true;
} else {
//TODO: Allow the values in length_types, then uncomment this:
// val = val.toLowerCase();
// $.each(length_types, function(i, unit) {
// if(valid) return;
// var re = new RegExp('^-?[\\d\\.]+' + unit + '$');
// if(re.test(val)) valid = true;
// });
}
} else valid = true;
if(!valid) {
alert('Invalid value given for' + $(this).attr('title').replace('Change','')
+ '.');
this.value = selectedElement.getAttribute(attr);
return false;
}
svgCanvas.changeSelectedAttribute(attr, val);
}); });
$('.palette_item').click(function(evt){ $('.palette_item').click(function(evt){
@ -705,6 +731,10 @@ function svg_edit_setup() {
var disable = !(item.length > 2 && !item[2]); var disable = !(item.length > 2 && !item[2]);
$(document).bind('keydown', {combi:item[0], disableInInput: disable}, item[1]); $(document).bind('keydown', {combi:item[0], disableInInput: disable}, item[1]);
}); });
$('.attr_changer').bind('keydown', {combi:'return', disableInInput: false},
function(evt) {$(this).change();evt.preventDefault();}
);
} }
setKeyBindings(); setKeyBindings();