import * as Blockly from 'blockly/core'; const TURTLE_HUE = 180; export const turtle_create = { init: function () { this.setColour(TURTLE_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.blockpy_turtle_create) .appendField(new Blockly.FieldTextInput('tina'), 'VAR') this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.blockpy_turtle_create_TOOLTIP); }, getVars: function () { return [this.getFieldValue('VAR')]; }, renameVar: function (oldName, newName) { if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { this.setTitleValue(newName, 'VAR'); } } }; export const turtle_done = { init: function () { this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_TURTLE_DONE); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_exitonclick = { init: function () { this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_PYTHON_TURTLE_EXITONCLICK); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_move = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var front_back = [[Blockly.Msg.blockpy_forward, 'forward'], [Blockly.Msg.blockpy_backward, 'backward']]; this.setColour(TURTLE_HUE); this.appendValueInput('VAR') // .setCheck(String) .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MOVE_BY) .appendField(new Blockly.FieldDropdown(front_back), 'DIR') .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MOVE_BY_num); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'forward': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_FORWARD, 'backward': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_BACKWARD }; return TOOLTIPS[mode]; }); } }; export const turtle_rotate = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var front_back = [[Blockly.Msg.blockpy_left, 'left'], [Blockly.Msg.blockpy_right, 'right']]; this.setColour(TURTLE_HUE); this.appendValueInput('VAR') // .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_rotate) .appendField(new Blockly.FieldDropdown(front_back), 'DIR') .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'left': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_LEFT, 'right': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_RIGHT }; return TOOLTIPS[mode]; }); } }; export const turtle_setheading = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendValueInput('data') .setCheck(Number) .appendField(Blockly.Msg.blockpy_setheading); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_setheading_degree); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_screen_delay = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendValueInput('data') .setCheck(Number) .appendField(Blockly.Msg.MIXLY_TURTLE_SCREEN_DELAY); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_MILLIS); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SCREEN_DELAY); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_goto = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendValueInput('data') .setCheck(Number) .appendField(Blockly.Msg.blockpy_turtle_goto); this.appendValueInput('val') .setCheck(Number) .appendField(Blockly.Msg.blockpy_turtle_goto_y); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_turtle_goto_position); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_setxy = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var set_xy = [[Blockly.Msg.PYLAB_LABEL_X, 'x'], [Blockly.Msg.PYLAB_LABEL_Y, 'y']]; this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .appendField(new Blockly.FieldDropdown(set_xy), 'DIR') .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_SETXY); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TURTLE_SETXY_TOOLTIP); } }; export const turtle_pos_shape = { init: function () { this.setColour(TURTLE_HUE); var pos_shape = [[Blockly.Msg.TURTLE_POS, 'pos'], [Blockly.Msg.TURTLE_SHAPE, 'shape'], [Blockly.Msg.TURTLE_HEADING, 'heading'], [Blockly.Msg.MIXLY_MIXPY_TURTLE_WIDTH, 'width'], [Blockly.Msg.MIXLY_TURTEL_GET_SHAPESIZE, 'shapesize'], [Blockly.Msg.MIXLY_SPEED, 'speed']]; this.appendValueInput('TUR') .setCheck('Turtle') this.appendDummyInput("") .appendField(Blockly.Msg.TURTLE_POS_SHAPE) .appendField(new Blockly.FieldDropdown(pos_shape), 'DIR') var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'pos': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_POS, 'shape': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SHAPE, 'heading': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HEADING, 'width': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_WIDTH, 'speed': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_GET_SPEED, 'shapesize': Blockly.Msg.MIXLY_TURTEL_GET_SHAPESIZE_TOOLTIP }; return TOOLTIPS[mode]; }); this.setOutput(true); this.setInputsInline(true); } }; export const turtle_stamp = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendDummyInput() .appendField(Blockly.Msg.TURTLE_STAMP); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_clear = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var clear_reset = [[Blockly.Msg.MIXLY_LCD_STAT_CLEAR, 'clear'], [Blockly.Msg.blockpy_turtle_reset, 'reset'] , [Blockly.Msg.blockpy_turtle_home, 'home']]; this.setColour(TURTLE_HUE); this.appendDummyInput("") .appendField(new Blockly.FieldDropdown(clear_reset), 'DIR') this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'clear': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR, 'reset': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_RESET, 'home': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HOME }; return TOOLTIPS[mode]; }); } }; export const turtle_penup = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var penup_down = [[Blockly.Msg.blockpy_turtle_penup, 'penup'], [Blockly.Msg.blockpy_turtle_pendown, 'pendown']]; this.setColour(TURTLE_HUE); this.appendDummyInput("") .appendField(new Blockly.FieldDropdown(penup_down), 'DIR') this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'penup': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_PENUP, 'pendown': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_PENDOWN }; return TOOLTIPS[mode]; }); } }; export const turtle_fill = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var fill = [[Blockly.Msg.blockpy_turtle_beginfill, 'begin'], [Blockly.Msg.blockpy_turtle_endfill, 'end']]; this.setColour(TURTLE_HUE); this.appendDummyInput("") .appendField(new Blockly.FieldDropdown(fill), 'DIR') this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'begin': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_BEGINFILL, 'end': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_ENDFILL }; return TOOLTIPS[mode]; }); } }; export const turtle_size_speed = { init: function () { this.appendDummyInput("") .appendField(new Blockly.FieldTextInput('tina'), 'TUR') var size_speed = [[Blockly.Msg.blockpy_turtle_size, 'pensize'], [Blockly.Msg.MIXLY_SPEED, 'speed']]; this.setColour(TURTLE_HUE); this.appendValueInput('VAR') // .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_set) .appendField(new Blockly.FieldDropdown(size_speed), 'DIR') .appendField(Blockly.Msg.blockpy_turtle_set_num); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'pensize': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SIZE, 'speed': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SPEED }; return TOOLTIPS[mode]; }); } }; export const turtle_size = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendValueInput('data') .setCheck(Number) .appendField(Blockly.Msg.blockpy_turtle_set_size); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SIZE); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_speed = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendValueInput('data') .setCheck(Number) .appendField(Blockly.Msg.blockpy_turtle_set_speed); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SPEED); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_circle = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var circle_dot = [[Blockly.Msg.blockpy_turtle_circle, 'circle'], [Blockly.Msg.blockpy_turtle_dot, 'dot']]; this.setColour(TURTLE_HUE); this.appendValueInput('VAR') // .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_draw) .appendField(new Blockly.FieldDropdown(circle_dot), 'DIR') .appendField(Blockly.Msg.blockpy_turtle_radius); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'circle': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CIRCLE, 'dot': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_DOT }; return TOOLTIPS[mode]; }); } }; export const turtle_circle_advanced = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') // .setCheck(String) .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE) .appendField(Blockly.Msg.blockpy_turtle_radius); this.appendValueInput('data') .setCheck(Number) .appendField(Blockly.Msg.blockpy_turtle_angle); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CIRCLE); } }; export const turtle_visible = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var visible = [[Blockly.Msg.blockpy_turtle_hide, 'hideturtle'], [Blockly.Msg.blockpy_turtle_show, 'showturtle']]; this.setColour(TURTLE_HUE); this.appendDummyInput("") .appendField(new Blockly.FieldDropdown(visible), 'DIR') this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); var thisBlock = this; this.setTooltip(function () { var mode = thisBlock.getFieldValue('DIR'); var TOOLTIPS = { 'hideturtle': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HIDE, 'showturtle': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SHOW }; return TOOLTIPS[mode]; }); } }; export const turtle_bgcolor = { init: function () { this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_turtle_bgcolor) .appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME'); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_title = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TITLE') .setCheck(null) .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_TURTLE_TITLE_SET); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_setup = { init: function () { this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_TURTLE_SETUP_SET); this.appendValueInput('WIDTH') .setCheck(null) .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_WIDTH); this.appendValueInput('HEIGHT') .setCheck(null) .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_HEIGHT); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_tracer = { init: function () { this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_TURTLE_TRACER); this.appendValueInput('STEP') .setCheck(null) .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_TURTLE_TRACER_STEP); this.appendValueInput('DELAY') .setCheck(null) .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_TURTLE_TRACER_DELAY_MS); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_pencolor = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_turtle_pencolor) .appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME'); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_fillcolor = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_turtle_fillcolor) .appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME'); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_clone = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendDummyInput("") .appendField(Blockly.Msg.TURTLE_CLONE); this.setTooltip(Blockly.Msg.TURTLE_CLONE_TOOLTIP); this.setOutput(true); } }; export const turtle_bgcolor_hex_new = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_bgcolor); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_pencolor_hex_new = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_pencolor); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_fillcolor_hex_new = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_fillcolor); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_color = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_turtle_pencolor) .appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME'); this.appendDummyInput() .appendField(Blockly.Msg.blockpy_turtle_fillcolor) .appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME2'); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_color_hex = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR1') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_pencolor); this.appendValueInput('VAR2') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_fillcolor); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_bgcolor_hex = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_bgcolor_hex); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_pencolor_hex = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_pencolor_hex); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_fillcolor_hex = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_fillcolor_hex); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_shape = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') var shape = [ [Blockly.Msg.blockpy_turtle_shape_arrow, 'arrow'], [Blockly.Msg.blockpy_turtle_shape_turtle, 'turtle'], [Blockly.Msg.blockpy_turtle_shape_circle, 'circle'], [Blockly.Msg.blockpy_turtle_shape_square, 'square'], [Blockly.Msg.blockpy_turtle_shape_triangle, 'triangle'], [Blockly.Msg.blockpy_turtle_shape_classic, 'classic'] ]; this.setColour(TURTLE_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.blockpy_turtle_shape) .appendField(new Blockly.FieldDropdown(shape), 'DIR'); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.TURTLE_SHAPE_TOOLTIP); } }; export const turtle_shapesize = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE); this.appendValueInput('WID') .setCheck(Number) .appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE_WID); this.appendValueInput('LEN') .setCheck(Number) .appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE_LEN); this.appendValueInput('OUTLINE') .setCheck(Number) .appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE_OUTLINE); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SHAPESIZE); } }; export const turtle_numinput = { init: function () { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_NUMINPUT) this.setColour(TURTLE_HUE); this.appendValueInput('TITLE') .setCheck(String) .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_TITLE); this.appendValueInput('PROMPT') .setCheck(String) .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_PROMPT); this.appendValueInput('DEFAULT') .setCheck(Number) .appendField(Blockly.Msg.DICTS_DEFAULT_VALUE); this.appendValueInput('MIN') .setCheck(Number) .appendField(Blockly.Msg.MATH_ONLIST_OPERATOR_MIN); this.appendValueInput('MAX') .setCheck(Number) .appendField(Blockly.Msg.MATH_ONLIST_OPERATOR_MAX); this.setInputsInline(true); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.TURTLE_NUMINPUT_TOOLTIP); } }; export const turtle_textinput = { init: function () { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT) this.setColour(TURTLE_HUE); this.appendValueInput('TITLE') .setCheck(String) .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_TITLE); this.appendValueInput('PROMPT') .setCheck(String) .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_PROMPT); this.setInputsInline(true); this.setOutput(true, String); this.setTooltip(Blockly.Msg.TURTLE_TEXTINPUT_TOOLTIP); } }; export const turtle_write = { init: function () { this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_write); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.TURTLE_WRITE_TOOLTIP); } }; export const turtle_write_format = { init: function () { var move = [[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True']]; var align = [[Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_LEFT, 'left'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER, 'center'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_RIGHT, 'right']]; var fonttype = [[Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_NORMAL, 'normal'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_BOLD, 'bold'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_ITALIC, 'italic'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_BOLD_ITALIC, 'bold","italic']]; this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_write); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE) .appendField(new Blockly.FieldDropdown(move), 'MOVE'); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN) .appendField(new Blockly.FieldDropdown(align), 'ALIGN'); this.appendValueInput('FONTNAME') .setCheck(String) .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NAME); this.appendValueInput('FONTNUM') .setCheck(Number) .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE) .appendField(new Blockly.FieldDropdown(fonttype), 'FONTTYPE'); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.TURTLE_WRITE_TOOLTIP); } }; export const turtle_write_format_skulpt = { init: function () { var move = [[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True']]; var align = [[Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_LEFT, 'left'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER, 'center'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_RIGHT, 'right']]; var fonttype = [[Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_NORMAL, 'normal'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_BOLD, 'bold'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_ITALIC, 'italic']]; this.appendValueInput('TUR') .setCheck('Turtle') this.setColour(TURTLE_HUE); this.appendValueInput('VAR') .setCheck(String) .appendField(Blockly.Msg.blockpy_turtle_write); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE) .appendField(new Blockly.FieldDropdown(move), 'MOVE'); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN) .appendField(new Blockly.FieldDropdown(align), 'ALIGN'); this.appendValueInput('FONTNAME') .setCheck(String) .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NAME); this.appendValueInput('FONTNUM') .setCheck(Number) .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE) .appendField(new Blockly.FieldDropdown(fonttype), 'FONTTYPE'); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.TURTLE_WRITE_TOOLTIP); } }; export const turtle_color_seclet = { init: function () { this.setColour(TURTLE_HUE); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) .appendField(new Blockly.FieldColour("ff0000"), "COLOR"); this.setInputsInline(true); this.setOutput(true, String); } }; export const turtle_getscreen = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') .setCheck('Turtle') this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTEL_GETSCREEN) .appendField(new Blockly.FieldTextInput('screen'), 'VAR') this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_TURTEL_GETSCREEN_TOOLTIP); }, getVars: function () { return [this.getFieldValue('VAR')]; }, renameVar: function (oldName, newName) { if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { this.setTitleValue(newName, 'VAR'); } } } export const turtle_update = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR'); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_TURTLE_UPDATE); this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONKEY_TOOLTIP); } }; export const turtle_onkey = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') this.appendValueInput('VAR') .appendField(Blockly.Msg.MIXLY_TURTEL_EVENT_ONKEY); this.appendValueInput('callback') .appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE) this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONKEY_TOOLTIP); } }; export const turtle_onclick = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TURTEL_EVENT_ONCLICK); this.appendValueInput('callback') .appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE) this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONCLICK_TOOLTIP); } }; export const turtle_ontimer = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') this.appendValueInput('VAR') .appendField(Blockly.Msg.MIXLY_TURTEL_EVENT_ONTIMER); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_mSecond); this.appendValueInput('callback') .appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE) this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONTIMER_TOOLTIP); } }; export const turtle_listen = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_TURTEL_SCREEN_LISTEN); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); } }; export const turtle_screen_savefig = { init: function () { this.setColour(TURTLE_HUE); this.appendValueInput('TUR') this.appendValueInput("FILE") .setCheck(String) .appendField(Blockly.Msg.mixpy_PL_SAVEFIG); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setOutput(false); this.setTooltip(Blockly.Msg.mixpy_TURTLE_SAVEFIG_TOOLTIP); } };