using System; using System.Collections.Generic; using System.Linq; namespace WebMrbc { public class MemFileOpenBlock : Block { public const string type_name = "memfile_open"; public MemFileOpenBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルをオープンします") .appendField(App.TargetBoard.MemFileHandles(), "MEM_FILE_NO"); this.appendValueInput("FILENAME") .setCheck("String") .appendField("ファイル名(8.3形式)"); this.appendDummyInput() .appendField("モード") .appendField(new FieldDropdown(new[] { new[] { "Read", "EEP_READ" }, new[] { "Append", "EEP_APPEND" }, new[] { "New Create", "EEP_WRITE" } }), "EEP_OPEN_MODE"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class MemFileCloseBlock : Block { public const string type_name = "memfile_close"; public MemFileCloseBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルをクローズします") .appendField(App.TargetBoard.MemFileHandles(), "MEM_FILE_NO"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class MemFileReadBlock : Block { public const string type_name = "memfile_read"; public MemFileReadBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルから1バイト読み込みます") .appendField(App.TargetBoard.MemFileHandles(), "MEM_FILE_NO"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class MemFileWriteBlock : Block { public const string type_name = "memfile_write"; public MemFileWriteBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルにバイナリデータを書き込みます") .appendField(App.TargetBoard.MemFileHandles(), "MEM_FILE_NO"); this.appendValueInput("DATA") .setCheck("String") .appendField("データ"); this.appendValueInput("LENGTH") .setCheck("Number") .appendField("データサイズ"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class MemFileSeekBlock : Block { public const string type_name = "memfile_seek"; public MemFileSeekBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルの読み出し位置を移動する") .appendField(App.TargetBoard.MemFileHandles(), "MEM_FILE_NO"); this.appendValueInput("POSITION") .setCheck("Number") .appendField("seekするバイト数"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class MemFileCpBlock : Block { public const string type_name = "memfile_cp"; public MemFileCpBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルをコピーします"); this.appendValueInput("SRC_FILENAME") .setCheck("String") .appendField("コピー元ファイル名"); this.appendValueInput("DST_FILENAME") .setCheck("String") .appendField("コピー先ファイル名"); this.appendDummyInput() .appendField("モード") .appendField(new FieldDropdown(new[] { new[] { "上書きしない", "NO_OVERWRITE" }, new[] { "上書きする", "OVERWRITE" } }), "EEP_CP_MODE"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class MemFileRmBlock : Block { public const string type_name = "memfile_rm"; public MemFileRmBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルを削除します"); this.appendValueInput("FILENAME") .setCheck("String") .appendField("削除するファイル名"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } partial class Ruby { public node memfile_open(MemFileOpenBlock block) { var dropdown_mem_file_no = block.getFieldValue("MEM_FILE_NO"); var value_filename = valueToCode(block, "FILENAME"); var dropdown_eep_open_mode = block.getFieldValue("EEP_OPEN_MODE"); var c = new const_node(this, intern("MemFile")); var p = new node[] { new int_node(this, App.TargetBoard.MemFileHandlerNameToNum(dropdown_mem_file_no)), value_filename, new int_node(this, App.TargetBoard.MemOpenModeNameToNum(dropdown_eep_open_mode)) }; return new call_node(this, c, intern("open"), p, null); } public node memfile_close(MemFileCloseBlock block) { var dropdown_mem_file_no = block.getFieldValue("MEM_FILE_NO"); var c = new const_node(this, intern("MemFile")); var p = new node[] { new int_node(this, App.TargetBoard.MemFileHandlerNameToNum(dropdown_mem_file_no)), }; return new call_node(this, c, intern("close"), p, null); } public node memfile_read(MemFileReadBlock block) { var dropdown_mem_file_no = block.getFieldValue("MEM_FILE_NO"); var c = new const_node(this, intern("MemFile")); var p = new node[] { new int_node(this, App.TargetBoard.MemFileHandlerNameToNum(dropdown_mem_file_no)), }; return new call_node(this, c, intern("read"), p, null); } public node memfile_write(MemFileWriteBlock block) { var dropdown_mem_file_no = block.getFieldValue("MEM_FILE_NO"); var value_data = valueToCode(block, "DATA"); var value_length = valueToCode(block, "LENGTH"); var c = new const_node(this, intern("MemFile")); var p = new node[] { new int_node(this, App.TargetBoard.MemFileHandlerNameToNum(dropdown_mem_file_no)), value_data, value_length, }; return new call_node(this, c, intern("write"), p, null); } public node memfile_seek(MemFileSeekBlock block) { var dropdown_mem_file_no = block.getFieldValue("MEM_FILE_NO"); var value_position = valueToCode(block, "POSITION"); var c = new const_node(this, intern("MemFile")); var p = new node[] { new int_node(this, App.TargetBoard.MemFileHandlerNameToNum(dropdown_mem_file_no)), value_position, }; return new call_node(this, c, intern("seek"), p, null); } public node memfile_cp(MemFileCpBlock block) { var value_src_filename = valueToCode(block, "SRC_FILENAME"); var value_dst_filename = valueToCode(block, "DST_FILENAME"); var dropdown_eep_cp_mode = block.getFieldValue("EEP_CP_MODE"); var c = new const_node(this, intern("MemFile")); var p = new node[] { value_dst_filename, value_dst_filename, new int_node(this, App.TargetBoard.MemCpModeNameToNum(dropdown_eep_cp_mode)) }; return new call_node(this, c, intern("cp"), p, null); } public node memfile_rm(MemFileRmBlock block) { var value_filename = valueToCode(block, "FILENAME"); var c = new const_node(this, intern("MemFile")); var p = new node[] { value_filename, }; return new call_node(this, c, intern("rm"), p, null); } } }