Update(boards): 将arduino下函数和变量相关图形块定义移动到arduino目录下

This commit is contained in:
王立帮
2025-03-11 02:02:06 +08:00
parent 93c02a23b2
commit 2e18757834
10 changed files with 88 additions and 39 deletions

View File

@@ -498,7 +498,7 @@ export const procedures_defreturn = {
this.appendValueInput('RETURN')
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg['PROCEDURES_DEFRETURN_RETURN'])
.appendField(new Blockly.FieldDropdown(Variables.DATA_TYPE), "TYPE");
.appendField(new Blockly.FieldDropdown(Procedures.DATA_TYPE, this.adjustReturnInput.bind(this)), "TYPE");
this.setMutator(new Blockly.icons.MutatorIcon(['procedures_mutatorarg'], this));
if ((this.workspace.options.comments ||
(this.workspace.options.parentWorkspace &&
@@ -513,11 +513,45 @@ export const procedures_defreturn = {
this.argumentVarModels_ = [];
this.setStatements_(true);
this.statementConnection_ = null;
this.returnType = 'void';
},
adjustReturnInput: function (value) {
const fieldName = 'RETRUN_TYPE';
if (value === 'CUSTOM') {
if (!this.getField(fieldName)) {
this.getInput('RETURN').appendField(
new Blockly.FieldTextInput(this.returnType ?? ''),
fieldName,
);
}
} else {
if (this.getField('RETRUN_TYPE')) {
this.returnType = this.getFieldValue('RETRUN_TYPE') || 'void';
}
this.getInput('RETURN').removeField(fieldName, true);
}
},
setStatements_: procedures_defnoreturn.setStatements_,
updateParams_: procedures_defnoreturn.updateParams_,
mutationToDom: procedures_defnoreturn.mutationToDom,
domToMutation: procedures_defnoreturn.domToMutation,
saveExtraState: function () {
const output = procedures_defnoreturn.saveExtraState.call(this) ?? {};
if (this.getField('RETRUN_TYPE')) {
output['returnType'] = this.getFieldValue('RETRUN_TYPE');
}
return output;
},
loadExtraState: function (state) {
this.returnType = state?.returnType;
if (!this.getField('RETRUN_TYPE')) {
this.getInput('RETURN').appendField(
new Blockly.FieldTextInput(this.returnType ?? ''),
'RETRUN_TYPE',
);
}
procedures_defnoreturn.loadExtraState.call(this, state);
},
decompose: procedures_defnoreturn.decompose,
compose: procedures_defnoreturn.compose,
/**
@@ -1096,6 +1130,8 @@ export const procedures_callreturn = {
updateShape_: procedures_callnoreturn.updateShape_,
mutationToDom: procedures_callnoreturn.mutationToDom,
domToMutation: procedures_callnoreturn.domToMutation,
saveExtraState: procedures_callnoreturn.saveExtraState,
loadExtraState: procedures_callnoreturn.loadExtraState,
renameVar: procedures_callnoreturn.renameVar,
getVars: procedures_callnoreturn.getVars,
getVarModels: procedures_callnoreturn.getVarModels,

View File

@@ -1,7 +1,11 @@
import * as ArduinoEthernetBlocks from './blocks/ethernet';
import * as ArduinoProceduresBlocks from './blocks/procedures';
import * as ArduinoTextBlocks from './blocks/text';
import * as ArduinoVariablesBlocks from './blocks/variables';
import * as ArduinoProceduresGenerators from './generators/procedures';
import * as ArduinoEthernetGenerators from './generators/ethernet';
import * as ArduinoTextGenerators from './generators/text';
import * as ArduinoVariablesGenerators from './generators/variables';
import Names from './others/names';
import Procedures from './others/procedures';
import Variables from './others/variables';
@@ -9,9 +13,13 @@ import { ArduinoGenerator, Arduino } from './arduino_generator';
export {
ArduinoEthernetBlocks,
ArduinoProceduresBlocks,
ArduinoTextBlocks,
ArduinoVariablesBlocks,
ArduinoEthernetGenerators,
ArduinoProceduresGenerators,
ArduinoTextGenerators,
ArduinoVariablesGenerators,
Names,
Procedures,
Variables,

View File

@@ -12,6 +12,13 @@ export const procedures_defreturn = function (_, generator) {
var returnValue = generator.valueToCode(this, 'RETURN',
generator.ORDER_NONE) || '';
var type = this.getFieldValue('TYPE');
if (type === 'CUSTOM') {
if (this.getField('RETRUN_TYPE')) {
type = this.getFieldValue('RETRUN_TYPE');
} else {
type = 'void';
}
}
if (returnValue) {
returnValue = ' return ' + returnValue + ';\n';
}

View File

@@ -25,9 +25,15 @@
* @namespace
*/
import * as Blockly from 'blockly/core';
import Variables from './variables';
const Procedures = {};
Procedures.DATA_TYPE = [
...Variables.DATA_TYPE,
[Blockly.Msg.MIXLY_OTHER, 'CUSTOM']
];
/**
* Constant to separate procedure names from variables and generated functions
* when running generators.

View File

@@ -13,14 +13,12 @@ import * as ArduinoAVRLogicBlocks from './blocks/logic';
import * as ArduinoAVRMathBlocks from './blocks/math';
import * as ArduinoAVRPinoutBlocks from './blocks/pinout';
import * as ArduinoAVRPinsBlocks from './blocks/pins';
import * as ArduinoAVRProceduresBlocks from './blocks/procedures';
import * as ArduinoAVRScoopBlocks from './blocks/scoop';
import * as ArduinoAVRSensorBlocks from './blocks/sensor';
import * as ArduinoAVRSerialBlocks from './blocks/serial';
import * as ArduinoAVRStorageBlocks from './blocks/storage';
import * as ArduinoAVRTextBlocks from './blocks/text';
import * as ArduinoAVRToolsBlocks from './blocks/tools';
import * as ArduinoAVRVariablesBlocks from './blocks/variables';
import * as ArduinoAVRActuatorGenerators from './generators/actuator';
import * as ArduinoAVRBlynkGenerators from './generators/blynk';
@@ -35,14 +33,12 @@ import * as ArduinoAVRLogicGenerators from './generators/logic';
import * as ArduinoAVRMathGenerators from './generators/math';
import * as ArduinoAVRPinoutGenerators from './generators/pinout';
import * as ArduinoAVRPinsGenerators from './generators/pins';
import * as ArduinoAVRProceduresGenerators from './generators/procedures';
import * as ArduinoAVRScoopGenerators from './generators/scoop';
import * as ArduinoAVRSensorGenerators from './generators/sensor';
import * as ArduinoAVRSerialGenerators from './generators/serial';
import * as ArduinoAVRStorageGenerators from './generators/storage';
import * as ArduinoAVRTextGenerators from './generators/text';
import * as ArduinoAVRToolsGenerators from './generators/tools';
import * as ArduinoAVRVariablesGenerators from './generators/variables';
export {
ArduinoAVRPins,
@@ -59,14 +55,12 @@ export {
ArduinoAVRMathBlocks,
ArduinoAVRPinoutBlocks,
ArduinoAVRPinsBlocks,
ArduinoAVRProceduresBlocks,
ArduinoAVRScoopBlocks,
ArduinoAVRSensorBlocks,
ArduinoAVRSerialBlocks,
ArduinoAVRStorageBlocks,
ArduinoAVRTextBlocks,
ArduinoAVRToolsBlocks,
ArduinoAVRVariablesBlocks,
ArduinoAVRActuatorGenerators,
ArduinoAVRBlynkGenerators,
ArduinoAVRCommunicateGenerators,
@@ -80,12 +74,10 @@ export {
ArduinoAVRMathGenerators,
ArduinoAVRPinoutGenerators,
ArduinoAVRPinsGenerators,
ArduinoAVRProceduresGenerators,
ArduinoAVRScoopGenerators,
ArduinoAVRSensorGenerators,
ArduinoAVRSerialGenerators,
ArduinoAVRStorageGenerators,
ArduinoAVRTextGenerators,
ArduinoAVRToolsGenerators,
ArduinoAVRVariablesGenerators
ArduinoAVRToolsGenerators
};

View File

@@ -3,9 +3,13 @@ import { Profile } from 'mixly';
import {
ArduinoEthernetBlocks,
ArduinoProceduresBlocks,
ArduinoTextBlocks,
ArduinoVariablesBlocks,
ArduinoEthernetGenerators,
ArduinoProceduresGenerators,
ArduinoTextGenerators,
ArduinoVariablesGenerators,
Procedures,
Variables,
Arduino
@@ -26,14 +30,12 @@ import {
ArduinoAVRMathBlocks,
ArduinoAVRPinoutBlocks,
ArduinoAVRPinsBlocks,
ArduinoAVRProceduresBlocks,
ArduinoAVRScoopBlocks,
ArduinoAVRSensorBlocks,
ArduinoAVRSerialBlocks,
ArduinoAVRStorageBlocks,
ArduinoAVRTextBlocks,
ArduinoAVRToolsBlocks,
ArduinoAVRVariablesBlocks,
ArduinoAVRActuatorGenerators,
ArduinoAVRBlynkGenerators,
ArduinoAVRCommunicateGenerators,
@@ -47,14 +49,12 @@ import {
ArduinoAVRMathGenerators,
ArduinoAVRPinoutGenerators,
ArduinoAVRPinsGenerators,
ArduinoAVRProceduresGenerators,
ArduinoAVRScoopGenerators,
ArduinoAVRSensorGenerators,
ArduinoAVRSerialGenerators,
ArduinoAVRStorageGenerators,
ArduinoAVRTextGenerators,
ArduinoAVRToolsGenerators,
ArduinoAVRVariablesGenerators
ArduinoAVRToolsGenerators
} from './';
import './css/color.css';
@@ -72,7 +72,9 @@ Object.assign(Profile.default, ArduinoAVRPins.arduino_standard);
Object.assign(
Blockly.Blocks,
ArduinoEthernetBlocks,
ArduinoProceduresBlocks,
ArduinoTextBlocks,
ArduinoVariablesBlocks,
ArduinoAVRActuatorBlocks,
ArduinoAVRBlynkBlocks,
ArduinoAVRCommunicateBlocks,
@@ -86,20 +88,20 @@ Object.assign(
ArduinoAVRMathBlocks,
ArduinoAVRPinoutBlocks,
ArduinoAVRPinsBlocks,
ArduinoAVRProceduresBlocks,
ArduinoAVRScoopBlocks,
ArduinoAVRSensorBlocks,
ArduinoAVRSerialBlocks,
ArduinoAVRStorageBlocks,
ArduinoAVRTextBlocks,
ArduinoAVRToolsBlocks,
ArduinoAVRVariablesBlocks
ArduinoAVRToolsBlocks
);
Object.assign(
Blockly.Arduino.forBlock,
ArduinoEthernetGenerators,
ArduinoProceduresGenerators,
ArduinoTextGenerators,
ArduinoVariablesGenerators,
ArduinoAVRActuatorGenerators,
ArduinoAVRBlynkGenerators,
ArduinoAVRCommunicateGenerators,
@@ -113,12 +115,10 @@ Object.assign(
ArduinoAVRMathGenerators,
ArduinoAVRPinoutGenerators,
ArduinoAVRPinsGenerators,
ArduinoAVRProceduresGenerators,
ArduinoAVRScoopGenerators,
ArduinoAVRSensorGenerators,
ArduinoAVRSerialGenerators,
ArduinoAVRStorageGenerators,
ArduinoAVRTextGenerators,
ArduinoAVRToolsGenerators,
ArduinoAVRVariablesGenerators
ArduinoAVRToolsGenerators
);

View File

@@ -3,9 +3,13 @@ import { Profile } from 'mixly';
import {
ArduinoEthernetBlocks,
ArduinoProceduresBlocks,
ArduinoTextBlocks,
ArduinoVariablesBlocks,
ArduinoEthernetGenerators,
ArduinoProceduresGenerators,
ArduinoTextGenerators,
ArduinoVariablesGenerators,
Procedures,
Variables,
Arduino
@@ -24,13 +28,11 @@ import {
ArduinoAVRLogicBlocks,
ArduinoAVRMathBlocks,
ArduinoAVRPinsBlocks,
ArduinoAVRProceduresBlocks,
ArduinoAVRSensorBlocks,
ArduinoAVRSerialBlocks,
ArduinoAVRStorageBlocks,
ArduinoAVRTextBlocks,
ArduinoAVRToolsBlocks,
ArduinoAVRVariablesBlocks,
ArduinoAVRActuatorGenerators,
ArduinoAVRBlynkGenerators,
ArduinoAVRCommunicateGenerators,
@@ -43,13 +45,11 @@ import {
ArduinoAVRLogicGenerators,
ArduinoAVRMathGenerators,
ArduinoAVRPinsGenerators,
ArduinoAVRProceduresGenerators,
ArduinoAVRSensorGenerators,
ArduinoAVRSerialGenerators,
ArduinoAVRStorageGenerators,
ArduinoAVRTextGenerators,
ArduinoAVRToolsGenerators,
ArduinoAVRVariablesGenerators
ArduinoAVRToolsGenerators
} from '@mixly/arduino-avr';
import {
@@ -112,7 +112,9 @@ addBoardFSItem();
Object.assign(
Blockly.Blocks,
ArduinoEthernetBlocks,
ArduinoProceduresBlocks,
ArduinoTextBlocks,
ArduinoVariablesBlocks,
ArduinoAVRActuatorBlocks,
ArduinoAVRBlynkBlocks,
ArduinoAVRCommunicateBlocks,
@@ -125,13 +127,11 @@ Object.assign(
ArduinoAVRLogicBlocks,
ArduinoAVRMathBlocks,
ArduinoAVRPinsBlocks,
ArduinoAVRProceduresBlocks,
ArduinoAVRSensorBlocks,
ArduinoAVRSerialBlocks,
ArduinoAVRStorageBlocks,
ArduinoAVRTextBlocks,
ArduinoAVRToolsBlocks,
ArduinoAVRVariablesBlocks,
ArduinoESP32ActuatorBlocks,
ArduinoESP32CommunicateBlocks,
ArduinoESP32ControlBlocks,
@@ -152,7 +152,9 @@ Object.assign(
Object.assign(
Blockly.Arduino.forBlock,
ArduinoEthernetGenerators,
ArduinoProceduresGenerators,
ArduinoTextGenerators,
ArduinoVariablesGenerators,
ArduinoAVRActuatorGenerators,
ArduinoAVRBlynkGenerators,
ArduinoAVRCommunicateGenerators,
@@ -165,13 +167,11 @@ Object.assign(
ArduinoAVRLogicGenerators,
ArduinoAVRMathGenerators,
ArduinoAVRPinsGenerators,
ArduinoAVRProceduresGenerators,
ArduinoAVRSensorGenerators,
ArduinoAVRSerialGenerators,
ArduinoAVRStorageGenerators,
ArduinoAVRTextGenerators,
ArduinoAVRToolsGenerators,
ArduinoAVRVariablesGenerators,
ArduinoESP32ActuatorGenerators,
ArduinoESP32CommunicateGenerators,
ArduinoESP32ControlGenerators,

View File

@@ -3,9 +3,13 @@ import { Profile } from 'mixly';
import {
ArduinoEthernetBlocks,
ArduinoProceduresBlocks,
ArduinoTextBlocks,
ArduinoVariablesBlocks,
ArduinoEthernetGenerators,
ArduinoProceduresGenerators,
ArduinoTextGenerators,
ArduinoVariablesGenerators,
Procedures,
Variables,
Arduino
@@ -24,13 +28,11 @@ import {
ArduinoAVRLogicBlocks,
ArduinoAVRMathBlocks,
ArduinoAVRPinsBlocks,
ArduinoAVRProceduresBlocks,
ArduinoAVRSensorBlocks,
ArduinoAVRSerialBlocks,
ArduinoAVRStorageBlocks,
ArduinoAVRTextBlocks,
ArduinoAVRToolsBlocks,
ArduinoAVRVariablesBlocks,
ArduinoAVRActuatorGenerators,
ArduinoAVRBlynkGenerators,
ArduinoAVRCommunicateGenerators,
@@ -43,13 +45,11 @@ import {
ArduinoAVRLogicGenerators,
ArduinoAVRMathGenerators,
ArduinoAVRPinsGenerators,
ArduinoAVRProceduresGenerators,
ArduinoAVRSensorGenerators,
ArduinoAVRSerialGenerators,
ArduinoAVRStorageGenerators,
ArduinoAVRTextGenerators,
ArduinoAVRToolsGenerators,
ArduinoAVRVariablesGenerators
ArduinoAVRToolsGenerators
} from '@mixly/arduino-avr';
import {
@@ -86,7 +86,9 @@ addBoardFSItem();
Object.assign(
Blockly.Blocks,
ArduinoEthernetBlocks,
ArduinoProceduresBlocks,
ArduinoTextBlocks,
ArduinoVariablesBlocks,
ArduinoAVRActuatorBlocks,
ArduinoAVRBlynkBlocks,
ArduinoAVRCommunicateBlocks,
@@ -99,13 +101,11 @@ Object.assign(
ArduinoAVRLogicBlocks,
ArduinoAVRMathBlocks,
ArduinoAVRPinsBlocks,
ArduinoAVRProceduresBlocks,
ArduinoAVRSensorBlocks,
ArduinoAVRSerialBlocks,
ArduinoAVRStorageBlocks,
ArduinoAVRTextBlocks,
ArduinoAVRToolsBlocks,
ArduinoAVRVariablesBlocks,
ArduinoESP8266EthernetBlocks,
ArduinoESP8266PinoutBlocks
);
@@ -113,7 +113,9 @@ Object.assign(
Object.assign(
Blockly.Arduino.forBlock,
ArduinoEthernetGenerators,
ArduinoProceduresGenerators,
ArduinoTextGenerators,
ArduinoVariablesGenerators,
ArduinoAVRActuatorGenerators,
ArduinoAVRBlynkGenerators,
ArduinoAVRCommunicateGenerators,
@@ -126,13 +128,11 @@ Object.assign(
ArduinoAVRLogicGenerators,
ArduinoAVRMathGenerators,
ArduinoAVRPinsGenerators,
ArduinoAVRProceduresGenerators,
ArduinoAVRSensorGenerators,
ArduinoAVRSerialGenerators,
ArduinoAVRStorageGenerators,
ArduinoAVRTextGenerators,
ArduinoAVRToolsGenerators,
ArduinoAVRVariablesGenerators,
ArduinoESP8266EthernetGenerators,
ArduinoESP8266PinoutGenerators
);