Merge pull request #768 from rachel-fenichel/feature/block_factory_helpurl

Update block factory to make setting colour, helpurl, and tooltip easier
This commit is contained in:
Rachel Fenichel
2016-12-08 14:57:19 -08:00
committed by GitHub
3 changed files with 55 additions and 5 deletions

View File

@@ -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');

View File

@@ -65,7 +65,18 @@ BlockFactory.oldDir = null;
* unmovable, undeletable factory_base block.
*/
BlockFactory.STARTER_BLOCK_XML_TEXT = '<xml><block type="factory_base" ' +
'deletable="false" movable="false"></block></xml>';
'deletable="false" movable="false">' +
'<value name="TOOLTIP">' +
'<block type="text" deletable="false" movable="false">' +
'<field name="TEXT"></field></block></value>' +
'<value name="HELPURL">' +
'<block type="text" deletable="false" movable="false">' +
'<field name="TEXT"></field></block></value>' +
'<value name="COLOUR">' +
'<block type="colour_hue">' +
'<mutation colour="#5b67a5"></mutation>' +
'<field name="HUE">230</field>' +
'</block></value></block></xml>';
/**
* Change the language code format.

View File

@@ -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 '';
};