Author: damoxc
Revision: 5080
Log:
move the classes in deluge-ext to ext-extensions and remove deluge-ext
Diff:
Modified: trunk/deluge/ui/web/js/build.sh
===================================================================
--- trunk/deluge/ui/web/js/build.sh 2009-04-18 16:14:56 UTC (rev 5079)
+++ trunk/deluge/ui/web/js/build.sh 2009-04-18 16:20:07 UTC (rev 5080)
@@ -1,4 +1,4 @@
-DELUGE_FILES="rpc.js deluge.js deluge-ext.js deluge-login.js deluge-menus.js
deluge-bars.js deluge-connections.js deluge-torrents.js deluge-details.js
deluge-add.js deluge-preferences.js deluge-ui.js"
+DELUGE_FILES="rpc.js deluge.js deluge-login.js deluge-menus.js deluge-bars.js
deluge-connections.js deluge-torrents.js deluge-details.js deluge-add.js
deluge-preferences.js deluge-ui.js"
ALL_FILES="ext-extensions-debug.js $DELUGE_FILES"
scan() {
Deleted: trunk/deluge/ui/web/js/deluge-ext.js
===================================================================
--- trunk/deluge/ui/web/js/deluge-ext.js 2009-04-18 16:14:56 UTC (rev
5079)
+++ trunk/deluge/ui/web/js/deluge-ext.js 2009-04-18 16:20:07 UTC (rev
5080)
@@ -1,285 +0,0 @@
-/*
-Script: deluge-ext.js
- Container for all classes that extend Exts native classes.
-
-Copyright:
- (C) Damien Churchill 2009 <[email protected]>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, write to:
- The Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor
- Boston, MA 02110-1301, USA.
-*/
-
-Deluge.ProgressBar = Ext.extend(Ext.ProgressBar, {
- initComponent: function() {
- Deluge.ProgressBar.superclass.initComponent.call(this);
- },
-
- updateProgress: function(value, text, animate) {
- this.value = value || 0;
- if (text) {
- this.updateText(text);
- }
-
- if (this.rendered) {
- var w =
Math.floor(value*this.el.dom.firstChild.offsetWidth / 100.0);
- this.progressBar.setWidth(w, animate === true || (animate !==
false && this.animate));
- if (this.textTopEl) {
- //textTopEl should be the same width as the bar so overflow
will clip as the bar moves
- this.textTopEl.removeClass('x-hidden').setWidth(w);
- }
- }
- this.fireEvent('update', this, value, text);
- return this;
- }
-});
-Ext.reg('deluge-progressbar', Deluge.ProgressBar);
-
-Ext.tree.ColumnTree = Ext.extend(Ext.tree.TreePanel, {
- lines:false,
- borderWidth: Ext.isBorderBox ? 0 : 2, // the combined left/right border
for each cell
- cls:'x-column-tree',
-
- onRender : function(){
- Ext.tree.ColumnTree.superclass.onRender.apply(this, arguments);
- this.headers = this.body.createChild(
- {cls:'x-tree-headers'},this.innerCt.dom);
-
- var cols = this.columns, c;
- var totalWidth = 0;
-
- for(var i = 0, len = cols.length; i < len; i++){
- c = cols[i];
- totalWidth += c.width;
- this.headers.createChild({
- cls:'x-tree-hd ' + (c.cls?c.cls+'-hd':''),
- cn: {
- cls:'x-tree-hd-text',
- html: c.header
- },
- style:'width:'+(c.width-this.borderWidth)+'px;'
- });
- }
- this.headers.createChild({cls:'x-clear'});
- // prevent floats from wrapping when clipped
- this.headers.setWidth(totalWidth);
- this.innerCt.setWidth(totalWidth);
- }
-});
-
-Ext.tree.ColumnTreeNode = Ext.extend(Ext.tree.TreeNode, {
-
- setColumnValue: function(index, value) {
- var t = this.getOwnerTree();
- var oldValue = this[t.columns[index].dataIndex];
- this[t.columns[index].dataIndex] = value;
- this.attributes[[t.columns[index].dataIndex]] = value;
- if (this.rendered) {
- this.ui.onColumnValueChange(this, index, value,
oldValue);
- }
- this.fireEvent('columnvaluechange', this, index, value,
oldValue);
- }
-});
-
-Ext.tree.ColumnNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
- focus: Ext.emptyFn, // prevent odd scrolling behavior
-
- onColumnValueChange: function(n, colIndex, value, oldValue) {
- if (this.rendered) {
- var c = n.getOwnerTree().columns[colIndex];
- this.columnNodes[colIndex].innerHTML = (c.renderer ?
c.renderer(value, n, null) : value);
- }
- },
-
- renderElements : function(n, a, targetNode, bulkRender){
- this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() :
'';
-
- var t = n.getOwnerTree();
- var cols = t.columns;
- var bw = t.borderWidth;
- var c = cols[0];
-
- var cb = typeof a.checked == 'boolean';
- var href = a.href ? a.href : Ext.isGecko ? "" : "#";
-
- var buf = [
- '<li class="x-tree-node"><div ext:tree-node-id="',n.id,'"
class="x-tree-node-el x-tree-node-leaf x-unselectable ', a.cls,'"
unselectable="on">',
- '<div class="x-tree-col" style="width:',c.width-bw,'px;">',
- '<span
class="x-tree-node-indent">',this.indentMarkup,"</span>",
- '<img src="', this.emptyIcon, '" class="x-tree-ec-icon
x-tree-elbow">',
- '<img src="', a.icon || this.emptyIcon, '"
class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),(a.iconCls
? " "+a.iconCls : ""),'" unselectable="on" />',
- cb ? ('<input class="x-tree-node-cb" type="checkbox" ' +
(a.checked ? 'checked="checked" />' : '/>')) : '',
- '<a hidefocus="on" class="x-tree-node-anchor"
href="',href,'" tabIndex="1" ',
- a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '>',
- '<span unselectable="on">', n.text || (c.renderer ?
c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]),"</span></a>",
- "</div>"];
- for(var i = 1, len = cols.length; i < len; i++){
- c = cols[i];
-
- buf.push('<div class="x-tree-col ',(c.cls?c.cls:''),'"
style="width:',c.width-bw,'px;">',
- '<div class="x-tree-col-text">',(c.renderer ?
c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]),"</div>",
- "</div>");
- }
- buf.push(
- '<div class="x-clear"></div></div>',
- '<ul class="x-tree-node-ct" style="display:none;"></ul>',
- "</li>");
-
- if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){
- this.wrap = Ext.DomHelper.insertHtml("beforeBegin",
- n.nextSibling.ui.getEl(), buf.join(""));
- }else{
- this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode,
buf.join(""));
- }
-
- this.elNode = this.wrap.childNodes[0];
- this.ctNode = this.wrap.childNodes[1];
- var cs = this.elNode.firstChild.childNodes;
- this.indentNode = cs[0];
- this.ecNode = cs[1];
- this.iconNode = cs[2];
- var index = 3;
- if(cb){
- this.checkbox = cs[3];
- // fix for IE6
- this.checkbox.defaultChecked = this.checkbox.checked;
- index++;
- }
- this.anchor = cs[index];
- this.columnNodes = [cs[index].firstChild];
- for(var i = 1, len = cols.length; i < len; i++){
- this.columnNodes[i] =
this.elNode.childNodes[i].firstChild;
- }
- }
-});
-
-Ext.form.FileUploadField = Ext.extend(Ext.form.TextField, {
- /**
- * @cfg {String} buttonText The button text to display on the upload
button (defaults to
- * 'Browse...'). Note that if you supply a value for {...@link
#buttonCfg}, the buttonCfg.text
- * value will be used instead if available.
- */
- buttonText: 'Browse...',
- /**
- * @cfg {Boolean} buttonOnly True to display the file upload field as a
button with no visible
- * text field (defaults to false). If true, all inherited TextField
members will still be available.
- */
- buttonOnly: false,
- /**
- * @cfg {Number} buttonOffset The number of pixels of space reserved
between the button and the text field
- * (defaults to 3). Note that this only applies if {...@link #buttonOnly}
= false.
- */
- buttonOffset: 3,
- /**
- * @cfg {Object} buttonCfg A standard {...@link Ext.Button} config object.
- */
-
- // private
- readOnly: true,
-
- /**
- * @hide
- * @method autoSize
- */
- autoSize: Ext.emptyFn,
-
- // private
- initComponent: function(){
- Ext.form.FileUploadField.superclass.initComponent.call(this);
-
- this.addEvents(
- /**
- * @event fileselected
- * Fires when the underlying file input field's value has changed
from the user
- * selecting a new file from the system file selection dialog.
- * @param {Ext.form.FileUploadField} this
- * @param {String} value The file value returned by the underlying
file input field
- */
- 'fileselected'
- );
- },
-
- // private
- onRender : function(ct, position){
- Ext.form.FileUploadField.superclass.onRender.call(this, ct, position);
-
- this.wrap = this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'});
- this.el.addClass('x-form-file-text');
- this.el.dom.removeAttribute('name');
-
- this.fileInput = this.wrap.createChild({
- id: this.getFileInputId(),
- name: this.name||this.getId(),
- cls: 'x-form-file',
- tag: 'input',
- type: 'file',
- size: 1
- });
-
- var btnCfg = Ext.applyIf(this.buttonCfg || {}, {
- text: this.buttonText
- });
- this.button = new Ext.Button(Ext.apply(btnCfg, {
- renderTo: this.wrap
- }));
-
- if(this.buttonOnly){
- this.el.hide();
- this.wrap.setWidth(this.button.getEl().getWidth());
- }
-
- this.fileInput.on('change', function(){
- var v = this.fileInput.dom.value;
- this.setValue(v);
- this.fireEvent('fileselected', this, v);
- }, this);
- },
-
- // private
- getFileInputId: function(){
- return this.id+'-file';
- },
-
- // private
- onResize : function(w, h){
- Ext.form.FileUploadField.superclass.onResize.call(this, w, h);
-
- this.wrap.setWidth(w);
-
- if(!this.buttonOnly){
- var w = this.wrap.getWidth() - this.button.getEl().getWidth() -
this.buttonOffset;
- this.el.setWidth(w);
- }
- },
-
- // private
- preFocus : Ext.emptyFn,
-
- // private
- getResizeEl : function(){
- return this.wrap;
- },
-
- // private
- getPositionEl : function(){
- return this.wrap;
- },
-
- // private
- alignErrorIcon : function(){
- this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
- }
-
-});
-Ext.reg('fileuploadfield', Ext.form.FileUploadField);
Modified: trunk/deluge/ui/web/js/ext-extensions-debug.js
===================================================================
--- trunk/deluge/ui/web/js/ext-extensions-debug.js 2009-04-18 16:14:56 UTC
(rev 5079)
+++ trunk/deluge/ui/web/js/ext-extensions-debug.js 2009-04-18 16:20:07 UTC
(rev 5080)
@@ -458,7 +458,6 @@
});
-
/***
* Concrete Strategy: Time
*/
@@ -472,4 +471,278 @@
incrementConstant : Date.MINUTE,
alternateIncrementValue : 1,
alternateIncrementConstant : Date.HOUR
-});
\ No newline at end of file
+});
+
+Ext.tree.ColumnTree = Ext.extend(Ext.tree.TreePanel, {
+ lines:false,
+ borderWidth: Ext.isBorderBox ? 0 : 2, // the combined left/right border
for each cell
+ cls:'x-column-tree',
+
+ onRender : function(){
+ Ext.tree.ColumnTree.superclass.onRender.apply(this, arguments);
+ this.headers = this.body.createChild(
+ {cls:'x-tree-headers'},this.innerCt.dom);
+
+ var cols = this.columns, c;
+ var totalWidth = 0;
+
+ for(var i = 0, len = cols.length; i < len; i++){
+ c = cols[i];
+ totalWidth += c.width;
+ this.headers.createChild({
+ cls:'x-tree-hd ' + (c.cls?c.cls+'-hd':''),
+ cn: {
+ cls:'x-tree-hd-text',
+ html: c.header
+ },
+ style:'width:'+(c.width-this.borderWidth)+'px;'
+ });
+ }
+ this.headers.createChild({cls:'x-clear'});
+ // prevent floats from wrapping when clipped
+ this.headers.setWidth(totalWidth);
+ this.innerCt.setWidth(totalWidth);
+ }
+});
+
+Ext.tree.ColumnTreeNode = Ext.extend(Ext.tree.TreeNode, {
+
+ setColumnValue: function(index, value) {
+ var t = this.getOwnerTree();
+ var oldValue = this[t.columns[index].dataIndex];
+ this[t.columns[index].dataIndex] = value;
+ this.attributes[[t.columns[index].dataIndex]] = value;
+ if (this.rendered) {
+ this.ui.onColumnValueChange(this, index, value,
oldValue);
+ }
+ this.fireEvent('columnvaluechange', this, index, value,
oldValue);
+ }
+});
+
+Ext.tree.ColumnNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
+ focus: Ext.emptyFn, // prevent odd scrolling behavior
+
+ onColumnValueChange: function(n, colIndex, value, oldValue) {
+ if (this.rendered) {
+ var c = n.getOwnerTree().columns[colIndex];
+ this.columnNodes[colIndex].innerHTML = (c.renderer ?
c.renderer(value, n, null) : value);
+ }
+ },
+
+ renderElements : function(n, a, targetNode, bulkRender){
+ this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() :
'';
+
+ var t = n.getOwnerTree();
+ var cols = t.columns;
+ var bw = t.borderWidth;
+ var c = cols[0];
+
+ var cb = typeof a.checked == 'boolean';
+ var href = a.href ? a.href : Ext.isGecko ? "" : "#";
+
+ var buf = [
+ '<li class="x-tree-node"><div ext:tree-node-id="',n.id,'"
class="x-tree-node-el x-tree-node-leaf x-unselectable ', a.cls,'"
unselectable="on">',
+ '<div class="x-tree-col" style="width:',c.width-bw,'px;">',
+ '<span
class="x-tree-node-indent">',this.indentMarkup,"</span>",
+ '<img src="', this.emptyIcon, '" class="x-tree-ec-icon
x-tree-elbow">',
+ '<img src="', a.icon || this.emptyIcon, '"
class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),(a.iconCls
? " "+a.iconCls : ""),'" unselectable="on" />',
+ cb ? ('<input class="x-tree-node-cb" type="checkbox" ' +
(a.checked ? 'checked="checked" />' : '/>')) : '',
+ '<a hidefocus="on" class="x-tree-node-anchor"
href="',href,'" tabIndex="1" ',
+ a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '>',
+ '<span unselectable="on">', n.text || (c.renderer ?
c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]),"</span></a>",
+ "</div>"];
+ for(var i = 1, len = cols.length; i < len; i++){
+ c = cols[i];
+
+ buf.push('<div class="x-tree-col ',(c.cls?c.cls:''),'"
style="width:',c.width-bw,'px;">',
+ '<div class="x-tree-col-text">',(c.renderer ?
c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]),"</div>",
+ "</div>");
+ }
+ buf.push(
+ '<div class="x-clear"></div></div>',
+ '<ul class="x-tree-node-ct" style="display:none;"></ul>',
+ "</li>");
+
+ if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){
+ this.wrap = Ext.DomHelper.insertHtml("beforeBegin",
+ n.nextSibling.ui.getEl(), buf.join(""));
+ }else{
+ this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode,
buf.join(""));
+ }
+
+ this.elNode = this.wrap.childNodes[0];
+ this.ctNode = this.wrap.childNodes[1];
+ var cs = this.elNode.firstChild.childNodes;
+ this.indentNode = cs[0];
+ this.ecNode = cs[1];
+ this.iconNode = cs[2];
+ var index = 3;
+ if(cb){
+ this.checkbox = cs[3];
+ // fix for IE6
+ this.checkbox.defaultChecked = this.checkbox.checked;
+ index++;
+ }
+ this.anchor = cs[index];
+ this.columnNodes = [cs[index].firstChild];
+ for(var i = 1, len = cols.length; i < len; i++){
+ this.columnNodes[i] =
this.elNode.childNodes[i].firstChild;
+ }
+ }
+});
+
+Ext.form.FileUploadField = Ext.extend(Ext.form.TextField, {
+ /**
+ * @cfg {String} buttonText The button text to display on the upload
button (defaults to
+ * 'Browse...'). Note that if you supply a value for {...@link
#buttonCfg}, the buttonCfg.text
+ * value will be used instead if available.
+ */
+ buttonText: 'Browse...',
+ /**
+ * @cfg {Boolean} buttonOnly True to display the file upload field as a
button with no visible
+ * text field (defaults to false). If true, all inherited TextField
members will still be available.
+ */
+ buttonOnly: false,
+ /**
+ * @cfg {Number} buttonOffset The number of pixels of space reserved
between the button and the text field
+ * (defaults to 3). Note that this only applies if {...@link #buttonOnly}
= false.
+ */
+ buttonOffset: 3,
+ /**
+ * @cfg {Object} buttonCfg A standard {...@link Ext.Button} config object.
+ */
+
+ // private
+ readOnly: true,
+
+ /**
+ * @hide
+ * @method autoSize
+ */
+ autoSize: Ext.emptyFn,
+
+ // private
+ initComponent: function(){
+ Ext.form.FileUploadField.superclass.initComponent.call(this);
+
+ this.addEvents(
+ /**
+ * @event fileselected
+ * Fires when the underlying file input field's value has changed
from the user
+ * selecting a new file from the system file selection dialog.
+ * @param {Ext.form.FileUploadField} this
+ * @param {String} value The file value returned by the underlying
file input field
+ */
+ 'fileselected'
+ );
+ },
+
+ // private
+ onRender : function(ct, position){
+ Ext.form.FileUploadField.superclass.onRender.call(this, ct, position);
+
+ this.wrap = this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'});
+ this.el.addClass('x-form-file-text');
+ this.el.dom.removeAttribute('name');
+
+ this.fileInput = this.wrap.createChild({
+ id: this.getFileInputId(),
+ name: this.name||this.getId(),
+ cls: 'x-form-file',
+ tag: 'input',
+ type: 'file',
+ size: 1
+ });
+
+ var btnCfg = Ext.applyIf(this.buttonCfg || {}, {
+ text: this.buttonText
+ });
+ this.button = new Ext.Button(Ext.apply(btnCfg, {
+ renderTo: this.wrap
+ }));
+
+ if(this.buttonOnly){
+ this.el.hide();
+ this.wrap.setWidth(this.button.getEl().getWidth());
+ }
+
+ this.fileInput.on('change', function(){
+ var v = this.fileInput.dom.value;
+ this.setValue(v);
+ this.fireEvent('fileselected', this, v);
+ }, this);
+ },
+
+ // private
+ getFileInputId: function(){
+ return this.id+'-file';
+ },
+
+ // private
+ onResize : function(w, h){
+ Ext.form.FileUploadField.superclass.onResize.call(this, w, h);
+
+ this.wrap.setWidth(w);
+
+ if(!this.buttonOnly){
+ var w = this.wrap.getWidth() - this.button.getEl().getWidth() -
this.buttonOffset;
+ this.el.setWidth(w);
+ }
+ },
+
+ // private
+ preFocus : Ext.emptyFn,
+
+ // private
+ getResizeEl : function(){
+ return this.wrap;
+ },
+
+ // private
+ getPositionEl : function(){
+ return this.wrap;
+ },
+
+ // private
+ alignErrorIcon : function(){
+ this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
+ }
+
+});
+Ext.reg('fileuploadfield', Ext.form.FileUploadField);
+
+/**
+ * Ext.ux.FullProgressBar Class
+ *
+ * @author Damien Churchill <[email protected]>
+ * @version 1.2
+ *
+ * @class Ext.deluge.ProgressBar
+ * @extends Ext.ProgressBar
+ * @constructor
+ * @param {Object} config Configuration options
+ */
+Ext.ux.FullProgressBar = Ext.extend(Ext.ProgressBar, {
+ initComponent: function() {
+ Ext.ux.FullProgressBar.superclass.initComponent.call(this);
+ },
+
+ updateProgress: function(value, text, animate) {
+ this.value = value || 0;
+ if (text) {
+ this.updateText(text);
+ }
+
+ if (this.rendered) {
+ var w =
Math.floor(value*this.el.dom.firstChild.offsetWidth / 100.0);
+ this.progressBar.setWidth(w, animate === true || (animate !==
false && this.animate));
+ if (this.textTopEl) {
+ //textTopEl should be the same width as the bar so overflow
will clip as the bar moves
+ this.textTopEl.removeClass('x-hidden').setWidth(w);
+ }
+ }
+ this.fireEvent('update', this, value, text);
+ return this;
+ }
+});
+Ext.reg('fullprogressbar', Ext.ux.FullProgressBar);
\ No newline at end of file
Modified: trunk/deluge/ui/web/js/ext-extensions.js
===================================================================
--- trunk/deluge/ui/web/js/ext-extensions.js 2009-04-18 16:14:56 UTC (rev
5079)
+++ trunk/deluge/ui/web/js/ext-extensions.js 2009-04-18 16:20:07 UTC (rev
5080)
@@ -1 +1 @@
-Ext.namespace("Ext.ux.form");Ext.ux.form.Spinner=function(a){Ext.ux.form.Spinner.superclass.constructor.call(this,a);this.addEvents({spin:true,spinup:true,spindown:true})};Ext.extend(Ext.ux.form.Spinner,Ext.form.TriggerField,{triggerClass:"x-form-spinner-trigger",splitterClass:"x-form-spinner-splitter",alternateKey:Ext.EventObject.shiftKey,strategy:undefined,onRender:function(b,a){Ext.ux.form.Spinner.superclass.onRender.call(this,b,a);this.splitter=this.wrap.createChild({tag:"div",cls:this.splitterClass,style:"width:13px;
height:2px;"});this.splitter.show().setRight((Ext.isIE)?1:2);this.splitter.show().setTop(10);this.proxy=this.trigger.createProxy("",this.splitter,true);this.proxy.addClass("x-form-spinner-proxy");this.proxy.setStyle("left","0px");this.proxy.setSize(14,1);this.proxy.hide();this.dd=new
Ext.dd.DDProxy(this.splitter.dom.id,"SpinnerDrag",{dragElId:this.proxy.id});this.initSpinner()},initTrigger:function(){this.trigger.addClassOnOver("x-form-trigger-over");this.t
rigger.addClassOnClick("x-form-trigger-click")},initSpinner:function(){this.keyNav=new
Ext.KeyNav(this.el,{up:function(a){a.preventDefault();this.onSpinUp()},down:function(a){a.preventDefault();this.onSpinDown()},pageUp:function(a){a.preventDefault();this.onSpinUpAlternate()},pageDown:function(a){a.preventDefault();this.onSpinDownAlternate()},scope:this});this.repeater=new
Ext.util.ClickRepeater(this.trigger);this.repeater.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.on("mouseover",this.onMouseOver,this,{preventDefault:true});this.trigger.on("mouseout",this.onMouseOut,this,{preventDefault:true});this.trigger.on("mousemove",this.onMouseMove,this,{preventDefault:true});this.trigger.on("mousedown",this.onMouseDown,this,{preventDefault:true});this.trigger.on("mouseup",this.onMouseUp,this,{preventDefault:true});this.wrap.on("mousewheel",this.handleMouseWheel,this);this.dd.setXConstraint(0,0,10);this.dd.setYConstraint(1500,1500,10);this.dd.endDrag=this.e
ndDrag.createDelegate(this);this.dd.startDrag=this.startDrag.createDelegate(this);this.dd.onDrag=this.onDrag.createDelegate(this);if("object"==typeof
this.strategy&&this.strategy.xtype){switch(this.strategy.xtype){case"number":this.strategy=new
Ext.ux.form.Spinner.NumberStrategy(this.strategy);break;case"date":this.strategy=new
Ext.ux.form.Spinner.DateStrategy(this.strategy);break;case"time":this.strategy=new
Ext.ux.form.Spinner.TimeStrategy(this.strategy);break;default:delete
(this.strategy);break}delete
(this.strategy.xtype)}if(this.strategy==undefined){this.strategy=new
Ext.ux.form.Spinner.NumberStrategy()}},onMouseOver:function(){if(this.disabled){return}var
a=this.getMiddle();this.__tmphcls=(Ext.EventObject.getPageY()<a)?"x-form-spinner-overup":"x-form-spinner-overdown";this.trigger.addClass(this.__tmphcls)},onMouseOut:function(){this.trigger.removeClass(this.__tmphcls)},onMouseMove:function(){if(this.disabled){return}var
a=this.getMiddle();if(((Ext.EventObject.getPageY
()>a)&&this.__tmphcls=="x-form-spinner-overup")||((Ext.EventObject.getPageY()<a)&&this.__tmphcls=="x-form-spinner-overdown")){}},onMouseDown:function(){if(this.disabled){return}var
a=this.getMiddle();this.__tmpccls=(Ext.EventObject.getPageY()<a)?"x-form-spinner-clickup":"x-form-spinner-clickdown";this.trigger.addClass(this.__tmpccls)},onMouseUp:function(){this.trigger.removeClass(this.__tmpccls)},onTriggerClick:function(){if(this.disabled||this.getEl().dom.readOnly){return}var
b=this.getMiddle();var
a=(Ext.EventObject.getPageY()<b)?"Up":"Down";this["onSpin"+a]()},getMiddle:function(){var
b=this.trigger.getTop();var c=this.trigger.getHeight();var a=b+(c/2);return
a},isSpinnable:function(){if(this.disabled||this.getEl().dom.readOnly){Ext.EventObject.preventDefault();return
false}return
true},handleMouseWheel:function(a){if(this.wrap.hasClass("x-trigger-wrap-focus")==false){return}var
b=a.getWheelDelta();if(b>0){this.onSpinUp();a.stopEvent()}else{if(b<0){this.onSpinDown();a.sto
pEvent()}}},startDrag:function(){this.proxy.show();this._previousY=Ext.fly(this.dd.getDragEl()).getTop()},endDrag:function(){this.proxy.hide()},onDrag:function(){if(this.disabled){return}var
b=Ext.fly(this.dd.getDragEl()).getTop();var
a="";if(this._previousY>b){a="Up"}if(this._previousY<b){a="Down"}if(a!=""){this["onSpin"+a]()}this._previousY=b},onSpinUp:function(){if(this.isSpinnable()==false){return}if(Ext.EventObject.shiftKey==true){this.onSpinUpAlternate();return}else{this.strategy.onSpinUp(this)}this.fireEvent("spin",this);this.fireEvent("spinup",this)},onSpinDown:function(){if(this.isSpinnable()==false){return}if(Ext.EventObject.shiftKey==true){this.onSpinDownAlternate();return}else{this.strategy.onSpinDown(this)}this.fireEvent("spin",this);this.fireEvent("spindown",this)},onSpinUpAlternate:function(){if(this.isSpinnable()==false){return}this.strategy.onSpinUpAlternate(this);this.fireEvent("spin",this);this.fireEvent("spinup",this)},onSpinDownAlternate:function(){if(th
is.isSpinnable()==false){return}this.strategy.onSpinDownAlternate(this);this.fireEvent("spin",this);this.fireEvent("spindown",this)}});Ext.reg("uxspinner",Ext.ux.form.Spinner);Ext.ux.form.Spinner.Strategy=function(a){Ext.apply(this,a)};Ext.extend(Ext.ux.form.Spinner.Strategy,Ext.util.Observable,{defaultValue:0,minValue:undefined,maxValue:undefined,incrementValue:1,alternateIncrementValue:5,validationTask:new
Ext.util.DelayedTask(),onSpinUp:function(a){this.spin(a,false,false)},onSpinDown:function(a){this.spin(a,true,false)},onSpinUpAlternate:function(a){this.spin(a,false,true)},onSpinDownAlternate:function(a){this.spin(a,true,true)},spin:function(a,c,b){this.validationTask.delay(500,function(){a.validate()})},fixBoundries:function(a){return
a}});Ext.ux.form.Spinner.NumberStrategy=function(a){Ext.ux.form.Spinner.NumberStrategy.superclass.constructor.call(this,a)};Ext.extend(Ext.ux.form.Spinner.NumberStrategy,Ext.ux.form.Spinner.Strategy,{allowDecimals:true,decimalPrecision:2,
spin:function(b,e,c){Ext.ux.form.Spinner.NumberStrategy.superclass.spin.call(this,b,e,c);var
a=parseFloat(b.getValue());var
d=(c==true)?this.alternateIncrementValue:this.incrementValue;(e==true)?a-=d:a+=d;a=(isNaN(a))?this.defaultValue:a;a=this.fixBoundries(a);b.setRawValue(a)},fixBoundries:function(b){var
a=b;if(this.minValue!=undefined&&a<this.minValue){a=this.minValue}if(this.maxValue!=undefined&&a>this.maxValue){a=this.maxValue}return
this.fixPrecision(a)},fixPrecision:function(b){var
a=isNaN(b);if(!this.allowDecimals||this.decimalPrecision==-1||a||!b){return
a?"":b}return
parseFloat(parseFloat(b).toFixed(this.decimalPrecision))}});Ext.ux.form.Spinner.DateStrategy=function(a){Ext.ux.form.Spinner.DateStrategy.superclass.constructor.call(this,a)};Ext.extend(Ext.ux.form.Spinner.DateStrategy,Ext.ux.form.Spinner.Strategy,{defaultValue:new
Date(),format:"Y-m-d",incrementValue:1,incrementConstant:Date.DAY,alternateIncrementValue:1,alternateIncrementConstant:Date.MONTH,spin:func
tion(d,g,e){Ext.ux.form.Spinner.DateStrategy.superclass.spin.call(this);var
a=d.getRawValue();a=Date.parseDate(a,this.format);var c=(g==true)?-1:1;var
f=(e==true)?this.alternateIncrementValue:this.incrementValue;var
b=(e==true)?this.alternateIncrementConstant:this.incrementConstant;if(typeof
this.defaultValue=="string"){this.defaultValue=Date.parseDate(this.defaultValue,this.format)}a=(a)?a.add(b,c*f):this.defaultValue;a=this.fixBoundries(a);d.setRawValue(Ext.util.Format.date(a,this.format))},fixBoundries:function(b){var
d=b;var c=(typeof
this.minValue=="string")?Date.parseDate(this.minValue,this.format):this.minValue;var
a=(typeof
this.maxValue=="string")?Date.parseDate(this.maxValue,this.format):this.maxValue;if(this.minValue!=undefined&&d<c){d=c}if(this.maxValue!=undefined&&d>a){d=a}return
d}});Ext.ux.form.Spinner.TimeStrategy=function(a){Ext.ux.form.Spinner.TimeStrategy.superclass.constructor.call(this,a)};Ext.extend(Ext.ux.form.Spinner.TimeStrategy,Ext.ux.form.Spinner.D
ateStrategy,{format:"H:i",incrementValue:1,incrementConstant:Date.MINUTE,alternateIncrementValue:1,alternateIncrementConstant:Date.HOUR});
\ No newline at end of file
+Ext.namespace("Ext.ux.form");Ext.ux.form.Spinner=function(a){Ext.ux.form.Spinner.superclass.constructor.call(this,a);this.addEvents({spin:true,spinup:true,spindown:true})};Ext.extend(Ext.ux.form.Spinner,Ext.form.TriggerField,{triggerClass:"x-form-spinner-trigger",splitterClass:"x-form-spinner-splitter",alternateKey:Ext.EventObject.shiftKey,strategy:undefined,onRender:function(b,a){Ext.ux.form.Spinner.superclass.onRender.call(this,b,a);this.splitter=this.wrap.createChild({tag:"div",cls:this.splitterClass,style:"width:13px;
height:2px;"});this.splitter.show().setRight((Ext.isIE)?1:2);this.splitter.show().setTop(10);this.proxy=this.trigger.createProxy("",this.splitter,true);this.proxy.addClass("x-form-spinner-proxy");this.proxy.setStyle("left","0px");this.proxy.setSize(14,1);this.proxy.hide();this.dd=new
Ext.dd.DDProxy(this.splitter.dom.id,"SpinnerDrag",{dragElId:this.proxy.id});this.initSpinner()},initTrigger:function(){this.trigger.addClassOnOver("x-form-trigger-over");this.t
rigger.addClassOnClick("x-form-trigger-click")},initSpinner:function(){this.keyNav=new
Ext.KeyNav(this.el,{up:function(a){a.preventDefault();this.onSpinUp()},down:function(a){a.preventDefault();this.onSpinDown()},pageUp:function(a){a.preventDefault();this.onSpinUpAlternate()},pageDown:function(a){a.preventDefault();this.onSpinDownAlternate()},scope:this});this.repeater=new
Ext.util.ClickRepeater(this.trigger);this.repeater.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.on("mouseover",this.onMouseOver,this,{preventDefault:true});this.trigger.on("mouseout",this.onMouseOut,this,{preventDefault:true});this.trigger.on("mousemove",this.onMouseMove,this,{preventDefault:true});this.trigger.on("mousedown",this.onMouseDown,this,{preventDefault:true});this.trigger.on("mouseup",this.onMouseUp,this,{preventDefault:true});this.wrap.on("mousewheel",this.handleMouseWheel,this);this.dd.setXConstraint(0,0,10);this.dd.setYConstraint(1500,1500,10);this.dd.endDrag=this.e
ndDrag.createDelegate(this);this.dd.startDrag=this.startDrag.createDelegate(this);this.dd.onDrag=this.onDrag.createDelegate(this);if("object"==typeof
this.strategy&&this.strategy.xtype){switch(this.strategy.xtype){case"number":this.strategy=new
Ext.ux.form.Spinner.NumberStrategy(this.strategy);break;case"date":this.strategy=new
Ext.ux.form.Spinner.DateStrategy(this.strategy);break;case"time":this.strategy=new
Ext.ux.form.Spinner.TimeStrategy(this.strategy);break;default:delete
(this.strategy);break}delete
(this.strategy.xtype)}if(this.strategy==undefined){this.strategy=new
Ext.ux.form.Spinner.NumberStrategy()}},onMouseOver:function(){if(this.disabled){return}var
a=this.getMiddle();this.__tmphcls=(Ext.EventObject.getPageY()<a)?"x-form-spinner-overup":"x-form-spinner-overdown";this.trigger.addClass(this.__tmphcls)},onMouseOut:function(){this.trigger.removeClass(this.__tmphcls)},onMouseMove:function(){if(this.disabled){return}var
a=this.getMiddle();if(((Ext.EventObject.getPageY
()>a)&&this.__tmphcls=="x-form-spinner-overup")||((Ext.EventObject.getPageY()<a)&&this.__tmphcls=="x-form-spinner-overdown")){}},onMouseDown:function(){if(this.disabled){return}var
a=this.getMiddle();this.__tmpccls=(Ext.EventObject.getPageY()<a)?"x-form-spinner-clickup":"x-form-spinner-clickdown";this.trigger.addClass(this.__tmpccls)},onMouseUp:function(){this.trigger.removeClass(this.__tmpccls)},onTriggerClick:function(){if(this.disabled||this.getEl().dom.readOnly){return}var
b=this.getMiddle();var
a=(Ext.EventObject.getPageY()<b)?"Up":"Down";this["onSpin"+a]()},getMiddle:function(){var
b=this.trigger.getTop();var c=this.trigger.getHeight();var a=b+(c/2);return
a},isSpinnable:function(){if(this.disabled||this.getEl().dom.readOnly){Ext.EventObject.preventDefault();return
false}return
true},handleMouseWheel:function(a){if(this.wrap.hasClass("x-trigger-wrap-focus")==false){return}var
b=a.getWheelDelta();if(b>0){this.onSpinUp();a.stopEvent()}else{if(b<0){this.onSpinDown();a.sto
pEvent()}}},startDrag:function(){this.proxy.show();this._previousY=Ext.fly(this.dd.getDragEl()).getTop()},endDrag:function(){this.proxy.hide()},onDrag:function(){if(this.disabled){return}var
b=Ext.fly(this.dd.getDragEl()).getTop();var
a="";if(this._previousY>b){a="Up"}if(this._previousY<b){a="Down"}if(a!=""){this["onSpin"+a]()}this._previousY=b},onSpinUp:function(){if(this.isSpinnable()==false){return}if(Ext.EventObject.shiftKey==true){this.onSpinUpAlternate();return}else{this.strategy.onSpinUp(this)}this.fireEvent("spin",this);this.fireEvent("spinup",this)},onSpinDown:function(){if(this.isSpinnable()==false){return}if(Ext.EventObject.shiftKey==true){this.onSpinDownAlternate();return}else{this.strategy.onSpinDown(this)}this.fireEvent("spin",this);this.fireEvent("spindown",this)},onSpinUpAlternate:function(){if(this.isSpinnable()==false){return}this.strategy.onSpinUpAlternate(this);this.fireEvent("spin",this);this.fireEvent("spinup",this)},onSpinDownAlternate:function(){if(th
is.isSpinnable()==false){return}this.strategy.onSpinDownAlternate(this);this.fireEvent("spin",this);this.fireEvent("spindown",this)}});Ext.reg("uxspinner",Ext.ux.form.Spinner);Ext.ux.form.Spinner.Strategy=function(a){Ext.apply(this,a)};Ext.extend(Ext.ux.form.Spinner.Strategy,Ext.util.Observable,{defaultValue:0,minValue:undefined,maxValue:undefined,incrementValue:1,alternateIncrementValue:5,validationTask:new
Ext.util.DelayedTask(),onSpinUp:function(a){this.spin(a,false,false)},onSpinDown:function(a){this.spin(a,true,false)},onSpinUpAlternate:function(a){this.spin(a,false,true)},onSpinDownAlternate:function(a){this.spin(a,true,true)},spin:function(a,c,b){this.validationTask.delay(500,function(){a.validate()})},fixBoundries:function(a){return
a}});Ext.ux.form.Spinner.NumberStrategy=function(a){Ext.ux.form.Spinner.NumberStrategy.superclass.constructor.call(this,a)};Ext.extend(Ext.ux.form.Spinner.NumberStrategy,Ext.ux.form.Spinner.Strategy,{allowDecimals:true,decimalPrecision:2,
spin:function(b,e,c){Ext.ux.form.Spinner.NumberStrategy.superclass.spin.call(this,b,e,c);var
a=parseFloat(b.getValue());var
d=(c==true)?this.alternateIncrementValue:this.incrementValue;(e==true)?a-=d:a+=d;a=(isNaN(a))?this.defaultValue:a;a=this.fixBoundries(a);b.setRawValue(a)},fixBoundries:function(b){var
a=b;if(this.minValue!=undefined&&a<this.minValue){a=this.minValue}if(this.maxValue!=undefined&&a>this.maxValue){a=this.maxValue}return
this.fixPrecision(a)},fixPrecision:function(b){var
a=isNaN(b);if(!this.allowDecimals||this.decimalPrecision==-1||a||!b){return
a?"":b}return
parseFloat(parseFloat(b).toFixed(this.decimalPrecision))}});Ext.ux.form.Spinner.DateStrategy=function(a){Ext.ux.form.Spinner.DateStrategy.superclass.constructor.call(this,a)};Ext.extend(Ext.ux.form.Spinner.DateStrategy,Ext.ux.form.Spinner.Strategy,{defaultValue:new
Date(),format:"Y-m-d",incrementValue:1,incrementConstant:Date.DAY,alternateIncrementValue:1,alternateIncrementConstant:Date.MONTH,spin:func
tion(d,g,e){Ext.ux.form.Spinner.DateStrategy.superclass.spin.call(this);var
a=d.getRawValue();a=Date.parseDate(a,this.format);var c=(g==true)?-1:1;var
f=(e==true)?this.alternateIncrementValue:this.incrementValue;var
b=(e==true)?this.alternateIncrementConstant:this.incrementConstant;if(typeof
this.defaultValue=="string"){this.defaultValue=Date.parseDate(this.defaultValue,this.format)}a=(a)?a.add(b,c*f):this.defaultValue;a=this.fixBoundries(a);d.setRawValue(Ext.util.Format.date(a,this.format))},fixBoundries:function(b){var
d=b;var c=(typeof
this.minValue=="string")?Date.parseDate(this.minValue,this.format):this.minValue;var
a=(typeof
this.maxValue=="string")?Date.parseDate(this.maxValue,this.format):this.maxValue;if(this.minValue!=undefined&&d<c){d=c}if(this.maxValue!=undefined&&d>a){d=a}return
d}});Ext.ux.form.Spinner.TimeStrategy=function(a){Ext.ux.form.Spinner.TimeStrategy.superclass.constructor.call(this,a)};Ext.extend(Ext.ux.form.Spinner.TimeStrategy,Ext.ux.form.Spinner.D
ateStrategy,{format:"H:i",incrementValue:1,incrementConstant:Date.MINUTE,alternateIncrementValue:1,alternateIncrementConstant:Date.HOUR});Ext.tree.ColumnTree=Ext.extend(Ext.tree.TreePanel,{lines:false,borderWidth:Ext.isBorderBox?0:2,cls:"x-column-tree",onRender:function(){Ext.tree.ColumnTree.superclass.onRender.apply(this,arguments);this.headers=this.body.createChild({cls:"x-tree-headers"},this.innerCt.dom);var
e=this.columns,f;var b=0;for(var
d=0,a=e.length;d<a;d++){f=e[d];b+=f.width;this.headers.createChild({cls:"x-tree-hd
"+(f.cls?f.cls+"-hd":""),cn:{cls:"x-tree-hd-text",html:f.header},style:"width:"+(f.width-this.borderWidth)+"px;"})}this.headers.createChild({cls:"x-clear"});this.headers.setWidth(b);this.innerCt.setWidth(b)}});Ext.tree.ColumnTreeNode=Ext.extend(Ext.tree.TreeNode,{setColumnValue:function(b,d){var
c=this.getOwnerTree();var
a=this[c.columns[b].dataIndex];this[c.columns[b].dataIndex]=d;this.attributes[[c.columns[b].dataIndex]]=d;if(this.rendered){this.ui.onC
olumnValueChange(this,b,d,a)}this.fireEvent("columnvaluechange",this,b,d,a)}});Ext.tree.ColumnNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{focus:Ext.emptyFn,onColumnValueChange:function(f,b,d,a){if(this.rendered){var
e=f.getOwnerTree().columns[b];this.columnNodes[b].innerHTML=(e.renderer?e.renderer(d,f,null):d)}},renderElements:function(e,q,l,r){this.indentMarkup=e.parentNode?e.parentNode.ui.getChildIndent():"";var
s=e.getOwnerTree();var p=s.columns;var o=s.borderWidth;var m=p[0];var f=typeof
q.checked=="boolean";var b=q.href?q.href:Ext.isGecko?"":"#";var d=['<li
class="x-tree-node"><div ext:tree-node-id="',e.id,'" class="x-tree-node-el
x-tree-node-leaf x-unselectable ',q.cls,'" unselectable="on">','<div
class="x-tree-col" style="width:',m.width-o,'px;">','<span
class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img
src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow">','<img
src="',q.icon||this.emptyIcon,'" class="x-tree-node-icon',(q.icon?"
x-tree-node-inline-ico
n":""),(q.iconCls?" "+q.iconCls:""),'" unselectable="on" />',f?('<input
class="x-tree-node-cb" type="checkbox" '+(q.checked?'checked="checked"
/>':"/>")):"",'<a hidefocus="on" class="x-tree-node-anchor" href="',b,'"
tabIndex="1" ',q.hrefTarget?' target="'+q.hrefTarget+'"':"",">",'<span
unselectable="on">',e.text||(m.renderer?m.renderer(q[m.dataIndex],e,q):q[m.dataIndex]),"</span></a>","</div>"];for(var
g=1,k=p.length;g<k;g++){m=p[g];d.push('<div class="x-tree-col
',(m.cls?m.cls:""),'" style="width:',m.width-o,'px;">','<div
class="x-tree-col-text">',(m.renderer?m.renderer(q[m.dataIndex],e,q):q[m.dataIndex]),"</div>","</div>")}d.push('<div
class="x-clear"></div></div>','<ul class="x-tree-node-ct"
style="display:none;"></ul>',"</li>");if(r!==true&&e.nextSibling&&e.nextSibling.ui.getEl()){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",e.nextSibling.ui.getEl(),d.join(""))}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",l,d.join(""))}this.elNode=this.wrap.childNodes[0];this.
ctNode=this.wrap.childNodes[1];var
j=this.elNode.firstChild.childNodes;this.indentNode=j[0];this.ecNode=j[1];this.iconNode=j[2];var
h=3;if(f){this.checkbox=j[3];this.checkbox.defaultChecked=this.checkbox.checked;h++}this.anchor=j[h];this.columnNodes=[j[h].firstChild];for(var
g=1,k=p.length;g<k;g++){this.columnNodes[g]=this.elNode.childNodes[g].firstChild}}});Ext.form.FileUploadField=Ext.extend(Ext.form.TextField,{buttonText:"Browse...",buttonOnly:false,buttonOffset:3,readOnly:true,autoSize:Ext.emptyFn,initComponent:function(){Ext.form.FileUploadField.superclass.initComponent.call(this);this.addEvents("fileselected")},onRender:function(c,a){Ext.form.FileUploadField.superclass.onRender.call(this,c,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap
x-form-file-wrap"});this.el.addClass("x-form-file-text");this.el.dom.removeAttribute("name");this.fileInput=this.wrap.createChild({id:this.getFileInputId(),name:this.name||this.getId(),cls:"x-form-file",tag:"input",type:"file",size:1}
);var b=Ext.applyIf(this.buttonCfg||{},{text:this.buttonText});this.button=new
Ext.Button(Ext.apply(b,{renderTo:this.wrap}));if(this.buttonOnly){this.el.hide();this.wrap.setWidth(this.button.getEl().getWidth())}this.fileInput.on("change",function(){var
d=this.fileInput.dom.value;this.setValue(d);this.fireEvent("fileselected",this,d)},this)},getFileInputId:function(){return
this.id+"-file"},onResize:function(a,b){Ext.form.FileUploadField.superclass.onResize.call(this,a,b);this.wrap.setWidth(a);if(!this.buttonOnly){var
a=this.wrap.getWidth()-this.button.getEl().getWidth()-this.buttonOffset;this.el.setWidth(a)}},preFocus:Ext.emptyFn,getResizeEl:function(){return
this.wrap},getPositionEl:function(){return
this.wrap},alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])}});Ext.reg("fileuploadfield",Ext.form.FileUploadField);Ext.ux.FullProgressBar=Ext.extend(Ext.ProgressBar,{initComponent:function(){Ext.ux.FullProgressBar.superclass.initComponent.call(this)},up
dateProgress:function(c,d,b){this.value=c||0;if(d){this.updateText(d)}if(this.rendered){var
a=Math.floor(c*this.el.dom.firstChild.offsetWidth/100);this.progressBar.setWidth(a,b===true||(b!==false&&this.animate));if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(a)}}this.fireEvent("update",this,c,d);return
this}});Ext.reg("fullprogressbar",Ext.ux.FullProgressBar);
\ No newline at end of file
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---