From b55a4b4c046d2ee861780a3bf9d45c0aecfff0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com> Date: Mon, 24 Mar 2025 22:05:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(boards):=20=E5=90=AF=E7=94=A8mpython=5Fpbm?= =?UTF-8?q?=5Fimage=E4=BB=A5=E9=80=82=E5=BA=94=E5=85=B6=E4=BB=96=E6=9D=BF?= =?UTF-8?q?=E5=8D=A1=E9=9C=80=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../micropython/blocks/display_onboard.js | 230 ++++++++---------- .../micropython/generators/display_onboard.js | 23 +- 2 files changed, 117 insertions(+), 136 deletions(-) diff --git a/boards/default_src/micropython/blocks/display_onboard.js b/boards/default_src/micropython/blocks/display_onboard.js index 671c7a70..c62ba1e0 100644 --- a/boards/default_src/micropython/blocks/display_onboard.js +++ b/boards/default_src/micropython/blocks/display_onboard.js @@ -721,128 +721,114 @@ export const mpython_display_line = { } }; -// export const mpython_pbm_image = { -// init: function () { -// this.jsonInit({ -// "colour": DISPLAY_ONBOARD_HUE, -// "args0": [ -// { -// "type": "field_label", -// "name": "size_image", -// "text": Blockly.Msg.MIXLY_MICROBIT_Built_in_image1 -// }, - -// { -// "name": "path", -// "options": [ -// ["Heart", "Heart"], -// ["Angry", "Angry"], -// ["Bored", "Bored"], -// ["Confused", "Confused"], -// ["Happy", "Happy"], -// ["Paper", "Paper"], -// ["Rock", "Rock"], -// ["Sad", "Sad"], -// ["Scissors", "Scissors"], -// ["Silly", "Silly"], -// ["Sleep", "Sleep"], -// ["Small_heart", "Small_heart"], -// ["Small_paper", "Small_paper"], -// ["Small_rock", "Small_rock"], -// ["Small_scissors", "Small_scissors"], -// ["Smile", "Smile"], -// ["Surprise", "Surprise"], -// ["Wonderful", "Wonderful"], -// ["Eyes_Angry", "Eyes_Angry"], -// ["Awake", "Awake"], -// ["Black_eye", "Black_eye"], -// ["Bottom_left", "Bottom_left"], -// ["Bottom_right", "Bottom_right"], -// ["Crazy_1", "Crazy_1"], -// ["Crazy_2", "Crazy_2"], -// ["Disappointed", "Disappointed"], -// ["Dizzy", "Dizzy"], -// ["Down", "Down"], -// ["Evil", "Evil"], -// ["Hurt", "Hurt"], -// ["Knocked_out", "Knocked_out"], -// ["Love", "Love"], -// ["Middle_left", "Middle_left"], -// ["Middle_right", "Middle_right"], -// ["Neutral", "Neutral"], -// ["Nuclear", "Nuclear"], -// ["Pinch_left", "Pinch_left"], -// ["Pinch_middle", "Pinch_middle"], -// ["Pinch_right", "Pinch_right"], -// ["Tear", "Tear"], -// ["Tired_left", "Tired_left"], -// ["Tired_middle", "Tired_middle"], -// ["Tired_right", "Tired_right"], -// ["Toxic", "Toxic"], -// ["Up", "Up"], -// ["Winking", "Winking"], -// ["Accept", "Accept"], -// ["Backward", "Backward"], -// ["Decline", "Decline"], -// ["Forward", "Forward"], -// ["Left", "Left"], -// ["No_go", "No_go"], -// ["Question_mark", "Question_mark"], -// ["Right", "Right"], -// ["Stop_1", "Stop_1"], -// ["Stop_2", "Stop_2"], -// ["Thumbs_down", "Thumbs_down"], -// ["Thumbs_up", "Thumbs_up"], -// ["Warning", "Warning"], -// ["Bomb", "Bomb"], -// ["Boom", "Boom"], -// ["Fire", "Fire"], -// ["Flowers", "Flowers"], -// ["Forest", "Forest"], -// ["Lightning", "Lightning"], -// ["Light_off", "Light_off"], -// ["Light_on", "Light_on"], -// ["Night", "Night"], -// ["Pirate", "Pirate"], -// ["Snow", "Snow"], -// ["Target", "Target"], -// ["Bar_0", "Bar_0"], -// ["Bar_1", "Bar_1"], -// ["Bar_2", "Bar_2"], -// ["Bar_3", "Bar_3"], -// ["Bar_4", "Bar_4"], -// ["Dial_0", "Dial_0"], -// ["Dial_1", "Dial_1"], -// ["Dial_2", "Dial_2"], -// ["Dial_3", "Dial_3"], -// ["Dial_4", "Dial_4"], -// ["Dots_0", "Dots_0"], -// ["Dots_1", "Dots_1"], -// ["Dots_2", "Dots_2"], -// ["Dots_3", "Dots_3"], -// ["Hourglass_0", "Hourglass_0"], -// ["Hourglass_1", "Hourglass_1"], -// ["Hourglass_2", "Hourglass_2"], -// ["Timer_0", "Timer_0"], -// ["Timer_1", "Timer_1"], -// ["Timer_2", "Timer_2"], -// ["Timer_3", "Timer_3"], -// ["Timer_4", "Timer_4"], -// ["Water_level_0", "Water_level_0"], -// ["Water_level_1", "Water_level_1"], -// ["Water_level_2", "Water_level_2"], -// ["Water_level_3", "Water_level_3"], -// ], -// "type": "field_dropdown" -// } -// ], -// "output": "String", -// "helpUrl": '', -// "tooltip": '', -// "message0": '%1 %2' -// }); -// } -// }; +export const mpython_pbm_image = { + init: function () { + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_MICROBIT_Built_in_image1) + .appendField(new Blockly.FieldDropdown(this.IMAGES), 'path'); + this.setColour(DISPLAY_ONBOARD_HUE); + this.setOutput(true); + }, + IMAGES: [ + ["Heart", "expression_picture.Heart"], + ["Angry", "expression_picture.Angry"], + ["Bored", "expression_picture.Bored"], + ["Confused", "expression_picture.Confused"], + ["Happy", "expression_picture.Happy"], + ["Paper", "expression_picture.Paper"], + ["Rock", "expression_picture.Rock"], + ["Sad", "expression_picture.Sad"], + ["Scissors", "expression_picture.Scissors"], + ["Silly", "expression_picture.Silly"], + ["Sleep", "expression_picture.Sleep"], + ["Small_heart", "expression_picture.Small_heart"], + ["Small_paper", "expression_picture.Small_paper"], + ["Small_rock", "expression_picture.Small_rock"], + ["Small_scissors", "expression_picture.Small_scissors"], + ["Smile", "expression_picture.Smile"], + ["Surprise", "expression_picture.Surprise"], + ["Wonderful", "expression_picture.Wonderful"], + ["Eyes_Angry", "eye_picture.Eyes_Angry"], + ["Awake", "eye_picture.Awake"], + ["Black_eye", "eye_picture.Black_eye"], + ["Bottom_left", "eye_picture.Bottom_left"], + ["Bottom_right", "eye_picture.Bottom_right"], + ["Crazy_1", "eye_picture.Crazy_1"], + ["Crazy_2", "eye_picture.Crazy_2"], + ["Disappointed", "eye_picture.Disappointed"], + ["Dizzy", "eye_picture.Dizzy"], + ["Down", "eye_picture.Down"], + ["Evil", "eye_picture.Evil"], + ["Hurt", "eye_picture.Hurt"], + ["Knocked_out", "eye_picture.Knocked_out"], + ["Love", "eye_picture.Love"], + ["Middle_left", "eye_picture.Middle_left"], + ["Middle_right", "eye_picture.Middle_right"], + ["Neutral", "eye_picture.Neutral"], + ["Nuclear", "eye_picture.Nuclear"], + ["Pinch_left", "eye_picture.Pinch_left"], + ["Pinch_middle", "eye_picture.Pinch_middle"], + ["Pinch_right", "eye_picture.Pinch_right"], + ["Tear", "eye_picture.Tear"], + ["Tired_left", "eye_picture.Tired_left"], + ["Tired_middle", "eye_picture.Tired_middle"], + ["Tired_right", "eye_picture.Tired_right"], + ["Toxic", "eye_picture.Toxic"], + ["Up", "eye_picture.Up"], + ["Winking", "eye_picture.Winking"], + ["Accept", "informatio_picture.Accept"], + ["Backward", "informatio_picture.Backward"], + ["Decline", "informatio_picture.Decline"], + ["Forward", "informatio_picture.Forward"], + ["Left", "informatio_picture.Left"], + ["No_go", "informatio_picture.No_go"], + ["Question_mark", "informatio_picture.Question_mark"], + ["Right", "informatio_picture.Right"], + ["Stop_1", "informatio_picture.Stop_1"], + ["Stop_2", "informatio_picture.Stop_2"], + ["Thumbs_down", "informatio_picture.Thumbs_down"], + ["Thumbs_up", "informatio_picture.Thumbs_up"], + ["Warning", "informatio_picture.Warning"], + ["Bomb", "object_picture.Bomb"], + ["Boom", "object_picture.Boom"], + ["Fire", "object_picture.Fire"], + ["Flowers", "object_picture.Flowers"], + ["Forest", "object_picture.Forest"], + ["Lightning", "object_picture.Lightning"], + ["Light_off", "object_picture.Light_off"], + ["Light_on", "object_picture.Light_on"], + ["Night", "object_picture.Night"], + ["Pirate", "object_picture.Pirate"], + ["Snow", "object_picture.Snow"], + ["Target", "object_picture.Target"], + ["Bar_0", "progres_picture.Bar_0"], + ["Bar_1", "progres_picture.Bar_1"], + ["Bar_2", "progres_picture.Bar_2"], + ["Bar_3", "progres_picture.Bar_3"], + ["Bar_4", "progres_picture.Bar_4"], + ["Dial_0", "progres_picture.Dial_0"], + ["Dial_1", "progres_picture.Dial_1"], + ["Dial_2", "progres_picture.Dial_2"], + ["Dial_3", "progres_picture.Dial_3"], + ["Dial_4", "progres_picture.Dial_4"], + ["Dots_0", "progres_picture.Dots_0"], + ["Dots_1", "progres_picture.Dots_1"], + ["Dots_2", "progres_picture.Dots_2"], + ["Dots_3", "progres_picture.Dots_3"], + ["Hourglass_0", "progres_picture.Hourglass_0"], + ["Hourglass_1", "progres_picture.Hourglass_1"], + ["Hourglass_2", "progres_picture.Hourglass_2"], + ["Timer_0", "progres_picture.Timer_0"], + ["Timer_1", "progres_picture.Timer_1"], + ["Timer_2", "progres_picture.Timer_2"], + ["Timer_3", "progres_picture.Timer_3"], + ["Timer_4", "progres_picture.Timer_4"], + ["Water_level_0", "progres_picture.Water_level_0"], + ["Water_level_1", "progres_picture.Water_level_1"], + ["Water_level_2", "progres_picture.Water_level_2"], + ["Water_level_3", "progres_picture.Water_level_3"] + ] +}; //mixbot onboard_matrix below: diff --git a/boards/default_src/micropython/generators/display_onboard.js b/boards/default_src/micropython/generators/display_onboard.js index 9c700012..038c4b9d 100644 --- a/boards/default_src/micropython/generators/display_onboard.js +++ b/boards/default_src/micropython/generators/display_onboard.js @@ -448,20 +448,15 @@ export const mixgo_display_image_create_new = function (block, generator) { } //mpython - -// export const mpython_pbm_image = function (block, generator) { -// var code = block.getFieldValue('path'); -// var sort = ['expression_picture', 'eye_picture', 'informatio_picture', 'object_picture', 'progres_picture'] -// var img = [["Angry", "Bored", "Confused", "Happy", "Heart", "Paper", "Rock", "Sad", "Scissors", "Silly", "Sleep", "Small_heart", "Small_paper", "Small_rock", "Small_scissors", "Smile", "Surprise", "Wonderful"], ["Eyes_Angry", "Awake", "Black_eye", "Bottom_left", "Bottom_right", "Crazy_1", "Crazy_2", "Disappointed", "Dizzy", "Down", "Hurt", "Evil", "Knocked_out", "Love", "Middle_left", "Middle_right", "Neutral", "Nuclear", "Pinch_left", "Pinch_middle", "Pinch_right", "Tear", "Tired_middle", "Tired_left", "Tired_right", "Toxic", "Up", "Winking"], ["Accept", "Backward", "Decline", "Forward", "Left", "No_go", "Question_mark", "Right", "Stop_1", "Stop_2", "Thumbs_down", "Thumbs_up", "Warning"], ["Bomb", "Boom", "Fire", "Flowers", "Forest", "Lightning", "Light_off", "Light_on", "Night", "Pirate", "Snow", "Target"], ["Bar_0", "Bar_1", "Bar_2", "Bar_3", "Bar_4", "Dial_0", "Dial_1", "Dial_2", "Dial_3", "Dial_4", "Dots_0", "Dots_1", "Dots_2", "Dots_3", "Hourglass_0", "Hourglass_1", "Hourglass_2", "Timer_0", "Timer_1", "Timer_2", "Timer_3", "Timer_4", "Water_level_0", "Water_level_1", "Water_level_2", "Water_level_3"]] -// for (var i = 0; i < 5; i++) { -// if (img[i].indexOf(code) != -1) { -// var tag = i; -// break; -// } -// } -// generator.definitions_['import_' + sort[tag] + '_' + code] = "from " + sort[tag] + " import " + code; -// return [code, generator.ORDER_ATOMIC]; -// } +export const mpython_pbm_image = function (_, generator) { + const PIN_VALUE = this.getFieldValue('path'); + const data = PIN_VALUE.split('.'); + if (data.length !== 2) { + throw Error('pin value error'); + } + generator.definitions_[`import_${data[0]}_${data[1]}`] = `from ${data[0]} import ${data[1]}`; + return [data[1], generator.ORDER_ATOMIC]; +} export const onboard_oled_show_image = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]