diff --git a/rocon_composer_blockly/public/bundle.js b/rocon_composer_blockly/public/bundle.js index 1f607f3..a57ca62 100644 --- a/rocon_composer_blockly/public/bundle.js +++ b/rocon_composer_blockly/public/bundle.js @@ -2109,6 +2109,25 @@ Blockly.Blocks['ui_text'] = { }; +Blockly.Blocks['ui_set_attr'] = { + + init: function() { + this.setColour(30); + this.appendDummyInput().appendField('Set Attribute' + name); + + this.appendDummyInput().appendField('name:') + .appendField(new Blockly.FieldTextInput('name', null), 'NAME'); + + this.appendValueInput('ATTR').appendField('attr:'); + this.appendValueInput('VALUE').appendField('value:'); + this.setInputsInline(true); + this.setPreviousStatement(true); + return this.setNextStatement(true); + + + }, + +}; Blockly.Blocks['ui_button'] = { init: function() { @@ -2127,6 +2146,22 @@ Blockly.Blocks['ui_button'] = { }, }; +Blockly.JavaScript['ui_set_attr'] = function(block){ + var attr = Blockly.JavaScript.valueToCode(block, 'ATTR', Blockly.JavaScript.ORDER_NONE) || "''"; + var value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_NONE) || "''"; + var name = block.getFieldValue('NAME'); + + + var data = { + rocon_id: name, + attr: eval(attr), + value: eval(value) + }; + var code = _.template('$engine.publish("to-rocon-ui", "std_msgs/String", {data: <%= data %>});')({ + data: "'" + JSON.stringify(data) + "'" + }); + return code; +}; Blockly.JavaScript['ui_button'] = function(block){ var text = Blockly.JavaScript.valueToCode(block, 'TEXT', Blockly.JavaScript.ORDER_NONE) || "''"; var name = block.getFieldValue('NAME'); diff --git a/rocon_composer_blockly/public/js/blocks/ui.js b/rocon_composer_blockly/public/js/blocks/ui.js index 156edc1..c7ba81a 100644 --- a/rocon_composer_blockly/public/js/blocks/ui.js +++ b/rocon_composer_blockly/public/js/blocks/ui.js @@ -66,6 +66,25 @@ Blockly.Blocks['ui_text'] = { }; +Blockly.Blocks['ui_set_attr'] = { + + init: function() { + this.setColour(30); + this.appendDummyInput().appendField('Set Attribute' + name); + + this.appendDummyInput().appendField('name:') + .appendField(new Blockly.FieldTextInput('name', null), 'NAME'); + + this.appendValueInput('ATTR').appendField('attr:'); + this.appendValueInput('VALUE').appendField('value:'); + this.setInputsInline(true); + this.setPreviousStatement(true); + return this.setNextStatement(true); + + + }, + +}; Blockly.Blocks['ui_button'] = { init: function() { @@ -84,6 +103,22 @@ Blockly.Blocks['ui_button'] = { }, }; +Blockly.JavaScript['ui_set_attr'] = function(block){ + var attr = Blockly.JavaScript.valueToCode(block, 'ATTR', Blockly.JavaScript.ORDER_NONE) || "''"; + var value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_NONE) || "''"; + var name = block.getFieldValue('NAME'); + + + var data = { + rocon_id: name, + attr: eval(attr), + value: eval(value) + }; + var code = _.template('$engine.publish("to-rocon-ui", "std_msgs/String", {data: <%= data %>});')({ + data: "'" + JSON.stringify(data) + "'" + }); + return code; +}; Blockly.JavaScript['ui_button'] = function(block){ var text = Blockly.JavaScript.valueToCode(block, 'TEXT', Blockly.JavaScript.ORDER_NONE) || "''"; var name = block.getFieldValue('NAME'); diff --git a/rocon_composer_blockly/public/js/tpl/blockly.html b/rocon_composer_blockly/public/js/tpl/blockly.html index bf98f79..dd3c172 100644 --- a/rocon_composer_blockly/public/js/tpl/blockly.html +++ b/rocon_composer_blockly/public/js/tpl/blockly.html @@ -362,6 +362,10 @@

List

+ + + +