update: implemented theme

This commit is contained in:
ocogeclub 2021-01-20 22:26:39 +09:00
parent 75a4e94f64
commit e2698596b8
3 changed files with 228 additions and 178 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -235,7 +235,7 @@
body { body {
background-color: #fff; background-color: #fff;
font-family: sans-serif; font-family: "Noto Sans CJK JP Regular", sans-serif;
overflow: hidden; overflow: hidden;
} }
@ -243,11 +243,7 @@
height: 99%; height: 99%;
} }
/* ツールボックス背景色 */ /* ツールボックス関連 */
div#blocklyDiv .blocklyToolboxDiv {
background: aliceblue;
}
/* スクロールバー非表示(撮影用) */ /* スクロールバー非表示(撮影用) */
div#blocklyDiv .blocklyToolboxDiv::-webkit-scrollbar { div#blocklyDiv .blocklyToolboxDiv::-webkit-scrollbar {
display: none; display: none;
@ -267,7 +263,7 @@
/* Makes our label white. */ /* Makes our label white. */
.blocklyTreeLabel { .blocklyTreeLabel {
color: white; font-family: 'Noto Sans CJK JP Light';
} }
/* Adds padding around the group of categories and separators. */ /* Adds padding around the group of categories and separators. */
@ -300,14 +296,13 @@
} }
/* Override Flyout BGColor */ /* Override Flyout BGColor */
.blocklyFlyoutBackground { /* .blocklyFlyoutBackground {
fill: lavender; fill: lavender;
} } */
/* Override Flyout TextColor */ /* Override Flyout TextColor */
.blocklyFlyoutLabelText { /* .blocklyFlyoutLabelText {
fill: steelblue !important; fill: steelblue !important;
} } */
/* ツールバー */ /* ツールバー */
div.toolbar { div.toolbar {
@ -707,7 +702,7 @@
<category name="関数" css-icon="customIcon fas fa-yin-yang" categorystyle="procedure_category" custom="PROCEDURE"> <category name="関数" css-icon="customIcon fas fa-yin-yang" categorystyle="procedure_category" custom="PROCEDURE">
</category> </category>
<sep></sep> <sep></sep>
<category name="GPIO" colour="%{BKY_UGJ_GPIO_HUE}" css-icon="customIcon fab fa-raspberry-pi"> <category name="GPIO" css-icon="customIcon fab fa-raspberry-pi" categorystyle="gpio_category">
<label text="基本"></label> <label text="基本"></label>
<block type="ugj_gpio_start"></block> <block type="ugj_gpio_start"></block>
<block type="ugj_gpio_stop"></block> <block type="ugj_gpio_stop"></block>
@ -854,7 +849,7 @@
</block> </block>
<label text="_" web-line="4.0" web-line-width="200"></label> <label text="_" web-line="4.0" web-line-width="200"></label>
</category> </category>
<category name="マルチメディア" colour="%{BKY_UGJ_MULTIMEDIA_HUE}" css-icon="customIcon fas fa-gamepad"> <category name="マルチメディア" css-icon="customIcon fas fa-gamepad" categorystyle="multimedia_category">
<label text="キャンバス" web-line="4.0" web-line-width="200"></label> <label text="キャンバス" web-line="4.0" web-line-width="200"></label>
<block type="ugj_canvas_init"></block> <block type="ugj_canvas_init"></block>
<block type="ugj_canvas_clearrect"> <block type="ugj_canvas_clearrect">
@ -1011,7 +1006,7 @@
<label text="_" web-line="4.0" web-line-width="200"></label> <label text="_" web-line="4.0" web-line-width="200"></label>
</category> </category>
<category name="ネットワーク" colour="%{BKY_UGJ_NETWORK_HUE}" css-icon="customIcon fas fa-wifi"> <category name="ネットワーク" css-icon="customIcon fas fa-wifi" categorystyle="network_category">
<label text="基本" web-line="4.0" web-line-width="200"></label> <label text="基本" web-line="4.0" web-line-width="200"></label>
<block type="ugj_network_axios_geturl"> <block type="ugj_network_axios_geturl">
<value name="url"> <value name="url">
@ -1083,7 +1078,7 @@
</block> </block>
<label text="_" web-line="4.0" web-line-width="200"></label> <label text="_" web-line="4.0" web-line-width="200"></label>
</category> </category>
<category name="特殊" colour="%{BKY_UGJ_SPECIAL_HUE}" css-icon="customIcon fas fa-plug"> <category name="特殊" css-icon="customIcon fas fa-plug" categorystyle="special_category">
<label text="出入力" web-line="4.0" web-line-width="200"></label> <label text="出入力" web-line="4.0" web-line-width="200"></label>
<block type="ugj_canvas_say"> <block type="ugj_canvas_say">
<value name="say"> <value name="say">
@ -1309,7 +1304,7 @@
</block> </block>
<label text="_" web-line="4.0" web-line-width="200"></label> <label text="_" web-line="4.0" web-line-width="200"></label>
</category> </category>
<category name="スニペット" colour="%{BKY_UGJ_SNIPPETS_HUE}" css-icon="customIcon fas fa-egg"> <category name="スニペット" css-icon="customIcon fas fa-egg" categorystyle="snippets_category">
</category> </category>
</xml> </xml>
@ -1326,7 +1321,70 @@
const testfunc = () => { const testfunc = () => {
elec.openURL('http://ocoge.club'); elec.openURL('http://ocoge.club');
} }
//============ User Customize Start =============== //============ User Customize Start ===============
// テーマ
// カスタムブロックカラー定義
Blockly.HSV_SATURATION = 0.55;
Blockly.HSV_VALUE = 0.75;
var gpio_color = '0';
var multimedia_color = '240';
var network_color = '340';
var special_color = '20';
var snippets_color = '90';
// Blockly.Msg.UGJ_GPIO_HUE = 0;//FF7799
// Blockly.Msg.UGJ_MULTIMEDIA_HUE = 240;//CF63CF
// Blockly.Msg.UGJ_NETWORK_HUE = 340;//"#54C4EA"
// Blockly.Msg.UGJ_SPECIAL_HUE = 20;//"#0FBD8C"
// Blockly.Msg.UGJ_SNIPPETS_HUE = 90;
var theme = Blockly.Theme.defineTheme('ocoge', {
'base': Blockly.Themes.Classic,
'fontStyle': { "family": "Noto Sans CJK JP Light" },
'startHats': true,
'componentStyles': {
'toolboxBackgroundColour': 'aliceblue',
'flyoutBackgroundColour': 'lavender',
'toolboxForegroundColour': 'white',
'flyoutForegroundColour': 'steelblue'
},
'blockStyles': {
'gpio_blocks': {
"colourPrimary": gpio_color
},
'multimedia_blocks': {
"colourPrimary": multimedia_color
},
'network_blocks': {
"colourPrimary": network_color
},
'special_blocks': {
"colourPrimary": special_color
},
'snippets_blocks': {
"colourPrimary": snippets_color
}
},
'categoryStyles': {
"gpio_category": {
"colour": gpio_color
},
"multimedia_category": {
"colour": multimedia_color
},
"network_category": {
"colour": network_color
},
"special_category": {
"colour": special_color
},
"snippets_category": {
"colour": snippets_color
}
},
});
// Customize messages // Customize messages
Blockly.Msg["CONTROLS_IF_MSG_THEN"] = "ならば"; Blockly.Msg["CONTROLS_IF_MSG_THEN"] = "ならば";
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = ""; Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "";
@ -1334,15 +1392,6 @@
Blockly.Msg["VARIABLES_SET"] = "変数 %1 を %2 にする"; Blockly.Msg["VARIABLES_SET"] = "変数 %1 を %2 にする";
Blockly.Msg["TEXT_PRINT_TITLE"] = "ダイアログに %1 を表示"; Blockly.Msg["TEXT_PRINT_TITLE"] = "ダイアログに %1 を表示";
// Block color
Blockly.HSV_SATURATION = 0.55;
Blockly.HSV_VALUE = 0.75;
Blockly.Msg.UGJ_GPIO_HUE = 0;//FF7799
Blockly.Msg.UGJ_MULTIMEDIA_HUE = 240;//CF63CF
Blockly.Msg.UGJ_NETWORK_HUE = 340;//"#54C4EA"
Blockly.Msg.UGJ_SPECIAL_HUE = 20;//"#0FBD8C"
Blockly.Msg.UGJ_SNIPPETS_HUE = 90;
// Customize Toolbox // Customize Toolbox
class CustomCategory extends Blockly.ToolboxCategory { class CustomCategory extends Blockly.ToolboxCategory {
/** Constructor for a custom category. @override */ /** Constructor for a custom category. @override */
@ -1687,6 +1736,7 @@
var workspace = Blockly.inject(blocklyDiv, var workspace = Blockly.inject(blocklyDiv,
{ {
toolbox: document.getElementById('toolbox'), toolbox: document.getElementById('toolbox'),
theme: theme,
scrollbars: true, scrollbars: true,
grid: { grid: {

View File

@ -153,7 +153,7 @@ Blockly.Blocks['ugj_gpio_start'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("GPIOを初期化して接続します。"); this.setTooltip("GPIOを初期化して接続します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -173,7 +173,7 @@ Blockly.Blocks['ugj_gpio_start_remote'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("他のマシンのリモートGPIOに接続します。"); this.setTooltip("他のマシンのリモートGPIOに接続します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -194,7 +194,7 @@ Blockly.Blocks['ugj_gpio_stop'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("GPIOとの接続を終了します。"); this.setTooltip("GPIOとの接続を終了します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -217,7 +217,7 @@ Blockly.Blocks['ugj_gpio_setoutput'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("GPIO端子のモードを出力に設定します。"); this.setTooltip("GPIO端子のモードを出力に設定します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -242,7 +242,7 @@ Blockly.Blocks['ugj_gpio_setinput'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("GPIO端子を入力モードにして、プルアップ・プルダウンを設定します。"); this.setTooltip("GPIO端子を入力モードにして、プルアップ・プルダウンを設定します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -268,7 +268,7 @@ Blockly.Blocks['ugj_gpio_read'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "Number"); this.setOutput(true, "Number");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("GPIO端子の値をデジタル値0または1で読み取ります。"); this.setTooltip("GPIO端子の値をデジタル値0または1で読み取ります。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -295,7 +295,7 @@ Blockly.Blocks['ugj_gpio_write'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("GPIO端子の値をデジタル値0または1で出力します。"); this.setTooltip("GPIO端子の値をデジタル値0または1で出力します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -323,7 +323,7 @@ Blockly.Blocks['ugj_gpio_servo'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("サーボモータの回転をパルス幅(10002000μsec)までの数値で指定します。"); this.setTooltip("サーボモータの回転をパルス幅(10002000μsec)までの数値で指定します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -350,7 +350,7 @@ Blockly.Blocks['ugj_gpio_setpwmfreqrange'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("パルス周波数をセットして、GPIO端子がPWM出力できるようにします。レンジは100固定です。"); this.setTooltip("パルス周波数をセットして、GPIO端子がPWM出力できるようにします。レンジは100固定です。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -382,7 +382,7 @@ Blockly.Blocks['ugj_gpio_setpwmdutycycle'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("デューティ比(1100%)を指定して出力を開始します。0を指定すると出力を停止します。事前に必ずパルス周波数ブロックが実行されるようにしてください。"); this.setTooltip("デューティ比(1100%)を指定して出力を開始します。0を指定すると出力を停止します。事前に必ずパルス周波数ブロックが実行されるようにしてください。");
this.setHelpUrl("https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E6%AF%94"); this.setHelpUrl("https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E6%AF%94");
} }
@ -409,7 +409,7 @@ Blockly.Blocks['ugj_gpio_serialopen'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("シリアルデバイスとの接続を開きます。"); this.setTooltip("シリアルデバイスとの接続を開きます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -430,7 +430,7 @@ Blockly.Blocks['ugj_serial_close'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("シリアルデバイスとの接続を閉じます。"); this.setTooltip("シリアルデバイスとの接続を閉じます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -453,7 +453,7 @@ Blockly.Blocks['ugj_serial_write'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("シリアル接続されたデバイスにデータを送信します。シリアルポートは開かれていなくてはいけません。"); this.setTooltip("シリアル接続されたデバイスにデータを送信します。シリアルポートは開かれていなくてはいけません。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -477,7 +477,7 @@ Blockly.Blocks['ugj_gpio_serialread'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, null); this.setOutput(true, null);
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("オープン済みシリアルポートから、指定のバイト数だけデータを読み込みます。"); this.setTooltip("オープン済みシリアルポートから、指定のバイト数だけデータを読み込みます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -501,7 +501,7 @@ Blockly.Blocks['ugj_gpio_i2copen'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("I2C接続されたデバイスとの通信を開始します。一度にオープンできるI2Cデバイスはひとつだけです。"); this.setTooltip("I2C接続されたデバイスとの通信を開始します。一度にオープンできるI2Cデバイスはひとつだけです。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -521,7 +521,7 @@ Blockly.Blocks['ugj_gpio_i2cclose'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("I2C接続されたデバイスと通信を切断します。"); this.setTooltip("I2C接続されたデバイスと通信を切断します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -548,7 +548,7 @@ Blockly.Blocks['ugj_gpio_i2cwritebyte'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("デバイスの指定されたレジスタに1バイトを書き込みます。"); this.setTooltip("デバイスの指定されたレジスタに1バイトを書き込みます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -573,7 +573,7 @@ Blockly.Blocks['ugj_gpio_i2creadbyte'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, null); this.setOutput(true, null);
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("デバイスの指定されたレジスタから1バイトを読み込みます。"); this.setTooltip("デバイスの指定されたレジスタから1バイトを読み込みます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -602,7 +602,7 @@ Blockly.Blocks['ugj_dht'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("温湿度センサー DHT11/DHT22 を使用して気温と湿度を読み取ります。"); this.setTooltip("温湿度センサー DHT11/DHT22 を使用して気温と湿度を読み取ります。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -639,7 +639,7 @@ Blockly.Blocks['ugj_gpio_sleep'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("実行環境全体を完全に一時停止します。停止中はすべての操作ができなくなります。※実験用"); this.setTooltip("実行環境全体を完全に一時停止します。停止中はすべての操作ができなくなります。※実験用");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -660,7 +660,7 @@ Blockly.Blocks['ugj_library_tensorflow'] = {
this.appendDummyInput() this.appendDummyInput()
.appendField("TensorFlowによる画像認識推論"); .appendField("TensorFlowによる画像認識推論");
this.setOutput(true, "Library"); this.setOutput(true, "Library");
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("tensorflow.jsをロードし、推論ができるようにします。"); this.setTooltip("tensorflow.jsをロードし、推論ができるようにします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -679,7 +679,7 @@ Blockly.Blocks['ugj_tfpredict_init'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("画像認識(推論)をするためのビデオストリームを表示します。"); this.setTooltip("画像認識(推論)をするためのビデオストリームを表示します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -705,7 +705,7 @@ Blockly.Blocks['ugj_tfpredict_loadmodel'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("ardamavi氏による指数え画像データセットをPonDad氏がts.js用モデルにコンバートしたものです。"); this.setTooltip("ardamavi氏による指数え画像データセットをPonDad氏がts.js用モデルにコンバートしたものです。");
this.setHelpUrl("https://github.com/PonDad/manatee"); this.setHelpUrl("https://github.com/PonDad/manatee");
} }
@ -727,7 +727,7 @@ Blockly.Blocks['ugj_tfpredict_predict'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("読み込んだモデルを使用してカメラ画像から画像認識を行い、変数に代入します。"); this.setTooltip("読み込んだモデルを使用してカメラ画像から画像認識を行い、変数に代入します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -768,7 +768,7 @@ Blockly.Blocks['ugj_face_library'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "Library"); this.setOutput(true, "Library");
// this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); // this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("face-api.jsをロードし、顔認識ができるようにします。"); this.setTooltip("face-api.jsをロードし、顔認識ができるようにします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -784,7 +784,7 @@ Blockly.Blocks['ugj_face_init'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("顔認識のためのビデオストリームを開始します。"); this.setTooltip("顔認識のためのビデオストリームを開始します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -805,7 +805,7 @@ Blockly.Blocks['ugj_face_display'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("カメラの映像を画像エリアに表示します。必須ではないブロックです。"); this.setTooltip("カメラの映像を画像エリアに表示します。必須ではないブロックです。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -835,7 +835,7 @@ Blockly.Blocks['ugj_face_detect'] = {
.setCheck(null); .setCheck(null);
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("顔を発見したら動作します。"); this.setTooltip("顔を発見したら動作します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -875,7 +875,7 @@ Blockly.Blocks['ugj_face_drawrect'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("顔の位置に四角形を表示します。"); this.setTooltip("顔の位置に四角形を表示します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -910,7 +910,7 @@ Blockly.Blocks['ugj_canvas_say'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("キャンバスにフキダシを作ります。"); this.setTooltip("キャンバスにフキダシを作ります。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -934,7 +934,7 @@ Blockly.Blocks['ugj_canvas_init'] = {
.appendField("キャンバスを表示"); .appendField("キャンバスを表示");
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("キャンバスを表示し、使用できるようにします。"); this.setTooltip("キャンバスを表示し、使用できるようにします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -960,7 +960,7 @@ Blockly.Blocks['ugj_canvas_finalize'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("使ったキャンバスを片付けます。"); this.setTooltip("使ったキャンバスを片付けます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -983,7 +983,7 @@ Blockly.Blocks['ugj_canvas_loadimg'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("画像ファイルの内容をキャンバス上にロードします。"); this.setTooltip("画像ファイルの内容をキャンバス上にロードします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1021,7 +1021,7 @@ Blockly.Blocks['ugj_canvas_clearrect'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("長方形に図形を消去します。左上の頂点の座標と、幅・高さを指定します。"); this.setTooltip("長方形に図形を消去します。左上の頂点の座標と、幅・高さを指定します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1046,7 +1046,7 @@ Blockly.Blocks['ugj_canvas_width'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, null); this.setOutput(true, null);
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("キャンバスの幅を取得します。"); this.setTooltip("キャンバスの幅を取得します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1065,7 +1065,7 @@ Blockly.Blocks['ugj_canvas_height'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "Number"); this.setOutput(true, "Number");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("キャンバスの高さを取得します。"); this.setTooltip("キャンバスの高さを取得します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1099,7 +1099,7 @@ Blockly.Blocks['ugj_canvas_drawcircle'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("円を描画します。"); this.setTooltip("円を描画します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1145,7 +1145,7 @@ Blockly.Blocks['ugj_canvas_drawrect'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("キャンバス上に長方形を描画します。"); this.setTooltip("キャンバス上に長方形を描画します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1182,7 +1182,7 @@ Blockly.Blocks['ugj_event_key'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("キーボードを押したり離したりした時のアクションです。"); this.setTooltip("キーボードを押したり離したりした時のアクションです。");
this.setHelpUrl("https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent/key/Key_Values"); this.setHelpUrl("https://developer.mozilla.org/ja/docs/Web/API/KeyboardEvent/key/Key_Values");
} }
@ -1212,7 +1212,7 @@ Blockly.Blocks['ugj_sound_play'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("音を鳴らします。"); this.setTooltip("音を鳴らします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1249,7 +1249,7 @@ Blockly.Blocks['ugj_multimedia_cloudspeech_recognition'] = {
.appendField("停止したら"); .appendField("停止したら");
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true); this.setPreviousStatement(true);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("Google Cloud Speech API による音声認識を行います。言葉を検知したらステートメントが実行されます。認識途中の暫定結果を取得することもできます。"); this.setTooltip("Google Cloud Speech API による音声認識を行います。言葉を検知したらステートメントが実行されます。認識途中の暫定結果を取得することもできます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1352,7 +1352,7 @@ Blockly.Blocks['ugj_multimedia_webspeech_recognition'] = {
.appendField("停止したら"); .appendField("停止したら");
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true); this.setPreviousStatement(true);
this.setColour(Blockly.Msg.UGJ_MULTIMEDIA_HUE); this.setStyle('multimedia_blocks')
this.setTooltip("Web Speech API による音声認識を行います。言葉を検知したらステートメントが実行されます。認識途中の暫定結果を取得することもできます。"); this.setTooltip("Web Speech API による音声認識を行います。言葉を検知したらステートメントが実行されます。認識途中の暫定結果を取得することもできます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1419,7 +1419,7 @@ Blockly.Blocks['ugj_socket'] = {
.appendField("が来たら"); .appendField("が来たら");
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("TCP接続(Telnet)でサーバーと接続します。"); this.setTooltip("TCP接続(Telnet)でサーバーと接続します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1457,7 +1457,7 @@ Blockly.Blocks['ugj_socket_write'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("TCP接続で開いたソケットにデータを書き込みます。"); this.setTooltip("TCP接続で開いたソケットにデータを書き込みます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1489,7 +1489,7 @@ Blockly.Blocks['ugj_network_httpserver'] = {
.appendField("を表示してアクセス待ちに戻る"); .appendField("を表示してアクセス待ちに戻る");
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("HTTPサーバを起動します。ポートは3000固定です。"); this.setTooltip("HTTPサーバを起動します。ポートは3000固定です。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1526,7 +1526,7 @@ Blockly.Blocks['ugj_network_axios_geturl'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "String"); this.setOutput(true, "String");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("URLにGETリクエストを送信し、レスポンスを取得します。エラーの場合、HTTPステータスコードを返します。"); this.setTooltip("URLにGETリクエストを送信し、レスポンスを取得します。エラーの場合、HTTPステータスコードを返します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1572,7 +1572,7 @@ Blockly.Blocks['ugj_network_sendmail'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("メールを送信します。Fromアドレスは使用できません。"); this.setTooltip("メールを送信します。Fromアドレスは使用できません。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1617,7 +1617,7 @@ Blockly.Blocks['ugj_library_skyway'] = {
.appendField("WebRTC+SkyWayによるウェブチャット"); .appendField("WebRTC+SkyWayによるウェブチャット");
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "Library"); this.setOutput(true, "Library");
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("skyway.jsをロードし、ウェブチャットができるようにします。"); this.setTooltip("skyway.jsをロードし、ウェブチャットができるようにします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1636,7 +1636,7 @@ Blockly.Blocks['ugj_webchat'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("ビデオ画面、チャット入力フォームや黒板を表示します。"); this.setTooltip("ビデオ画面、チャット入力フォームや黒板を表示します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1666,7 +1666,7 @@ Blockly.Blocks['ugj_getusermedia'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("このコンピュータにつながれているメディアデバイスから映像を取得して表示します。"); this.setTooltip("このコンピュータにつながれているメディアデバイスから映像を取得して表示します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1699,7 +1699,7 @@ Blockly.Blocks['ugj_skyway_newpeer'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("サーバーにIDを登録して、相手先呼び出しの準備をします。"); this.setTooltip("サーバーにIDを登録して、相手先呼び出しの準備をします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1740,7 +1740,7 @@ Blockly.Blocks['ugj_skyway_called'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("接続要求があった場合、チャットを開始する処理です。"); this.setTooltip("接続要求があった場合、チャットを開始する処理です。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1769,7 +1769,7 @@ Blockly.Blocks['ugj_skyway_events'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("チャットの相手との接続後の動作を定義します。"); this.setTooltip("チャットの相手との接続後の動作を定義します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1798,7 +1798,7 @@ Blockly.Blocks['ugj_skyway_eventopen'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("チャット相手との接続が確立したときの動作を決めます。"); this.setTooltip("チャット相手との接続が確立したときの動作を決めます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1826,7 +1826,7 @@ Blockly.Blocks['ugj_skyway_eventdata'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("チャット相手の発言を受信したときの動作です。"); this.setTooltip("チャット相手の発言を受信したときの動作です。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1855,7 +1855,7 @@ Blockly.Blocks['ugj_skyway_eventsend'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip("入力フィールドで送信が発生したときの動作を決めます。"); this.setTooltip("入力フィールドで送信が発生したときの動作を決めます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1893,7 +1893,7 @@ Blockly.Blocks['ugj_file_readsync'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "String"); this.setOutput(true, "String");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("あなたのホーム/ocogeディレクトリ内にあるファイルの内容を取得します。「符号化」は、テキストファイルでは通常「utf8」を選択します。"); this.setTooltip("あなたのホーム/ocogeディレクトリ内にあるファイルの内容を取得します。「符号化」は、テキストファイルでは通常「utf8」を選択します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1921,7 +1921,7 @@ Blockly.Blocks['ugj_localstorage_save'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("テキストデータをローカルストレージに名前を付けて保存します。名前は半角アルファベットと数字だけで指定してください。"); this.setTooltip("テキストデータをローカルストレージに名前を付けて保存します。名前は半角アルファベットと数字だけで指定してください。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1945,7 +1945,7 @@ Blockly.Blocks['ugj_localstorage_load'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "String"); this.setOutput(true, "String");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("ローカルストレージからテキストデータを読み込みます。"); this.setTooltip("ローカルストレージからテキストデータを読み込みます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -1966,7 +1966,7 @@ Blockly.Blocks['ugj_localstorage_keylist'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, null); this.setOutput(true, null);
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("ローカルストレージに保存されているキーの一覧を取得します。"); this.setTooltip("ローカルストレージに保存されているキーの一覧を取得します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2006,7 +2006,7 @@ Blockly.Blocks['ugj_event_answer'] = {
this.appendStatementInput("do") this.appendStatementInput("do")
.setCheck(null); .setCheck(null);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("質問をして答えを待ちます。入力欄でキーボードのエンターキーが入力されるか、チェックマークボタンが押されると実行されます。"); this.setTooltip("質問をして答えを待ちます。入力欄でキーボードのエンターキーが入力されるか、チェックマークボタンが押されると実行されます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2054,7 +2054,7 @@ Blockly.Blocks['ugj_spawnsync'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("外部プログラムを実行して子プロセスを生成し、子プロセスが終了するまで待ちます。"); this.setTooltip("外部プログラムを実行して子プロセスを生成し、子プロセスが終了するまで待ちます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2083,7 +2083,7 @@ Blockly.Blocks['ugj_spawn'] = {
.setCheck(null); .setCheck(null);
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("外部プログラムを実行して子プロセスを生成します。データを受け取る毎にステートメントが実行されます。"); this.setTooltip("外部プログラムを実行して子プロセスを生成します。データを受け取る毎にステートメントが実行されます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2117,7 +2117,7 @@ Blockly.Blocks['ugj_child_gesture'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("ジェスチャーセンサー Paj7620 (GrovePi-Python)"); this.setTooltip("ジェスチャーセンサー Paj7620 (GrovePi-Python)");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2134,7 +2134,7 @@ Blockly.Blocks['ugj_child_facepy'] = {
.appendField(new Blockly.FieldDropdown([["しない", " "], ["する", "-w"]]), "win"); .appendField(new Blockly.FieldDropdown([["しない", " "], ["する", "-w"]]), "win");
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("OpenCVによる顔認識 Python2スクリプト - 顔のX座標を返します。"); this.setTooltip("OpenCVによる顔認識 Python2スクリプト - 顔のX座標を返します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2155,7 +2155,7 @@ Blockly.Blocks['ugj_child_openjtalk'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("日本語音声合成プログラム「openJTalk」を使用してしゃべります。声の種類を選べます。"); this.setTooltip("日本語音声合成プログラム「openJTalk」を使用してしゃべります。声の種類を選べます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2189,7 +2189,7 @@ Blockly.Blocks['ugj_child_oledtext'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("I2C接続したSSD1306ディスプレイ(128x64)にテキストを描画します。最大4行。"); this.setTooltip("I2C接続したSSD1306ディスプレイ(128x64)にテキストを描画します。最大4行。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2213,7 +2213,7 @@ Blockly.Blocks['ugj_child_fswebcam'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("fswebcam"); this.setTooltip("fswebcam");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2232,7 +2232,7 @@ Blockly.Blocks['ugj_child_julius'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("音声認識エンジン \"Julius\""); this.setTooltip("音声認識エンジン \"Julius\"");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2252,7 +2252,7 @@ Blockly.Blocks['ugj_child_irrecord'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("受信した赤外線リモコンの信号を文字列として取得します。"); this.setTooltip("受信した赤外線リモコンの信号を文字列として取得します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2276,7 +2276,7 @@ Blockly.Blocks['ugj_child_irplayback'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("学習済みの赤外線リモコンの信号を送信します。"); this.setTooltip("学習済みの赤外線リモコンの信号を送信します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2298,7 +2298,7 @@ Blockly.Blocks['ugj_child_irrcvr'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("受信した赤外線リモコンの信号からハッシュを生成します。"); this.setTooltip("受信した赤外線リモコンの信号からハッシュを生成します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2318,7 +2318,7 @@ Blockly.JavaScript['ugj_child_irrcvr'] = function (block) {
// this.setInputsInline(true); // this.setInputsInline(true);
// this.setOutput(true, null); // this.setOutput(true, null);
// this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); // this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
// this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); // this.setStyle('special_blocks')
// this.setTooltip("opencv4nodejsによる顔認識"); // this.setTooltip("opencv4nodejsによる顔認識");
// this.setHelpUrl(""); // this.setHelpUrl("");
// } // }
@ -2335,7 +2335,7 @@ Blockly.Blocks['ugj_child_testpy'] = {
.appendField("testpy"); .appendField("testpy");
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip(""); this.setTooltip("");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2353,7 +2353,7 @@ Blockly.Blocks['ugj_child_testjs'] = {
.appendField("testjs"); .appendField("testjs");
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip(""); this.setTooltip("");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2376,7 +2376,7 @@ Blockly.Blocks['ugj_child_debug'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "shcmd"); this.setOutput(true, "shcmd");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("さわるなきけん"); this.setTooltip("さわるなきけん");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2397,7 +2397,7 @@ Blockly.Blocks['ugj_blackboard_show'] = {
.appendField("黒板を表示"); .appendField("黒板を表示");
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("文字を表示するための専用エリアを表示します。"); this.setTooltip("文字を表示するための専用エリアを表示します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2426,7 +2426,7 @@ Blockly.Blocks['ugj_blackboard_write'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("黒板に文字を表示します。次の行に追加する他、最後の行を書き換えることもできます。"); this.setTooltip("黒板に文字を表示します。次の行に追加する他、最後の行を書き換えることもできます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2482,7 +2482,7 @@ Blockly.Blocks['ugj_clearblackboard'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("黒板をきれいにします。"); this.setTooltip("黒板をきれいにします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2502,7 +2502,7 @@ Blockly.Blocks['ugj_blackboard_content'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setOutput(true, "String"); this.setOutput(true, "String");
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND); this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("黒板の内容をプレーンテキストで取得します。"); this.setTooltip("黒板の内容をプレーンテキストで取得します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2524,7 +2524,7 @@ Blockly.Blocks['ugj_sleep'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("指定した秒数だけ処理を中断します。"); this.setTooltip("指定した秒数だけ処理を中断します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2627,7 +2627,7 @@ Blockly.Blocks['ugj_set_interval'] = {
.setCheck(null); .setCheck(null);
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("非同期で繰り返し処理を行います(停止ボタンまたは停止ブロックで停止)。"); this.setTooltip("非同期で繰り返し処理を行います(停止ボタンまたは停止ブロックで停止)。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2653,7 +2653,7 @@ Blockly.Blocks['ugj_special_clearinterval'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("非同期の繰り返し処理を停止します。"); this.setTooltip("非同期の繰り返し処理を停止します。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2678,7 +2678,7 @@ Blockly.Blocks['ugj_set_timeout'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(false, null); this.setNextStatement(false, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("指定した秒数だけ待ってから実行します。");//内側のブロック部を 外側下に接続したものは待たずに直ちに実行されます(非同期動作)。 this.setTooltip("指定した秒数だけ待ってから実行します。");//内側のブロック部を 外側下に接続したものは待たずに直ちに実行されます(非同期動作)。
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2701,7 +2701,7 @@ Blockly.Blocks['ugj_library_load'] = {
.setCheck(null); .setCheck(null);
this.setInputsInline(true); this.setInputsInline(true);
// this.setStartHat(true); // this.setStartHat(true);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("ライブラリをロードします。"); this.setTooltip("ライブラリをロードします。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2746,7 +2746,7 @@ Blockly.Blocks['ugj_control_button'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_SPECIAL_HUE); this.setStyle('special_blocks')
this.setTooltip("ディスプレイカラムにボタンを作成し、クリックのイベントリスナを定義します。テキストデータをひとつ、\"title\"属性値として設定・取り出しが可能です。保存したデータはマウスオーバーで確認できます。"); this.setTooltip("ディスプレイカラムにボタンを作成し、クリックのイベントリスナを定義します。テキストデータをひとつ、\"title\"属性値として設定・取り出しが可能です。保存したデータはマウスオーバーで確認できます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2815,7 +2815,7 @@ Blockly.Blocks['ugj_network_fetch'] = {
.setCheck(null); .setCheck(null);
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setColour(Blockly.Msg.UGJ_NETWORK_HUE); this.setStyle('network_blocks')
this.setTooltip(""); this.setTooltip("");
this.setHelpUrl(""); this.setHelpUrl("");
} }
@ -2912,7 +2912,7 @@ Blockly.Blocks['ugj_serial_openclose'] = {
this.setInputsInline(true); this.setInputsInline(true);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(Blockly.Msg.UGJ_GPIO_HUE); this.setStyle('gpio_blocks')
this.setTooltip("シリアルデバイスとの接続を開き、用事が終わったら閉じます。"); this.setTooltip("シリアルデバイスとの接続を開き、用事が終わったら閉じます。");
this.setHelpUrl(""); this.setHelpUrl("");
} }