Update(boards): xpython板卡添加 解包 操作,同时调整 打包 操作位置

This commit is contained in:
王立帮
2024-10-06 21:06:37 +08:00
parent 52643d15ee
commit fd0a667109
22 changed files with 183 additions and 314 deletions

View File

@@ -899,19 +899,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -872,19 +872,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -872,19 +872,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -899,19 +899,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -899,19 +899,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -894,19 +894,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -742,19 +742,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -658,19 +658,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -886,19 +886,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -775,127 +775,6 @@ export const lists_del_general = {
}
};
export const lists_zip = {
init: function () {
this.setColour(LISTS_HUE);
this.itemCount_ = 2;
this.updateShape_();
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setOutput(true, "List")
this.setMutator(new Blockly.icons.MutatorIcon(['lists_zip_item'], this));
this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_TOOLTIP);
},
mutationToDom: function () {
var container = document.createElement('mutation');
container.setAttribute('items', this.itemCount_);
return container;
},
domToMutation: function (xmlElement) {
this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
this.updateShape_();
},
decompose: function (workspace) {
var containerBlock =
workspace.newBlock('lists_zip_container');
containerBlock.initSvg();
var connection = containerBlock.getInput('STACK').connection;
for (var i = 0; i < this.itemCount_; i++) {
var itemBlock = workspace.newBlock('lists_zip_item');
itemBlock.initSvg();
connection.connect(itemBlock.previousConnection);
connection = itemBlock.nextConnection;
}
return containerBlock;
},
compose: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
// Count number of inputs.
var connections = [];
var i = 0;
while (itemBlock) {
connections[i] = itemBlock.valueConnection_;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
i++;
}
this.itemCount_ = i;
this.updateShape_();
// Reconnect any child blocks.
for (var i = 0; i < this.itemCount_; i++) {
if (connections[i]) {
this.getInput('ADD' + i).connection.connect(connections[i]);
}
}
},
saveConnections: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
var i = 0;
while (itemBlock) {
var input = this.getInput('ADD' + i);
itemBlock.valueConnection_ = input && input.connection.targetConnection;
i++;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
}
},
updateShape_: function () {
// Delete everything.
if (this.getInput('EMPTY')) {
this.removeInput('EMPTY');
} else {
var i = 0;
while (this.getInput('ADD' + i)) {
this.removeInput('ADD' + i);
i++;
}
}
// Rebuild block.
if (this.itemCount_ == 0) {
this.appendDummyInput('EMPTY')
.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP);
} else {
for (var i = 0; i < this.itemCount_; i++) {
var input = this.appendValueInput('ADD' + i);
if (i == 0) {
input.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP);
}
}
}
}
};
export const lists_zip_container = {
init: function () {
this.setColour(LISTS_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP)
.appendField('[]');
this.appendStatementInput('STACK');
this.setTooltip(Blockly.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_CONTAINER_TOOLTIP);
this.contextMenu = false;
}
};
export const lists_zip_item = {
init: function () {
this.setColour(LISTS_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM_TOOLTIP);
this.contextMenu = false;
}
};
export const list_tolist = {
init: function () {
this.setColour(LISTS_HUE);

View File

@@ -199,4 +199,139 @@ export const controls_typeLists = {
return mode0 + TOOLTIPS[mode];
});
}
};
export const lists_zip = {
init: function () {
this.setColour(VARIABLES_HUE);
this.itemCount_ = 2;
this.updateShape_();
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setOutput(true, "List")
this.setMutator(new Blockly.icons.MutatorIcon(['lists_zip_item'], this));
this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_TOOLTIP);
},
mutationToDom: function () {
var container = document.createElement('mutation');
container.setAttribute('items', this.itemCount_);
return container;
},
domToMutation: function (xmlElement) {
this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
this.updateShape_();
},
decompose: function (workspace) {
var containerBlock =
workspace.newBlock('lists_zip_container');
containerBlock.initSvg();
var connection = containerBlock.getInput('STACK').connection;
for (var i = 0; i < this.itemCount_; i++) {
var itemBlock = workspace.newBlock('lists_zip_item');
itemBlock.initSvg();
connection.connect(itemBlock.previousConnection);
connection = itemBlock.nextConnection;
}
return containerBlock;
},
compose: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
// Count number of inputs.
var connections = [];
var i = 0;
while (itemBlock) {
connections[i] = itemBlock.valueConnection_;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
i++;
}
this.itemCount_ = i;
this.updateShape_();
// Reconnect any child blocks.
for (var i = 0; i < this.itemCount_; i++) {
if (connections[i]) {
this.getInput('ADD' + i).connection.connect(connections[i]);
}
}
},
saveConnections: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
var i = 0;
while (itemBlock) {
var input = this.getInput('ADD' + i);
itemBlock.valueConnection_ = input && input.connection.targetConnection;
i++;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
}
},
updateShape_: function () {
// Delete everything.
if (this.getInput('EMPTY')) {
this.removeInput('EMPTY');
} else {
var i = 0;
while (this.getInput('ADD' + i)) {
this.removeInput('ADD' + i);
i++;
}
}
// Rebuild block.
if (this.itemCount_ == 0) {
this.appendDummyInput('EMPTY')
.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP);
} else {
for (var i = 0; i < this.itemCount_; i++) {
var input = this.appendValueInput('ADD' + i);
if (i == 0) {
input.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP);
}
}
}
}
};
export const lists_zip_container = {
init: function () {
this.setColour(VARIABLES_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP)
.appendField('[]');
this.appendStatementInput('STACK');
this.setTooltip(Blockly.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_CONTAINER_TOOLTIP);
this.contextMenu = false;
}
};
export const lists_zip_item = {
init: function () {
this.setColour(VARIABLES_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM_TOOLTIP);
this.contextMenu = false;
}
};
export const unpack_iterable_object = {
init: function () {
this.setColour(VARIABLES_HUE);
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_VARIABLE_UNPACK)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM, '*'],
[Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT, '**']
]), 'TYPE');
this.setTooltip('');
this.setOutput(true);
}
};

