diff --git a/demos/blockfactory/blocks.js b/demos/blockfactory/blocks.js index d4ea11652..6dcd00617 100644 --- a/demos/blockfactory/blocks.js +++ b/demos/blockfactory/blocks.js @@ -52,6 +52,12 @@ Blockly.Blocks['factory_base'] = { }); this.appendDummyInput() .appendField(dropdown, 'CONNECTIONS'); + this.appendValueInput('TOOLTIP') + .setCheck('String') + .appendField('tooltip'); + this.appendValueInput('HELPURL') + .setCheck('String') + .appendField('help url'); this.appendValueInput('COLOUR') .setCheck('Colour') .appendField('colour'); diff --git a/demos/blockfactory/factory.js b/demos/blockfactory/factory.js index 97f5ff946..974cd8a7e 100644 --- a/demos/blockfactory/factory.js +++ b/demos/blockfactory/factory.js @@ -65,7 +65,18 @@ BlockFactory.oldDir = null; * unmovable, undeletable factory_base block. */ BlockFactory.STARTER_BLOCK_XML_TEXT = ''; + 'deletable="false" movable="false">' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '230' + + ''; /** * Change the language code format. diff --git a/demos/blockfactory/factory_utils.js b/demos/blockfactory/factory_utils.js index bdfdeee56..89495d4ce 100644 --- a/demos/blockfactory/factory_utils.js +++ b/demos/blockfactory/factory_utils.js @@ -250,8 +250,10 @@ FactoryUtils.formatJson_ = function(blockType, rootBlock) { var hue = parseInt(colourBlock.getFieldValue('HUE'), 10); JS.colour = hue; } - JS.tooltip = ''; - JS.helpUrl = 'http://www.example.com/'; + + JS.tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock); + JS.helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock); + return JSON.stringify(JS, null, ' '); }; @@ -334,8 +336,11 @@ FactoryUtils.formatJavaScript_ = function(blockType, rootBlock, workspace) { code.push(' this.setColour(' + hue + ');'); } } - code.push(" this.setTooltip('');"); - code.push(" this.setHelpUrl('http://www.example.com/');"); + + var tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock); + var helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock); + code.push(" this.setTooltip('" + tooltip + "');"); + code.push(" this.setHelpUrl('" + helpUrl + "');"); code.push(' }'); code.push('};'); return code.join('\n'); @@ -951,3 +956,31 @@ FactoryUtils.savedBlockChanges = function(blockLibraryController) { } return false; }; + +/** + * Given the root block of the factory, return the tooltip specified by the user + * or the empty string if no tooltip is found. + * @param {!Blockly.Block} rootBlock Factory_base block. + * @return {string} The tooltip for the generated block, or the empty string. + */ +FactoryUtils.getTooltipFromRootBlock_ = function(rootBlock) { + var tooltipBlock = rootBlock.getInputTargetBlock('TOOLTIP'); + if (tooltipBlock && !tooltipBlock.disabled) { + return tooltipBlock.getFieldValue('TEXT'); + } + return ''; +}; + +/** + * Given the root block of the factory, return the help url specified by the + * user or the empty string if no tooltip is found. + * @param {!Blockly.Block} rootBlock Factory_base block. + * @return {string} The help url for the generated block, or the empty string. + */ +FactoryUtils.getHelpUrlFromRootBlock_ = function(rootBlock) { + var helpUrlBlock = rootBlock.getInputTargetBlock('HELPURL'); + if (helpUrlBlock && !helpUrlBlock.disabled) { + return helpUrlBlock.getFieldValue('TEXT'); + } + return ''; +};