diff --git a/src/components/Blockly/blocks/procedures.js b/src/components/Blockly/blocks/procedures.js
index 237e4da..c334f8f 100644
--- a/src/components/Blockly/blocks/procedures.js
+++ b/src/components/Blockly/blocks/procedures.js
@@ -48,7 +48,7 @@ Blockly.Blocks['procedures_defnoreturn'] = {
const nameField = new Blockly.FieldTextInput('', Blockly.Procedures.rename);
nameField.setSpellcheck(false);
this.appendDummyInput()
- .appendField('Create block')
+ .appendField(Blockly.Msg.PROCEDURES_DEFNORETURN)
.appendField(nameField, 'NAME')
.appendField('', 'PARAMS');
this.setMutator(new Blockly.Mutator(['procedures_mutatorarg']));
@@ -127,7 +127,6 @@ Blockly.Blocks['procedures_defnoreturn'] = {
paramString =
Blockly.Msg['PROCEDURES_BEFORE_PARAMS'] + paramStringArgs.join(', ');
}
- console.log(paramString);
// The params field is deterministic based on the mutation,
// no need to fire a change event.
Blockly.Events.disable();
@@ -454,24 +453,17 @@ Blockly.Blocks['procedures_defreturn'] = {
*/
init: function () {
const returnTypeField = new Blockly.FieldDropdown(
- [
- ['Number', 'Number'],
- ['String', 'String'],
- ['Boolean', 'Boolean'],
- ['List Number', 'List Number'],
- ['List String', 'List String'],
- ['List Boolean', 'List Boolean']
- ],
+ [['NUMBER', 'int'], ['DECIMAL', 'float'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean']],
this.updateReturnType.bind(this)
);
const nameField = new Blockly.FieldTextInput('', Blockly.Procedures.rename);
nameField.setSpellcheck(false);
this.appendDummyInput()
- .appendField('Create block')
+ .appendField(Blockly.Msg.PROCEDURES_DEFNORETURN)
.appendField(nameField, 'NAME')
.appendField('', 'PARAMS')
- .appendField('that returns: ')
+ .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN_TYPE)
.appendField(returnTypeField, 'RETURN TYPE');
this.appendValueInput('RETURN')
@@ -590,16 +582,17 @@ Blockly.Blocks['procedures_mutatorcontainer'] = {
}
};
-let parameterCounter = 1;
+
Blockly.Blocks['procedures_mutatorarg'] = {
+
/**
* Mutator block for procedure argument.
* @this Blockly.Block
*/
init: function () {
- const paramName = 'param' + parameterCounter.toString();
-
+ // let parameterCounter = 1;
+ const paramName = 'x';//'param' + parameterCounter.toString();
// This is for dialog box that get's opened
// It has a flyout menu with the default variable
// This will set the name of that default variable
@@ -610,14 +603,7 @@ Blockly.Blocks['procedures_mutatorarg'] = {
}
const typeField = new Blockly.FieldDropdown(
- [
- ['Number', 'Number'],
- ['String', 'String'],
- ['Boolean', 'Boolean'],
- ['List Number', 'List Number'],
- ['List String', 'List String'],
- ['List Boolean', 'List Boolean']
- ],
+ [['NUMBER', 'int'], ['DECIMAL', 'float'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean']],
this.validatorType_.bind(this)
);
const nameField = new Blockly.FieldTextInput(
@@ -651,7 +637,8 @@ Blockly.Blocks['procedures_mutatorarg'] = {
// though the editor was never opened.
this.createdVariables_ = [];
nameField.onFinishEditing_(paramName);
- parameterCounter += 1;
+
+ // parameterCounter = 1;
},
/**
* Obtain a valid name for the procedure argument. Create a variable if
@@ -725,6 +712,18 @@ Blockly.Blocks['procedures_mutatorarg'] = {
this.createdVariables_.push(model);
}
}
+
+
+
+
+ // for (let i = 0; i < this.createdVariables_.length; i++) {
+ // const model = this.createdVariables_[i];
+ // if (model.name !== varName || model.type !== varType) {
+ // // DELETE CRITERIA NEEDS TO CHANGE
+
+ // }
+ // }
+
},
/**
@@ -736,11 +735,11 @@ Blockly.Blocks['procedures_mutatorarg'] = {
deleteIntermediateVars_: function (varName, varType) {
varName = varName || this.getFieldValue('NAME');
varType = varType || this.getFieldValue('TYPE');
-
const outerWs = Blockly.mainWorkspace;
if (!outerWs) {
return;
}
+
for (let i = 0; i < this.createdVariables_.length; i++) {
const model = this.createdVariables_[i];
if (model.name !== varName || model.type !== varType) {
@@ -757,7 +756,10 @@ Blockly.Blocks['procedures_callnoreturn'] = {
* @this Blockly.Block
*/
init: function () {
- this.appendDummyInput('TOPROW').appendField(this.id, 'NAME');
+ this.appendDummyInput('TOPROW')
+ .appendField(Blockly.Msg.PROCEDURES_CALL)
+ .appendField(this.id, 'NAME')
+ .appendField(Blockly.Msg.PROCEDURES_CALL_END);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(getColour().procedures);
@@ -939,7 +941,7 @@ Blockly.Blocks['procedures_callnoreturn'] = {
Blockly.Events.disable();
try {
field.setValue(labelString);
- this.getInput('ARG' + i).setCheck([this.argumentVarModels_[i].type]);
+ this.getInput('ARG' + i).setCheck(Types.getCompatibleTypes([this.argumentVarModels_[i].type]));
} finally {
Blockly.Events.enable();
}
@@ -949,7 +951,7 @@ Blockly.Blocks['procedures_callnoreturn'] = {
const input = this.appendValueInput('ARG' + i)
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(field, 'ARGNAME' + i)
- .setCheck([this.argumentVarModels_[i].type]); // TESTING CHECK TYPES GOES HERE
+ .setCheck(Types.getCompatibleTypes([this.argumentVarModels_[i].type])); // TESTING CHECK TYPES GOES HERE
input.init();
}
}
@@ -1012,6 +1014,7 @@ Blockly.Blocks['procedures_callnoreturn'] = {
for (let i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) {
if (childNode.nodeName.toLowerCase() === 'arg') {
var variables = Blockly.mainWorkspace.getAllVariables();
+
var varName = childNode.getAttribute('name');
for (let y = 0; variables.length; y++) {
if (variables[y].name === varName) {
diff --git a/src/components/Blockly/generator/procedures.js b/src/components/Blockly/generator/procedures.js
index 963594f..a695a0a 100644
--- a/src/components/Blockly/generator/procedures.js
+++ b/src/components/Blockly/generator/procedures.js
@@ -68,15 +68,19 @@ Blockly.Arduino['procedures_defreturn'] = function (block: Block | any) {
};
function translateType(type) {
+ console.log(type);
switch (type) {
- case 'Number':
- return 'double';
+
+ case 'int':
+ return 'int';
case 'String':
return 'String';
- case 'Boolean':
- return 'boolean';
case 'void':
return 'void';
+ case 'boolean':
+ return 'boolean';
+ case 'float':
+ return 'float'
default:
throw new Error('Invalid Parameter Type');
}
diff --git a/src/components/Blockly/helpers/types.js b/src/components/Blockly/helpers/types.js
index 407f31a..7a663d5 100644
--- a/src/components/Blockly/helpers/types.js
+++ b/src/components/Blockly/helpers/types.js
@@ -95,7 +95,8 @@ const compatibleTypes = {
void: ['void'],
long: ['int', 'long'],
double: ['int', 'long', 'double'],
- float: ['int', 'long', 'double', 'float']
+ float: ['int', 'long', 'double', 'float'],
+ null: ['null']
}
diff --git a/src/components/Blockly/msg/de.js b/src/components/Blockly/msg/de.js
index 3012065..bba098d 100644
--- a/src/components/Blockly/msg/de.js
+++ b/src/components/Blockly/msg/de.js
@@ -272,6 +272,11 @@ Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://de.wikipedia.org/wiki/Pro
Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Rufe einen Funktionsblock ohne Rückgabewert auf.";
Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29";
Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Rufe einen Funktionsblock mit Rückgabewert auf.";
+Blockly.Msg.PROCEDURES_CALL = "Rufe";
+Blockly.Msg.PROCEDURES_CALL_END = "auf";
+Blockly.Msg.PROCEDURES_DEFNORETURN = "Erstelle Funktion";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "mit Eingabeparameter:";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN_TYPE = "Rückgabetype";
Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "mit:";
Blockly.Msg.PROCEDURES_CREATE_DO = "Erzeuge \"Aufruf %1\"";
Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Beschreibe diese Funktion …";
diff --git a/src/components/Blockly/msg/en.js b/src/components/Blockly/msg/en.js
index 82cc519..cc35bc9 100644
--- a/src/components/Blockly/msg/en.js
+++ b/src/components/Blockly/msg/en.js
@@ -267,20 +267,24 @@ Blockly.Msg.NEW_VARIABLE = "New variable...";
Blockly.Msg.NEW_VARIABLE_TITLE = "New variable name:";
Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "";
Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "allow statements";
-Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "with:";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "with inputs:";
Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function '%1'.";
Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Run the user-defined function '%1' and use its output.";
-Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "with:";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "with Inputs:";
+Blockly.Msg.PROCEDURES_CALL = "Call";
+Blockly.Msg.PROCEDURES_CALL_END = '';
Blockly.Msg.PROCEDURES_CREATE_DO = "Create '%1'";
Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Describe this function...";
+Blockly.Msg.PROCEDURES_DEFNORETURN = "Create Function";
Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "";
Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "do something";
Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "to";
Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Creates a function with no output.";
Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN_TYPE = "return Type";
Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "return";
Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "Creates a function with an output.";
Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "Warning: This function has duplicate parameters.";
diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js
index 286715d..f09b931 100644
--- a/src/components/Blockly/toolbox/Toolbox.js
+++ b/src/components/Blockly/toolbox/Toolbox.js
@@ -379,7 +379,7 @@ class Toolbox extends React.Component {
-
+