using System; using System.Collections.Generic; using System.Linq; namespace WebMrbc { public class RtcYearBlock : Block { public const string type_name = "rtc_year"; public RtcYearBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldNumber("2017", 2000, 2099, 1), "VALUE"); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip("年(2000-2099)"); this.setHelpUrl("http://www.example.com/"); } } public class RtcMonthBlock : Block { public const string type_name = "rtc_month"; public RtcMonthBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldNumber("1", 1, 12, 1), "VALUE"); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip("月(1-12)"); this.setHelpUrl("http://www.example.com/"); } } public class RtcDayBlock : Block { public const string type_name = "rtc_day"; public RtcDayBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldNumber("1", 1, 31, 1), "VALUE"); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip("日(1-31)"); this.setHelpUrl("http://www.example.com/"); } } public class RtcHourBlock : Block { public const string type_name = "rtc_hour"; public RtcHourBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldNumber("0", 0, 23, 1), "VALUE"); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip("時(0-23)"); this.setHelpUrl("http://www.example.com/"); } } public class RtcMinuteBlock : Block { public const string type_name = "rtc_minute"; public RtcMinuteBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldNumber("0", 0, 59, 1), "VALUE"); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip("分(0-59)"); this.setHelpUrl("http://www.example.com/"); } } public class RtcSecondBlock : Block { public const string type_name = "rtc_second"; public RtcSecondBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldNumber("0", 0, 59, 1), "VALUE"); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip("秒(0-59)"); this.setHelpUrl("http://www.example.com/"); } } public class RtcWeekDayBlock : Block { public const string type_name = "rtc_weekday"; public RtcWeekDayBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldDropdown(new[] { new[] { "日曜", "0" }, new[] { "月曜", "1" }, new[] { "火曜", "2" }, new[] { "水曜", "3" }, new[] { "木曜", "4" }, new[] { "金曜", "5" }, new[] { "土曜", "6" } }), "VALUE"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class RtcDateTimeBlock : Block { public const string type_name = "rtc_datetime"; public RtcDateTimeBlock() : base(type_name) { } public void init() { this.appendValueInput("YEAR") .setCheck("Number") .appendField("年"); this.appendValueInput("MONTH") .setCheck("Number") .appendField("月"); this.appendValueInput("DAY") .setCheck("Number") .appendField("日"); this.appendValueInput("HOUR") .setCheck("Number") .appendField("時"); this.appendValueInput("MINUTE") .setCheck("Number") .appendField("分"); this.appendValueInput("SECOND") .setCheck("Number") .appendField("秒"); this.setInputsInline(true); this.setOutput(true, "Array"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class RtcDateTimeItemBlock : Block { public const string type_name = "rtc_get_datetime_item"; public RtcDateTimeItemBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldVariable("item"), "ARRAY") .appendField(new FieldDropdown(new[] { new[] {"年", "0" }, new[] {"月", "1" }, new[] {"日", "2" }, new[] {"時", "3" }, new[] {"分", "4" }, new[] {"秒", "5" }, new[] {"週", "6" } }), "ITEM"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class RtcSetDateTimeItemBlock : Block { public const string type_name = "rtc_set_datetime_item"; public RtcSetDateTimeItemBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField(new FieldVariable("item"), "ARRAY") .appendField("の") .appendField(new FieldDropdown(new[] { new[] {"年", "0" }, new[] {"月", "1" }, new[] {"日", "2" }, new[] {"時", "3" }, new[] {"分", "4" }, new[] {"秒", "5" }, new[] {"週", "6" } }), "ITEM") .appendField("に"); this.appendValueInput("VALUE") .setCheck("Number"); this.appendDummyInput() .appendField("を設定"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class RtcGetTimeBlock : Block { public const string type_name = "rtc_gettime"; public RtcGetTimeBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("RTCの時計を取得します"); this.setInputsInline(true); this.setOutput(true, "Array"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class RtcSettimeBlock : Block { public const string type_name = "rtc_settime"; public RtcSettimeBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("RTCの時計をセットします"); this.appendValueInput("DATE") .setCheck("Array"); this.setInputsInline(true); this.setOutput(true, "Boolean"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class RtcDeinitBlock : Block { public const string type_name = "rtc_deinit"; public RtcDeinitBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("RTCを停止します"); this.setInputsInline(true); this.setOutput(true, "Boolean"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class RtcInitBlock : Block { public const string type_name = "rtc_init"; public RtcInitBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("RTCを起動します"); this.setInputsInline(true); this.setOutput(true, "Number"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } partial class Ruby { public node rtc_year(RtcYearBlock block) { var value = block.getFieldValue("VALUE"); return new int_node(this, value == null ? 0 : Bridge.Script.ParseInt(value, 10)); } public node rtc_month(RtcMonthBlock block) { var value = block.getFieldValue("VALUE"); return new int_node(this, value == null ? 0 : Bridge.Script.ParseInt(value, 10)); } public node rtc_day(RtcDayBlock block) { var value = block.getFieldValue("VALUE"); return new int_node(this, value == null ? 0 : Bridge.Script.ParseInt(value, 10)); } public node rtc_hour(RtcHourBlock block) { var value = block.getFieldValue("VALUE"); return new int_node(this, value == null ? 0 : Bridge.Script.ParseInt(value, 10)); } public node rtc_minute(RtcMinuteBlock block) { var value = block.getFieldValue("VALUE"); return new int_node(this, value == null ? 0 : Bridge.Script.ParseInt(value, 10)); } public node rtc_second(RtcSecondBlock block) { var value = block.getFieldValue("VALUE"); return new int_node(this, value == null ? 0 : Bridge.Script.ParseInt(value, 10)); } public node rtc_weekday(RtcWeekDayBlock block) { var value = block.getFieldValue("VALUE"); return new int_node(this, value == null ? 0 : Bridge.Script.ParseInt(value, 10)); } public node rtc_datetime(RtcDateTimeBlock block) { var array = new node[] { valueToCode(block, "YEAR"), valueToCode(block, "MONTH"), valueToCode(block, "DAY"), valueToCode(block, "HOUR"), valueToCode(block, "MINUTE"), valueToCode(block, "SECOND"), }; return new array_node(this, array); } public node rtc_get_datetime_item(RtcDateTimeItemBlock block) { var value_array = block.getFieldValue("ARRAY"); var value_item = block.getFieldValue("ITEM"); var a = new_var_node(get_var_name(value_array)); var p = new node[] { new int_node(this, value_item == null ? 0 : Bridge.Script.ParseInt(value_item, 10)) }; return new call_node(this, a, intern("[]"), p, null); } public node rtc_set_datetime_item(RtcSetDateTimeItemBlock block) { var value_array = block.getFieldValue("ARRAY"); var value_item = block.getFieldValue("ITEM"); var a = new_var_node(get_var_name(value_array)); var p = new node[] { new int_node(this, value_item == null ? 0 : Bridge.Script.ParseInt(value_item, 10)) }; var b = valueToCode(block, "VALUE"); return new asgn_node(this, new call_node(this, a, intern("[]"), p, null), b); } public node rtc_gettime(RtcGetTimeBlock block) { var c = new const_node(this, intern("Rtc")); var p = new node[0]; return new call_node(this, c, intern("getTime"), p, null); } public node rtc_settime(RtcSettimeBlock block) { var value_date = valueToCode(block, "DATE"); var c = new const_node(this, intern("Rtc")); var p = new node[] { value_date }; return new call_node(this, c, intern("setTime"), p, null); } public node rtc_deinit(RtcDeinitBlock block) { var c = new const_node(this, intern("Rtc")); var p = new node[0]; return new call_node(this, c, intern("deinit"), p, null); } public node rtc_init(RtcInitBlock block) { var c = new const_node(this, intern("Rtc")); var p = new node[0]; return new call_node(this, c, intern("init"), p, null); } } }