rsence 2.0.9.23 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/INSTALL.rdoc +61 -49
- data/README.rdoc +20 -4
- data/VERSION +1 -1
- data/conf/default_conf.yaml +8 -0
- data/conf/rsence_command_strings.yaml +31 -20
- data/docs/ExampleGuiPlugin.rdoc +2 -2
- data/js/comm/comm.js +27 -5
- data/js/comm/transporter/transporter.js +1 -1
- data/js/comm/values/values.js +12 -5
- data/js/controls/button/button.js +12 -2
- data/js/controls/dialogs/alert_sheet/alert_sheet.js +13 -1
- data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +13 -2
- data/js/controls/dialogs/sheet/sheet.js +35 -28
- data/js/controls/imageview/imageview.js +13 -13
- data/js/controls/progress/progressindicator/progressindicator.js +5 -5
- data/js/controls/sliders/slider/slider.js +4 -31
- data/js/controls/stepper/stepper.js +12 -19
- data/js/controls/textcontrol/textcontrol.js +0 -50
- data/js/controls/textcontrol/themes/default/textcontrol.html +1 -1
- data/js/controls/window/window.js +1 -1
- data/js/core/elem/elem.js +146 -160
- data/js/core/rsence_ns/rsence_ns.js +7 -0
- data/js/foundation/control/eventresponder/eventresponder.js +8 -7
- data/js/foundation/eventmanager/eventmanager.js +81 -48
- data/js/foundation/geom/rect/rect.js +1 -1
- data/js/foundation/json_renderer/json_renderer.js +4 -1
- data/js/foundation/system/system.js +37 -34
- data/js/foundation/view/morphanimation/morphanimation.js +53 -43
- data/js/foundation/view/view.js +119 -118
- data/js/lists/listitems/listitems.js +10 -10
- data/js/lists/propertylist/js.inc +0 -0
- data/js/lists/propertylist/propertylist.js +574 -0
- data/js/lists/propertylist/propertylisteditor/js.inc +0 -0
- data/js/lists/propertylist/propertylisteditor/propertylisteditor.js +233 -0
- data/js/lists/radiobuttonlist/radiobuttonlist.js +15 -8
- data/js/menus/minimenu/js.inc +0 -0
- data/js/menus/minimenu/minimenu.js +139 -0
- data/js/menus/minimenu/minimenuitem/js.inc +0 -0
- data/js/menus/minimenu/minimenuitem/minimenuitem.js +33 -0
- data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem.css +45 -0
- data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem.html +4 -0
- data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem_checkmark.png +0 -0
- data/js/menus/minimenu/themes/default/minimenu.css +63 -0
- data/js/menus/minimenu/themes/default/minimenu.html +7 -0
- data/js/menus/minimenu/themes/default/minimenu.png +0 -0
- data/js/util/reloadapp/reloadapp.js +1 -1
- data/lib/conf/argv.rb +40 -11
- data/lib/daemon/daemon.rb +63 -22
- data/lib/plugins/gui_plugin.rb +28 -31
- data/lib/plugins/guiparser.rb +37 -7
- data/lib/plugins/plugin.rb +260 -28
- data/lib/plugins/plugin_base.rb +14 -0
- data/lib/plugins/plugin_plugins.rb +11 -1
- data/lib/plugins/pluginmanager.rb +127 -44
- data/lib/plugins/plugins.rb +10 -1
- data/lib/session/msg.rb +25 -1
- data/lib/session/sessionmanager.rb +11 -2
- data/lib/session/sessionstorage.rb +14 -14
- data/lib/transporter/transporter.rb +29 -13
- data/lib/values/hvalue.rb +30 -0
- data/plugins/client_pkg/info.yaml +2 -2
- data/plugins/{index_html → main}/img/loading.gif +0 -0
- data/plugins/{index_html → main}/img/riassence.gif +0 -0
- data/plugins/main/info.yaml +5 -4
- data/plugins/main/main.rb +180 -24
- data/plugins/{index_html → main}/tmpl/index.html +4 -2
- data/plugins/ticket/info.yaml +2 -2
- data/plugins/ticket/lib/upload.rb +57 -5
- data/plugins/ticket/ticket.rb +10 -4
- data/setup/welcome/info.yaml +2 -2
- data/setup/welcome/text/welcome.html +1 -1
- metadata +22 -11
- data/plugins/index_html/index_html.rb +0 -120
- data/plugins/index_html/info.yaml +0 -18
File without changes
|
@@ -0,0 +1,233 @@
|
|
1
|
+
/* RSence
|
2
|
+
* Copyright 2010 Riassence Inc.
|
3
|
+
* http://riassence.com/
|
4
|
+
*
|
5
|
+
* You should have received a copy of the GNU General Public License along
|
6
|
+
* with this software package. If not, contact licensing@riassence.com
|
7
|
+
*/
|
8
|
+
|
9
|
+
/*** = Description
|
10
|
+
** HPropertyListEditor is a subcomponent of HPropertyList that handles
|
11
|
+
** editing of the selected row.
|
12
|
+
**
|
13
|
+
***/
|
14
|
+
var//RSence.Lists
|
15
|
+
HPropertyListEditor = HControl.extend({
|
16
|
+
|
17
|
+
defaultEvents: {
|
18
|
+
keyDown: 'repeat'
|
19
|
+
},
|
20
|
+
|
21
|
+
keyDown: function(chr){
|
22
|
+
if(chr===38){
|
23
|
+
this.parent.parent.editPrevItem();
|
24
|
+
return true;
|
25
|
+
}
|
26
|
+
else if(chr===40){
|
27
|
+
this.parent.parent.editNextItem();
|
28
|
+
return true;
|
29
|
+
}
|
30
|
+
return false;
|
31
|
+
},
|
32
|
+
|
33
|
+
refreshValue: function(){
|
34
|
+
|
35
|
+
this.base();
|
36
|
+
|
37
|
+
this.nameEditor.setValue(this.value.name);
|
38
|
+
|
39
|
+
this.typeEditor && this.typeEditor.setValue( this.value.type );
|
40
|
+
|
41
|
+
if(this.value.type === 's'){
|
42
|
+
this.stringEditor.show();
|
43
|
+
this.stringEditor.setValue(this.value.value);
|
44
|
+
}
|
45
|
+
else{
|
46
|
+
this.stringEditor.hide();
|
47
|
+
}
|
48
|
+
|
49
|
+
if(this.value.type === 'n'){
|
50
|
+
this.numberEditor.show();
|
51
|
+
this.numberEditor.setValue(this.value.value);
|
52
|
+
}
|
53
|
+
else{
|
54
|
+
this.numberEditor.hide();
|
55
|
+
}
|
56
|
+
|
57
|
+
if(this.value.type === 'b'){
|
58
|
+
this.boolEditor.show();
|
59
|
+
this.boolEditor.setValue(this.value.value);
|
60
|
+
}
|
61
|
+
else{
|
62
|
+
this.boolEditor.hide();
|
63
|
+
}
|
64
|
+
|
65
|
+
this.resizeKeyColumn();
|
66
|
+
},
|
67
|
+
|
68
|
+
lostActiveStatus: function(newActive){
|
69
|
+
this.base();
|
70
|
+
if( newActive &&
|
71
|
+
( (newActive === this) || (newActive.parents.indexOf(this) !== -1) )
|
72
|
+
){
|
73
|
+
return;
|
74
|
+
}
|
75
|
+
this.hide();
|
76
|
+
},
|
77
|
+
|
78
|
+
resizeKeyColumn: function(){
|
79
|
+
|
80
|
+
var
|
81
|
+
parent = this.parent.parent,
|
82
|
+
nameEditor = this.nameEditor;
|
83
|
+
|
84
|
+
nameEditor.rect.setLeft( this.value.left+6 );
|
85
|
+
nameEditor.rect.setRight( parent.keyColumnRight()-3 );
|
86
|
+
nameEditor.refresh();
|
87
|
+
|
88
|
+
var
|
89
|
+
stringEditor = this.stringEditor,
|
90
|
+
numberEditor = this.numberEditor,
|
91
|
+
boolEditor = this.boolEditor;
|
92
|
+
|
93
|
+
stringEditor.rect.setLeft( parent.valueColumnLeft()+5 );
|
94
|
+
numberEditor.rect.setLeft( parent.valueColumnLeft()+4 );
|
95
|
+
boolEditor.rect.setLeft( parent.valueColumnLeft()+4 );
|
96
|
+
|
97
|
+
if(this['typeEditor']){
|
98
|
+
var
|
99
|
+
typeEditor = this.typeEditor;
|
100
|
+
|
101
|
+
typeEditor.rect.setLeft( parent.typeColumnLeft()+2 );
|
102
|
+
typeEditor.rect.setRight( parent.typeColumnRight()-1 );
|
103
|
+
typeEditor.drawRect();
|
104
|
+
}
|
105
|
+
|
106
|
+
stringEditor.drawRect();
|
107
|
+
numberEditor.drawRect();
|
108
|
+
boolEditor.drawRect();
|
109
|
+
},
|
110
|
+
nameEditor: null,
|
111
|
+
typeEditor: null,
|
112
|
+
valueEditor: null,
|
113
|
+
drawSubviews: function(){
|
114
|
+
|
115
|
+
this.setStyle('border-top','1px solid #999');
|
116
|
+
this.setStyle('border-bottom','1px solid #999');
|
117
|
+
|
118
|
+
var
|
119
|
+
_stateElemId = ELEM.make( this.elemId );
|
120
|
+
this.markupElemIds = { state: _stateElemId };
|
121
|
+
ELEM.setCSS( _stateElemId, 'position:absolute;left:0;top:0;right:0;bottom:0;background-color:#fff;' );
|
122
|
+
ELEM.setStyle( _stateElemId, 'opacity', 0.8 );
|
123
|
+
|
124
|
+
var
|
125
|
+
parent = this.parent.parent,
|
126
|
+
opts = parent.options;
|
127
|
+
this.nameEditor = HTextControl.extend({
|
128
|
+
boldTypes: ['a','h'],
|
129
|
+
lostActiveStatus: function(newActive){
|
130
|
+
this.base();
|
131
|
+
this.parent.lostActiveStatus(newActive);
|
132
|
+
},
|
133
|
+
refreshValue: function(){
|
134
|
+
if(this.drawn){
|
135
|
+
if(this.boldTypes.indexOf(this.parent.value.type)!==-1){
|
136
|
+
this.setStyle('font-weight','bold',true);
|
137
|
+
}
|
138
|
+
else{
|
139
|
+
this.setStyle('font-weight','normal',true);
|
140
|
+
}
|
141
|
+
}
|
142
|
+
this.base();
|
143
|
+
}
|
144
|
+
}).nu(
|
145
|
+
[0,-1,1,opts.rowHeight+4],
|
146
|
+
this, {
|
147
|
+
style: [
|
148
|
+
[ 'font-size', '11px' ],
|
149
|
+
[ 'text-indent', '1px' ]
|
150
|
+
]
|
151
|
+
}
|
152
|
+
);
|
153
|
+
|
154
|
+
var
|
155
|
+
height = this.nameEditor.rect.height;
|
156
|
+
if(!opts.hideTypeColumn){
|
157
|
+
this.typeEditor = HMiniMenu.extend({
|
158
|
+
lostActiveStatus: function(newActive){
|
159
|
+
this.parent.lostActiveStatus(newActive);
|
160
|
+
this.base();
|
161
|
+
}
|
162
|
+
}).nu(
|
163
|
+
[0,1,1,height],
|
164
|
+
this, {
|
165
|
+
value: 'a',
|
166
|
+
menuItemGeom: {
|
167
|
+
width: 75,
|
168
|
+
left: -15
|
169
|
+
}
|
170
|
+
}
|
171
|
+
);
|
172
|
+
|
173
|
+
var _arrTypes = [];
|
174
|
+
|
175
|
+
for( var i in parent.typeNames ){
|
176
|
+
_arrTypes.push( [i, parent.typeNames[i]] );
|
177
|
+
}
|
178
|
+
|
179
|
+
this.typeEditor.setListItems( _arrTypes );
|
180
|
+
|
181
|
+
}
|
182
|
+
|
183
|
+
this.stringEditor = HTextArea.extend({
|
184
|
+
lostActiveStatus: function(newActive){
|
185
|
+
this.parent.lostActiveStatus(newActive);
|
186
|
+
this.base();
|
187
|
+
}
|
188
|
+
}).nu(
|
189
|
+
[0,-1,null,height,4,null],
|
190
|
+
this, {
|
191
|
+
style: [
|
192
|
+
[ 'font-size', '11px' ],
|
193
|
+
[ 'text-indent', '1px' ],
|
194
|
+
[ 'padding-top', '3px' ]
|
195
|
+
]
|
196
|
+
}
|
197
|
+
);
|
198
|
+
|
199
|
+
this.numberEditor = HNumericTextControl.extend({
|
200
|
+
lostActiveStatus: function(newActive){
|
201
|
+
this.parent.lostActiveStatus(newActive);
|
202
|
+
this.base();
|
203
|
+
}
|
204
|
+
}).nu(
|
205
|
+
[0,-1,null,height,4,null],
|
206
|
+
this, {
|
207
|
+
style: [
|
208
|
+
[ 'font-size', '11px' ],
|
209
|
+
[ 'text-indent', '1px' ]
|
210
|
+
]
|
211
|
+
}
|
212
|
+
);
|
213
|
+
|
214
|
+
this.boolEditor = HCheckbox.extend({
|
215
|
+
lostActiveStatus: function(newActive){
|
216
|
+
this.parent.lostActiveStatus(newActive);
|
217
|
+
this.base();
|
218
|
+
}
|
219
|
+
}).nu(
|
220
|
+
[0,-3,null,24,4,null],
|
221
|
+
this, {
|
222
|
+
style: [
|
223
|
+
[ 'font-size', '11px' ],
|
224
|
+
[ 'text-indent', '1px' ]
|
225
|
+
],
|
226
|
+
label: "Enabled"
|
227
|
+
}
|
228
|
+
);
|
229
|
+
|
230
|
+
this.resizeKeyColumn();
|
231
|
+
|
232
|
+
}
|
233
|
+
});
|
@@ -51,17 +51,21 @@ HRadioButtonList = HControl.extend({
|
|
51
51
|
_listItem = _listItems[i];
|
52
52
|
_value = _listItem[0];
|
53
53
|
_label = _listItem[1];
|
54
|
-
|
55
|
-
|
56
|
-
this, {
|
57
|
-
label: _label
|
58
|
-
}
|
59
|
-
);
|
60
|
-
this.listItemViews[i] = _radioButton;
|
54
|
+
_component = this.createComponent( i, _label );
|
55
|
+
this.listItemViews[i] = _component;
|
61
56
|
}
|
62
57
|
this.refreshValue();
|
63
58
|
},
|
64
59
|
|
60
|
+
createComponent: function( i, _label ){
|
61
|
+
return HRadiobutton.nu(
|
62
|
+
[ 4, (i*23)+4, null, 23, 4, null ],
|
63
|
+
this, {
|
64
|
+
label: _label
|
65
|
+
}
|
66
|
+
);
|
67
|
+
},
|
68
|
+
|
65
69
|
/** = Description
|
66
70
|
* Destructor. Sets listItems and listItemViews to null and initiates
|
67
71
|
* destructor for radioButtonIndexValue.
|
@@ -70,7 +74,7 @@ HRadioButtonList = HControl.extend({
|
|
70
74
|
die: function(){
|
71
75
|
this.listItems = null;
|
72
76
|
this.listItemViews = null;
|
73
|
-
this.radioButtonIndexValue.die();
|
77
|
+
this.radioButtonIndexValue && this.radioButtonIndexValue.die();
|
74
78
|
this.base();
|
75
79
|
},
|
76
80
|
radioButtonIndexValue: false,
|
@@ -91,6 +95,9 @@ HRadioButtonList = HControl.extend({
|
|
91
95
|
}
|
92
96
|
}
|
93
97
|
}),
|
98
|
+
|
99
|
+
|
100
|
+
|
94
101
|
refreshValue: function(){
|
95
102
|
var _value = this.value;
|
96
103
|
if ( this.listItems.length !== 0 && this['valueMatrix'] !== undefined ) {
|
File without changes
|
@@ -0,0 +1,139 @@
|
|
1
|
+
/* RSence
|
2
|
+
* Copyright 2010 Riassence Inc.
|
3
|
+
* http://riassence.com/
|
4
|
+
*
|
5
|
+
* You should have received a copy of the GNU General Public License along
|
6
|
+
* with this software package. If not, contact licensing@riassence.com
|
7
|
+
*/
|
8
|
+
|
9
|
+
|
10
|
+
/*** = Description
|
11
|
+
** Simple small menu component for selecting one value amongst several.
|
12
|
+
** It's limited to 15px height by the default theme.
|
13
|
+
***/
|
14
|
+
var//RSence.Menus
|
15
|
+
HMiniMenu = HRadioButtonList.extend({
|
16
|
+
|
17
|
+
componentName: 'minimenu',
|
18
|
+
|
19
|
+
defaultEvents: {
|
20
|
+
draggable: true,
|
21
|
+
click: true
|
22
|
+
},
|
23
|
+
|
24
|
+
repositionMenuItems: function(){
|
25
|
+
var
|
26
|
+
x = this.pageX(),
|
27
|
+
y = this.pageY(),
|
28
|
+
w = this.rect.width,
|
29
|
+
h = this.listItems.length*15,
|
30
|
+
i = 0,
|
31
|
+
listItem = null;
|
32
|
+
for(;i<this.listItems.length && listItem === null;i++){
|
33
|
+
if(this.listItems[i][0]===this.value){
|
34
|
+
listItem = this.listItems[i];
|
35
|
+
}
|
36
|
+
}
|
37
|
+
y -= (i-1)*15;
|
38
|
+
if(y < 0){
|
39
|
+
y = y%15;
|
40
|
+
}
|
41
|
+
if(this.options['menuItemGeom']){
|
42
|
+
if(this.options.menuItemGeom.width){
|
43
|
+
w += this.options.menuItemGeom.width;
|
44
|
+
}
|
45
|
+
if(this.options.menuItemGeom.width){
|
46
|
+
x += this.options.menuItemGeom.left;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
this.menuItemView.rect.set( x, y, x+w, y+h );
|
50
|
+
this.menuItemView.refresh();
|
51
|
+
},
|
52
|
+
|
53
|
+
click: function(){
|
54
|
+
this.menuShow();
|
55
|
+
},
|
56
|
+
|
57
|
+
refreshValue: function(){
|
58
|
+
this.base();
|
59
|
+
for(var i=0;i<this.listItems.length;i++){
|
60
|
+
if(this.listItems[i][0]===this.value){
|
61
|
+
this.setLabel( this.listItems[i][1] );
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
},
|
66
|
+
|
67
|
+
menuShow: function(){
|
68
|
+
this.repositionMenuItems();
|
69
|
+
this.menuItemView.bringToFront();
|
70
|
+
this.menuItemView.show();
|
71
|
+
return true;
|
72
|
+
},
|
73
|
+
|
74
|
+
menuHide: function(){
|
75
|
+
this.menuItemView.sendToBack();
|
76
|
+
this.menuItemView.hide();
|
77
|
+
},
|
78
|
+
|
79
|
+
startDrag: function(x,y){
|
80
|
+
this.dragStart = [x,y];
|
81
|
+
this.menuShow();
|
82
|
+
},
|
83
|
+
|
84
|
+
lostActiveStatus: function(newActive){
|
85
|
+
this.menuHide();
|
86
|
+
},
|
87
|
+
|
88
|
+
endDrag: function(x,y){
|
89
|
+
if( (Math.round(this.dragStart[0]*0.2)===Math.round(x*0.2)) &&
|
90
|
+
(Math.round(this.dragStart[1]*0.2)===Math.round(y*0.2))
|
91
|
+
){
|
92
|
+
this.menuShow();
|
93
|
+
}
|
94
|
+
else {
|
95
|
+
this.menuHide();
|
96
|
+
}
|
97
|
+
},
|
98
|
+
|
99
|
+
die: function(){
|
100
|
+
this.menuItemView.die();
|
101
|
+
this.base();
|
102
|
+
},
|
103
|
+
|
104
|
+
drawSubviews: function(){
|
105
|
+
this.markupElemIds.subview = 0;
|
106
|
+
this.menuItemView = HView.extend({
|
107
|
+
bringToFront: function(){
|
108
|
+
this.setStyle('z-index',10000);//this.app.views.length);
|
109
|
+
}
|
110
|
+
}).nu(
|
111
|
+
[ this.rect.left, this.rect.top, this.rect.width, 500 ],
|
112
|
+
this, {
|
113
|
+
visible: false,
|
114
|
+
style: [
|
115
|
+
['background-color','#f6f6f6'],
|
116
|
+
['border', '1px solid #999'],
|
117
|
+
['overflow-y', 'auto'],
|
118
|
+
['opacity', 0.9]
|
119
|
+
]
|
120
|
+
}
|
121
|
+
);
|
122
|
+
},
|
123
|
+
|
124
|
+
setListItems: function(listItems){
|
125
|
+
this.base(listItems);
|
126
|
+
this.valueMatrix = this.menuItemView.valueMatrix;
|
127
|
+
this.refreshValue();
|
128
|
+
},
|
129
|
+
|
130
|
+
createComponent: function( i, _label ){
|
131
|
+
return HMiniMenuItem.nu(
|
132
|
+
[ 0, (i*15), null, 15, 0, null ],
|
133
|
+
this.menuItemView, {
|
134
|
+
label: _label
|
135
|
+
}
|
136
|
+
);
|
137
|
+
}
|
138
|
+
|
139
|
+
});
|
File without changes
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/* RSence
|
2
|
+
* Copyright 2010 Riassence Inc.
|
3
|
+
* http://riassence.com/
|
4
|
+
*
|
5
|
+
* You should have received a copy of the GNU General Public License along
|
6
|
+
* with this software package. If not, contact licensing@riassence.com
|
7
|
+
*/
|
8
|
+
|
9
|
+
|
10
|
+
/*** = Description
|
11
|
+
** Menu item for the HMiniMenu component.
|
12
|
+
***/
|
13
|
+
var//RSence.Menus
|
14
|
+
HMiniMenuItem = HRadioButton.extend({
|
15
|
+
|
16
|
+
componentName: 'minimenuitem',
|
17
|
+
|
18
|
+
defaultEvents: {
|
19
|
+
click: true,
|
20
|
+
mouseUp: true
|
21
|
+
},
|
22
|
+
|
23
|
+
click: function(){
|
24
|
+
this.base();
|
25
|
+
EVENT.changeActiveControl(this.parent.parent);
|
26
|
+
},
|
27
|
+
|
28
|
+
mouseUp: function(){
|
29
|
+
this.base();
|
30
|
+
this.click();
|
31
|
+
}
|
32
|
+
|
33
|
+
});
|