-## [Live Demo](http://jshotkeys.googlepages.com/test-static-01.html)
+ $(expression).bind(types, keys, handler);
+ $(expression).unbind(types, handler);
+
+ $(document).bind('keydown', 'ctrl+a', fn);
+
+ // e.g. replace '$' sign with 'EUR'
+ $('input.foo').bind('keyup', '$', function(){
+ this.value = this.value.replace('$', 'EUR');
+ });
## Types
Supported types are `'keydown'`, `'keyup'` and `'keypress'`
-## Options
-The options are `'combi'` i.e. the key combination, and `'disableInInput'` which allow your code not to be executed when the cursor is located inside an input ( `$(elem).is('input') || $(elem).is('textarea')` ).
-
-As you can see, the key combination can be passed as string or as an object. You may pass an object in case you wish to override the default option for `disableInInput` which is set to `false`:
-
-I.e. when cursor is within an input field, `'a'` will be inserted into the input field without interfering.
+## Notes
If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift
-Modifiers are case insensitive, i.e. 'Ctrl+a' 'ctrl+a'.
-
-## Handler
-In previous versions there was an option propagate which is removed now and implemented at the user code level.
-
-When using jQuery, if an event handler returns false, jQuery will call `stopPropagation()` and `preventDefault()`
+Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.
## jQuery Compatibility
-Tested with *jQuery 1.2.6*
+
+Works with jQuery 1.4.2 and newer.
It known to be working with all the major browsers on all available platforms (Win/Mac/Linux)
@@ -51,43 +36,10 @@ It known to be working with all the major browsers on all available platforms (W
* Safari-3
* Chrome-0.2
-## Features added in this version (0.7.x)
- * Implemented as $.fn - let you use `this`.
- * jQuery selectors are supported.
- * Extending `$.fn.bind` and `$.fn.unbind` so you get a single interface for binding events to handlers
-
-## Overriding jQuery
-The plugin wraps the following jQuery methods:
- * $.fn.bind
- * $.fn.unbind
- * $.find
-
-Even though the plugin overrides these methods, the original methods will *always* be called.
-
-The plugin will add functionality only for the `keydown`, `keyup` and `keypress` event types. Any other types are passed untouched to the original `'bind()'` and `'unbind()'` methods.
-
-Moreover, if you call `bind()` without passing the shortcut key combination e.g. `$(document).bind('keydown', fn)` only the original `'bind()'` method will be executed.
-
-I also modified the `$.fn.find` method by adding a single line at the top of the function body. here is the code:
-
-
- jQuery.fn.find = function( selector ) {
- // the line I added
- this.query=selector;
- // call jQuery original find
- return jQuery.fn.__find__.apply(this, arguments);
- };
-
-
-You can read about this at [jQuery's User Group](http://groups.google.com/group/jquery-en/browse_thread/thread/18f9825e8d22f18d)
-
-###Notes
+### Addendum
Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler.
Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all.
-*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
-
-
-###Current Version is: beta 0.7
\ No newline at end of file
+*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
\ No newline at end of file
diff --git a/public/svg-edit/editor/js-hotkeys/jquery.hotkeys.min.js b/public/svg-edit/editor/js-hotkeys/jquery.hotkeys.min.js
index 2060e5ba..52d95517 100644
--- a/public/svg-edit/editor/js-hotkeys/jquery.hotkeys.min.js
+++ b/public/svg-edit/editor/js-hotkeys/jquery.hotkeys.min.js
@@ -1,19 +1,15 @@
-(function(jQuery){jQuery.fn.__bind__=jQuery.fn.bind;jQuery.fn.__unbind__=jQuery.fn.unbind;jQuery.fn.__find__=jQuery.fn.find;var hotkeys={version:'0.7.9',override:/keypress|keydown|keyup/g,triggersMap:{},specialKeys:{27:'esc',9:'tab',32:'space',13:'return',8:'backspace',145:'scroll',20:'capslock',144:'numlock',19:'pause',45:'insert',36:'home',46:'del',35:'end',33:'pageup',34:'pagedown',37:'left',38:'up',39:'right',40:'down',109:'-',112:'f1',113:'f2',114:'f3',115:'f4',116:'f5',117:'f6',118:'f7',119:'f8',120:'f9',121:'f10',122:'f11',123:'f12',191:'/'},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":"\"",",":"<",".":">","/":"?","\\":"|"},newTrigger:function(type,combi,callback){var result={};result[type]={};result[type][combi]={cb:callback,disableInInput:false};return result;}};hotkeys.specialKeys=jQuery.extend(hotkeys.specialKeys,{96:'0',97:'1',98:'2',99:'3',100:'4',101:'5',102:'6',103:'7',104:'8',105:'9',106:'*',107:'+',109:'-',110:'.',111:'/'});jQuery.fn.find=function(selector){this.query=selector;return jQuery.fn.__find__.apply(this,arguments);};jQuery.fn.unbind=function(type,combi,fn){if(jQuery.isFunction(combi)){fn=combi;combi=null;}
-if(combi&&typeof combi==='string'){var selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();var hkTypes=type.split(' ');for(var x=0;x","/":"?","\\":"|"}};function a(d){if(typeof d.data!=="string"){return}var c=d.handler,e=d.data.toLowerCase().split(" ");d.handler=function(n){if(this!==n.target&&(/textarea|select/i.test(n.target.nodeName)||n.target.type==="text")){return}var h=n.type!=="keypress"&&b.hotkeys.specialKeys[n.which],o=String.fromCharCode(n.which).toLowerCase(),k,m="",g={};if(n.altKey&&h!=="alt"){m+="alt+"}if(n.ctrlKey&&h!=="ctrl"){m+="ctrl+"}if(n.metaKey&&!n.ctrlKey&&h!=="meta"){m+="meta+"}if(n.shiftKey&&h!=="shift"){m+="shift+"}if(h){g[m+h]=true}else{g[m+o]=true;g[m+b.hotkeys.shiftNums[o]]=true;if(m==="shift+"){g[b.hotkeys.shiftNums[o]]=true}}for(var j=0,f=e.length;j * {
- float: left;
-}
-
span.zoom_tool {
line-height: 26px;
padding: 3px;
}
-.magic_field input {
- margin-top: 5px;
+#zoom_panel label {
+ margin-top: 2px;
}
.dropdown {
@@ -701,6 +698,21 @@ span.zoom_tool {
height: 26px;
}
+#toggle_stroke_tools {
+ letter-spacing: -.2em;
+ padding-right: 8px;
+}
+
+#toggle_stroke_tools:hover {
+ cursor: pointer;
+ background: #FFC;
+}
+
+.stroke_tool {
+ display: none;
+ white-space: nowrap;
+}
+
.color_tool > *:first-child {
-moz-border-radius-topleft: 4px;
-moz-border-radius-bottomleft: 4px;
@@ -739,6 +751,8 @@ span.zoom_tool {
#svg_editor #tools_bottom_3 {
+// position: relative;
+ z-index: 2;
}
#svg_editor #copyright {
@@ -1023,4 +1037,4 @@ span.zoom_tool {
-webkit-border-radius: 0px;
}
-foreignObject {line-height:1.0}
\ No newline at end of file
+foreignObject {line-height:1.0}
diff --git a/public/svg-edit/editor/svg-editor.html b/public/svg-edit/editor/svg-editor.html
index 1a6a9b5b..7746b8ce 100644
--- a/public/svg-edit/editor/svg-editor.html
+++ b/public/svg-edit/editor/svg-editor.html
@@ -19,6 +19,8 @@
+
+
+