View File

@@ -245,17 +245,6 @@ export const lists_setIndex3 = lists_set_index
export const lists_insert_value2 = lists_insert_value
export const lists_remove_at2 = lists_remove_at
export const lists_zip = function (_, generator) {
var code = new Array(this.itemCount_);
var default_value = '[]';
for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || default_value;
}
var code = 'zip(' + code.join(', ') + ')';
return [code, generator.ORDER_ATOMIC];
}
export const list_tolist = function (_, generator) {
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'
return ['list(' + str + ')', generator.ORDER_ATOMIC];

View File

@@ -69,4 +69,22 @@ export const controls_typeLists = function (_, generator) {
var type = this.getFieldValue('type');
// generator.definitions_['func_type' + type] = code;
return [type, generator.ORDER_ATOMIC];
}
export const lists_zip = function (_, generator) {
var code = new Array(this.itemCount_);
var default_value = '[]';
for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || default_value;
}
var code = 'zip(' + code.join(', ') + ')';
return [code, generator.ORDER_ATOMIC];
}
export const unpack_iterable_object = function (_, generator) {
const varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '[]';
const type = this.getFieldValue('TYPE');
const code = `${type}(${varName})`;
return [code, generator.ORDER_ATOMIC];
}

View File

@@ -134,6 +134,33 @@ Variables.flyoutCategory = function (workspace) {
block.setAttribute('type', 'controls_typeLists');
xmlList.push(block);
}
if (Blockly.Blocks['lists_zip']) {
var block = Blockly.utils.xml.createElement('block');
block.setAttribute('type', 'lists_zip');
block.setAttribute('inline', 'false');
var mutation = Blockly.utils.xml.createElement('mutation');
mutation.setAttribute('items', 2);
block.appendChild(mutation);
for (let i = 0; i < 2; i++) {
let add = Blockly.utils.xml.createElement('value');
add.setAttribute('name', `ADD${i}`);
// let childBlock = Blockly.utils.xml.createElement('block');
// childBlock.setAttribute('type', 'list_many_input');
// let field = Blockly.utils.xml.createElement('field');
// let value = Blockly.utils.xml.createTextNode('0,1,2,3');
// field.setAttribute('name', 'CONTENT');
// field.appendChild(value);
// childBlock.appendChild(field);
// add.appendChild(childBlock);
block.appendChild(add);
}
xmlList.push(block);
}
if (Blockly.Blocks['unpack_iterable_object']) {
var block = Blockly.utils.xml.createElement('block');
block.setAttribute('type', 'unpack_iterable_object');
xmlList.push(block);
}
for (var i = 0; i < variableList.length; i++) {
// alert(variableList)
// if(i==0&& !(Blockly.Python.setups_['variables_set'+''])){

View File

@@ -894,19 +894,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -894,19 +894,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -846,19 +846,6 @@
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -817,19 +817,6 @@ type="application/javascript"></script> -->
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>

View File

@@ -804,19 +804,6 @@ type="application/javascript"></script> -->
</shadow>
</value>
</block>
<block type="lists_zip">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
<value name="ADD1">
<block type="list_many_input">
<field name="CONTENT">0,1,2,3</field>
</block>
</value>
</block>
</category>
<category id="catTuple" colour="195">
<block type="tuple_create_with"></block>