summaryrefslogtreecommitdiff
path: root/src/blockly/blocks/variables.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/blockly/blocks/variables.js')
-rw-r--r--src/blockly/blocks/variables.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/blockly/blocks/variables.js b/src/blockly/blocks/variables.js
new file mode 100644
index 0000000..3b7d99f
--- /dev/null
+++ b/src/blockly/blocks/variables.js
@@ -0,0 +1,100 @@
+/**
+ * @license
+ * Visual Blocks Editor
+ *
+ * Copyright 2012 Google Inc.
+ * https://developers.google.com/blockly/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview Variable blocks for Blockly.
+ * @author fraser@google.com (Neil Fraser)
+ */
+'use strict';
+
+goog.provide('Blockly.Blocks.variables');
+
+goog.require('Blockly.Blocks');
+
+
+/**
+ * Common HSV hue for all blocks in this category.
+ */
+Blockly.Blocks.variables.HUE = 330;
+
+Blockly.Blocks['variables_get'] = {
+ /**
+ * Block for variable getter.
+ * @this Blockly.Block
+ */
+ init: function() {
+ this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL);
+ this.setColour(Blockly.Blocks.variables.HUE);
+ this.appendDummyInput()
+ .appendField(new Blockly.FieldVariable(
+ Blockly.Msg.VARIABLES_DEFAULT_NAME), 'VAR');
+ this.setOutput(true);
+ this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP);
+ this.contextMenuMsg_ = Blockly.Msg.VARIABLES_GET_CREATE_SET;
+ },
+ contextMenuType_: 'variables_set',
+ /**
+ * Add menu option to create getter/setter block for this setter/getter.
+ * @param {!Array} options List of menu options to add to.
+ * @this Blockly.Block
+ */
+ customContextMenu: function(options) {
+ var option = {enabled: true};
+ var name = this.getFieldValue('VAR');
+ option.text = this.contextMenuMsg_.replace('%1', name);
+ var xmlField = goog.dom.createDom('field', null, name);
+ xmlField.setAttribute('name', 'VAR');
+ var xmlBlock = goog.dom.createDom('block', null, xmlField);
+ xmlBlock.setAttribute('type', this.contextMenuType_);
+ option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock);
+ options.push(option);
+ }
+};
+
+Blockly.Blocks['variables_set'] = {
+ /**
+ * Block for variable setter.
+ * @this Blockly.Block
+ */
+ init: function() {
+ this.jsonInit({
+ "message0": Blockly.Msg.VARIABLES_SET,
+ "args0": [
+ {
+ "type": "field_variable",
+ "name": "VAR",
+ "variable": Blockly.Msg.VARIABLES_DEFAULT_NAME
+ },
+ {
+ "type": "input_value",
+ "name": "VALUE"
+ }
+ ],
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": Blockly.Blocks.variables.HUE,
+ "tooltip": Blockly.Msg.VARIABLES_SET_TOOLTIP,
+ "helpUrl": Blockly.Msg.VARIABLES_SET_HELPURL
+ });
+ this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET;
+ },
+ contextMenuType_: 'variables_get',
+ customContextMenu: Blockly.Blocks['variables_get'].customContextMenu
+};