[update] いくつかのクラスの名前を変更

This commit is contained in:
ocogeclub 2023-01-01 22:05:12 +09:00
parent a37760af85
commit 49f3712704
10 changed files with 72 additions and 72 deletions

View File

@ -21,9 +21,9 @@ const ugj_const = {
dev_hash: '4e9205f9b7e571bec1aa52ab7871f420684fcf96149672a4d550a95863d6b072'
}
/** クラス elUtil ****************************************************************** */
/** クラス appTool ****************************************************************** */
// Electron 動作用
class elUtil {
class appTool {
constructor() {
this.path = require('path') //window.ocogeapi.path
this.fs = require('fs') //window.ocogeapi.fs
@ -316,7 +316,7 @@ class elUtil {
// PyBfm を起動
launchPyBfm() {
let script_path = this.path.join(elutil.library_path, 'pybfm.py');
let script_path = this.path.join(apptool.library_path, 'pybfm.py');
require('child_process').spawn('python3', [script_path]);
}
@ -327,7 +327,7 @@ class elUtil {
}
// ブラウザ動作用
class brUtil {
class webTool {
constructor() {
// GPIOブロックは使えません
this.gpio_backend = ugj_const.pig;
@ -385,24 +385,24 @@ class brUtil {
// Electron 動作 / ブラウザ動作自動判別
// const is_el = (typeof window.ocogeapi !== 'undefined')
const is_el = (typeof require === 'function');
const is_app = (typeof require === 'function');
// utilクラスのインスタンスを返す
const elUtil_new = () => {
if (is_el) {
let el = new elUtil;
el.init();
return el;
const appTool_new = () => {
if (is_app) {
let ap = new appTool;
ap.init();
return ap;
}
else return new brUtil;
else return new webTool;
}
// "require" for web browsers if contextIsolation is false && nodeIntegration is true:
if (!is_el) {
if (!is_app) {
var require = module_name => {
let block;
switch (module_name) {
case '@tensorflow/tfjs':
case '@tensorflow/tfjs-node':
block = 'TensorFlow';
break;
case '@tensorflow-models/blazeface':

View File

@ -185,7 +185,7 @@ Blockly.Blocks['ugj_gpio_open'] = {
};
Blockly.JavaScript['ugj_gpio_open'] = function (block) {
Blockly.JavaScript.provideFunction_(
'require_gpio', [`const _pi = require('@ocoge.club/` + elutil.gpio_backend + `');`]
'require_gpio', [`const _pi = require('@ocoge.club/` + apptool.gpio_backend + `');`]
);
var code = `await _pi.gpio_open();\n`; //
return code;
@ -540,7 +540,7 @@ Blockly.JavaScript['ugj_serial_open'] = function (block) {
// var value_tty = Blockly.JavaScript.valueToCode(block, 'tty', Blockly.JavaScript.ORDER_ATOMIC);
var dropdown_baud = block.getFieldValue('baud');
Blockly.JavaScript.provideFunction_(
'require_gpio', [`const _pi = require('@ocoge.club/` + elutil.gpio_backend + `');`]
'require_gpio', [`const _pi = require('@ocoge.club/` + apptool.gpio_backend + `');`]
);
var code = `await _pi.serial_open('/dev/serial0', ${dropdown_baud});\n`;
return code;
@ -680,9 +680,9 @@ Blockly.Blocks['ugj_i2c_open'] = {
Blockly.JavaScript['ugj_i2c_open'] = function (block) {
var value_i2c_address = Blockly.JavaScript.valueToCode(block, 'i2c_address', Blockly.JavaScript.ORDER_ATOMIC);
Blockly.JavaScript.provideFunction_(
'require_gpio', [`const _pi = require('@ocoge.club/` + elutil.gpio_backend + `');`]
'require_gpio', [`const _pi = require('@ocoge.club/` + apptool.gpio_backend + `');`]
);
var code = `await _pi.i2c_open(${elutil.i2c_bus}, ${value_i2c_address});\n`;
var code = `await _pi.i2c_open(${apptool.i2c_bus}, ${value_i2c_address});\n`;
return code;
};
Blockly.Python['ugj_i2c_open'] = function (block) {
@ -1106,8 +1106,8 @@ Blockly.JavaScript['oc_speechcommands_init'] = function (block) {
let cp = undefined, md = undefined;
if (value_custom_model != "''") {
let cm = value_custom_model.replace(/(^'|'$)/g, '');
cp = `'file://${elutil.path.join(cm, 'model.json')}'`;
md = `'file://${elutil.path.join(cm, 'metadata.json')}'`;
cp = `'file://${apptool.path.join(cm, 'model.json')}'`;
md = `'file://${apptool.path.join(cm, 'metadata.json')}'`;
}
var code = `const _checkpointURL = ${cp};
const _metadataURL = ${md};
@ -1262,7 +1262,7 @@ Blockly.JavaScript['ugj_canvas_loadimg'] = function (block) {
var value_imgfilename = Blockly.JavaScript.valueToCode(block, 'imgfilename', Blockly.JavaScript.ORDER_ATOMIC);
var code = [
`let _img = new Image();`,
`_img.src = '${elutil.doc_root}' + ${value_imgfilename};`,
`_img.src = '${apptool.doc_root}' + ${value_imgfilename};`,
`_img.onload = () => _ctx.drawImage(img,0,0);`,
// `ugj_canvasImg('${ugj_const.doc_root}' + ${value_imgfilename});`,
''
@ -1739,7 +1739,7 @@ Blockly.Blocks['ugj_library_skyway'] = {
}
};
Blockly.JavaScript['ugj_library_skyway'] = function (block) {
var code = `'${elutil.path.join(elutil.library_path, 'skyway.min.js')}'`;
var code = `'${apptool.path.join(apptool.library_path, 'skyway.min.js')}'`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
@ -2044,7 +2044,7 @@ Blockly.Blocks['ugj_file_readsync'] = {
Blockly.JavaScript['ugj_file_readsync'] = function (block) {
var value_filename = Blockly.JavaScript.valueToCode(block, 'filename', Blockly.JavaScript.ORDER_ATOMIC);
var dropdown_encoding = block.getFieldValue('encoding');
let filepath = elutil.path.join(elutil.doc_root, value_filename.replace(/\'/g, ''));
let filepath = apptool.path.join(apptool.doc_root, value_filename.replace(/\'/g, ''));
Blockly.JavaScript.provideFunction_(
'require_fs', [`const _fs = require('fs');`]
);
@ -2270,7 +2270,7 @@ Blockly.Blocks['aquestalk_pi'] = {
};
Blockly.JavaScript['aquestalk_pi'] = function (block) {
var value_talk = Blockly.JavaScript.valueToCode(block, 'talk', Blockly.JavaScript.ORDER_ATOMIC);
var code = `'${elutil.path.join(elutil.executable_path, 'aquestalkpi/AquesTalkPi')} -g 50 ' + ${value_talk} + ' | aplay', { shell: true }`;
var code = `'${apptool.path.join(apptool.executable_path, 'aquestalkpi/AquesTalkPi')} -g 50 ' + ${value_talk} + ' | aplay', { shell: true }`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
@ -2292,7 +2292,7 @@ Blockly.Blocks['ugj_child_fswebcam'] = {
};
Blockly.JavaScript['ugj_child_fswebcam'] = function (block) {
var value_filename = Blockly.JavaScript.valueToCode(block, 'filename', Blockly.JavaScript.ORDER_ATOMIC);
var code = `'fswebcam', ['-r', '480x360', '${elutil.doc_root}' + ${value_filename}]`;
var code = `'fswebcam', ['-r', '480x360', '${apptool.doc_root}' + ${value_filename}]`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
@ -2310,7 +2310,7 @@ Blockly.Blocks['ugj_child_julius'] = {
}
};
Blockly.JavaScript['ugj_child_julius'] = function (block) {
var code = `'${elutil.path.join(elutil.executable_path, 'julius/julius-simple')}', ['-C', '${elutil.path.join(elutil.executable_path, 'julius/dictation-kit/am-gmm.jconf')}', '-gram', '${elutil.path.join(elutil.executable_path, 'julius/dic/assistant')}', '-nostrip']`;
var code = `'${apptool.path.join(apptool.executable_path, 'julius/julius-simple')}', ['-C', '${apptool.path.join(apptool.executable_path, 'julius/dictation-kit/am-gmm.jconf')}', '-gram', '${apptool.path.join(apptool.executable_path, 'julius/dic/assistant')}', '-nostrip']`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
// irrp.py - pigpioによる赤外線リモコンの学習
@ -2331,7 +2331,7 @@ Blockly.Blocks['ugj_child_irrecord'] = {
};
Blockly.JavaScript['ugj_child_irrecord'] = function (block) {
var value_gpio = Blockly.JavaScript.valueToCode(block, 'gpio', Blockly.JavaScript.ORDER_ATOMIC);
var code = `'python3', ['${elutil.path.join(elutil.library_path, 'irrp.py')}', '-r', '-g', '${value_gpio}', 'signal', '--post', '130']`;
var code = `'python3', ['${apptool.path.join(apptool.library_path, 'irrp.py')}', '-r', '-g', '${value_gpio}', 'signal', '--post', '130']`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
// 送信
@ -2356,7 +2356,7 @@ Blockly.Blocks['ugj_child_irplayback'] = {
Blockly.JavaScript['ugj_child_irplayback'] = function (block) {
var value_gpio = Blockly.JavaScript.valueToCode(block, 'gpio', Blockly.JavaScript.ORDER_ATOMIC);
var value_signal = Blockly.JavaScript.valueToCode(block, 'signal', Blockly.JavaScript.ORDER_ATOMIC);//.replace('{','\\{').replace('}','\\}').replace(/"/g,'\\"').replace(/ /g,'\\ ')
var code = `'python3', ['${elutil.path.join(elutil.library_path, 'irrp.py')}', '-p', '-g', '${value_gpio}', '--irdata', ${value_signal}, 'signal']`;
var code = `'python3', ['${apptool.path.join(apptool.library_path, 'irrp.py')}', '-p', '-g', '${value_gpio}', '--irdata', ${value_signal}, 'signal']`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
// ハッシュ生成
@ -2378,7 +2378,7 @@ Blockly.Blocks['ugj_child_irrcvr'] = {
Blockly.JavaScript['ugj_child_irrcvr'] = function (block) {
var value_gpio = Blockly.JavaScript.valueToCode(block, 'gpio', Blockly.JavaScript.ORDER_ATOMIC);
// var code = `'python3', ['./scripts/irrcvr.py', '-g', '${value_gpio}']`;
var code = `'${elutil.path.join(elutil.executable_path, 'ir_hash/ir_hash')}', ['${value_gpio}']`;
var code = `'${apptool.path.join(apptool.executable_path, 'ir_hash/ir_hash')}', ['${value_gpio}']`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
@ -2398,7 +2398,7 @@ Blockly.Blocks['ugj_child_pyscript'] = {
Blockly.JavaScript['ugj_child_pyscript'] = function (block) {
var value_script_path = Blockly.JavaScript.valueToCode(block, 'script_path', Blockly.JavaScript.ORDER_ATOMIC);
// TODO: Assemble JavaScript into code variable.
var code = `'python3', ['${elutil.doc_root}/' + ${value_script_path}]`;
var code = `'python3', ['${apptool.doc_root}/' + ${value_script_path}]`;
// TODO: Change ORDER_NONE to the correct strength.
return [code, Blockly.JavaScript.ORDER_NONE];
};

View File

@ -59,13 +59,13 @@ Blockly.Blocks['ugj_grideye_init'] = {
Blockly.JavaScript['ugj_grideye_init'] = function (block) {
var dropdown_addr = block.getFieldValue('addr');
Blockly.JavaScript.provideFunction_(
'require_gpio', [`const _pi = require('@ocoge.club/` + elutil.gpio_backend + `');`]
'require_gpio', [`const _pi = require('@ocoge.club/` + apptool.gpio_backend + `');`]
);
let modpath = elutil.path.join(elutil.blocks_sensors_dir, 'amg8833', 'AMG8833x.js');
let modpath = apptool.path.join(apptool.blocks_sensors_dir, 'amg8833', 'AMG8833x.js');
Blockly.JavaScript.provideFunction_(
'require_amg8833', [`const _amg8833 = require('${modpath}');`]
);
var code = `await _amg8833.init(${elutil.i2c_bus}, ${dropdown_addr}, window.addEventListener);\n`;
var code = `await _amg8833.init(${apptool.i2c_bus}, ${dropdown_addr}, window.addEventListener);\n`;
return code;//
};
/********************** */

View File

@ -18,14 +18,14 @@ Blockly.Blocks['ugj_bme280'] = {
Blockly.JavaScript['ugj_bme280'] = function (block) {
var dropdown_addr = block.getFieldValue('addr');
Blockly.JavaScript.provideFunction_(
'require_gpio', [`const _pi = require('@ocoge.club/` + elutil.gpio_backend + `');`]
'require_gpio', [`const _pi = require('@ocoge.club/` + apptool.gpio_backend + `');`]
);
let modpath = elutil.path.join(elutil.blocks_sensors_dir, 'bme280', 'BME280x.js');
let modpath = apptool.path.join(apptool.blocks_sensors_dir, 'bme280', 'BME280x.js');
Blockly.JavaScript.provideFunction_(
'require_bme280', [`const _bme280 = require('${modpath}');`]
);
var code = `const options = {
i2cBusNo: ${elutil.i2c_bus},
i2cBusNo: ${apptool.i2c_bus},
i2cAddress: ${dropdown_addr}
};
await _bme280.init(options);

View File

@ -15,7 +15,7 @@ Blockly.Blocks['ugj_dht11'] = {
};
Blockly.JavaScript['ugj_dht11'] = function (block) {
var value_pin = Blockly.JavaScript.valueToCode(block, 'pin', Blockly.JavaScript.ORDER_ATOMIC);
let pypath = elutil.path.join(elutil.blocks_sensors_dir, 'dht11', 'dht11.py');
let pypath = apptool.path.join(apptool.blocks_sensors_dir, 'dht11', 'dht11.py');
var code = `let _th = require('child_process').spawnSync('python3', ['${pypath}', '${value_pin}'], {timeout: 5000}).stdout.toString();
let _dhtdata = JSON.parse(_th);`;
// let _dht11data[0] =

View File

@ -33,13 +33,13 @@ Blockly.Blocks['ugj_gesture_init'] = {
Blockly.JavaScript['ugj_gesture_init'] = function (block) {
var value_i2c_addr = Blockly.JavaScript.valueToCode(block, 'i2c_addr', Blockly.JavaScript.ORDER_ATOMIC);
Blockly.JavaScript.provideFunction_(
'require_gpio', [`const _pi = require('@ocoge.club/` + elutil.gpio_backend + `');`]
'require_gpio', [`const _pi = require('@ocoge.club/` + apptool.gpio_backend + `');`]
);
let modpath = elutil.path.join(elutil.blocks_sensors_dir, 'paj7620', 'PAJ7620x.js');
let modpath = apptool.path.join(apptool.blocks_sensors_dir, 'paj7620', 'PAJ7620x.js');
Blockly.JavaScript.provideFunction_(
'require_paj7620', [`const _paj7620 = require('${modpath}');`]
);
var code = `await _paj7620.init(${elutil.i2c_bus}, ${value_i2c_addr}, window.addEventListener);
var code = `await _paj7620.init(${apptool.i2c_bus}, ${value_i2c_addr}, window.addEventListener);
`;
return code;
};

View File

@ -1044,7 +1044,7 @@
<script src="./node_modules/@blockly/field-slider/dist/index.js"></script>
<script src="./lib/custom-dialog.js"></script>
<script src="./blocks/blocks.js"></script>
<script src="./apptools.js"></script>
<script src="./apptool.js"></script>
<script src="./index.js"></script>
<script src="./node_modules/js-beautify/js/lib/beautify.js"></script>
<script src="./node_modules/prismjs/prism.js"></script>

View File

@ -2,12 +2,12 @@
const { checkPrimeSync } = require('crypto');
let elutil = elUtil_new();
let apptool = appTool_new();
const testfunc = async () => {
elutil.openURL('http://ocoge.club');
// console.log(elutil.app_path);
apptool.openURL('http://ocoge.club');
// console.log(apptool.app_path);
}
//============ User Customize Start ===============
@ -258,10 +258,10 @@ let ugj_sounds = (names => { // サウンドファイルのいろいろの配列
// マスコット選択
const ugj_selectMascot = async () => {
let fname = await elutil.selectMascotFile();
let fname = await apptool.selectMascotFile();
if (fname) {
ugj_canvasBgImg(fname, -1, -1);
elutil.setMascotFilePath(fname);
apptool.setMascotFilePath(fname);
}
}
@ -289,7 +289,7 @@ const ugj_newWorkspace = () => {
ugj_confirm('新規ワークスペース', '保存していない内容はすべて破棄されます。よろしいですか?', okey => {
if (okey) {
workspace.clear();
elutil.newFile();
apptool.newFile();
}
});
}
@ -298,12 +298,12 @@ const ugj_newWorkspace = () => {
const ugj_saveWorkspaceToFile = async () => {
let xml = Blockly.Xml.workspaceToDom(workspace);
let xml_text = Blockly.Xml.domToText(xml);
if (await elutil.saveWsFile(xml_text) === false) {
if (await apptool.saveWsFile(xml_text) === false) {
window.alert('保存できませんでした。');
}
}
const ugj_loadWorkspaceFromFile = async () => {
let xml_text = await elutil.loadWsFile();
let xml_text = await apptool.loadWsFile();
if (xml_text.length > 0) {
let xml = Blockly.Xml.textToDom(xml_text);
Blockly.Xml.domToWorkspace(xml, workspace);
@ -312,7 +312,7 @@ const ugj_loadWorkspaceFromFile = async () => {
// ワークスペースを別名で保存
const ugj_saveWorkspaceAs = () => {
elutil.newFile();
apptool.newFile();
ugj_saveWorkspaceToFile();
}
@ -337,7 +337,7 @@ const ugj_loadWorkspace = () => {
// コード生成
const ugj_generateCode = () => {
let code;
if (elutil.lang == 'py') { // Python コード出力
if (apptool.lang == 'py') { // Python コード出力
try {
code = Blockly.Python.workspaceToCode(workspace);
} catch (e) { // Pythonコードを持たないブロックがある場合
@ -372,7 +372,7 @@ const ugj_pyBeautify = (code) => {
// コードフォーマッティング
const ugj_formatCode = code => {
if (elutil.lang == 'py') // フォーマッティング
if (apptool.lang == 'py') // フォーマッティング
code = ugj_pyBeautify(code);
else
code = js_beautify(code, { indent_size: 2 });
@ -385,12 +385,12 @@ const ugj_runCode = async () => {
let btnel = document.getElementById('runbtn');
btnel.disabled = true;
let code = ugj_generateCode();
if (elutil.lang == 'js') {
if (apptool.lang == 'js') {
let AsyncFunction = Object.getPrototypeOf(async function () { }).constructor
let ocogeFunc = new AsyncFunction(code);
await ocogeFunc().catch(e => { window.alert(e); });
console.log('Code Execution done.');
} else if (elutil.lang == 'py') {
} else if (apptool.lang == 'py') {
if (code) ugj_spawnPyboard(code, 'r');
}
btnel.disabled = false;
@ -398,7 +398,7 @@ const ugj_runCode = async () => {
// Pyboard ocoge
const ugj_spawnPyboard = (code, mode) => {
let script_path = elutil.path.join(elutil.library_path, 'pybtool.py');
let script_path = apptool.path.join(apptool.library_path, 'pybtool.py');
let p = require('child_process').spawn('python3', [script_path, mode], { env: { "PYTHONUTF8": "1" } });
p.stdin.write(code);
p.stdin.end();
@ -420,14 +420,14 @@ const ugj_showCode = () => {
let code = ugj_generateCode(); // コード生成
content.innerHTML = ugj_htmlEntities(ugj_formatCode(code));
if (elutil.lang == 'py') content.setAttribute('class', 'language-python');
if (apptool.lang == 'py') content.setAttribute('class', 'language-python');
else content.setAttribute('class', 'language-javascript');
Prism.highlightElement(content);
dialog.showModal();
const save_to_file = code => {
if (elutil.saveFile(code, elutil.lang) === false) window.alert('保存できませんでした。');
if (apptool.saveFile(code, apptool.lang) === false) window.alert('保存できませんでした。');
}
const close_cb = () => {
@ -437,7 +437,7 @@ const ugj_showCode = () => {
document.removeEventListener('keyup', keyev_cb);
}
const export_cb = () => {
if (elutil.lang == 'js') {
if (apptool.lang == 'js') {
save_to_file(ugj_formatCode(ugj_asyncIife(code)));
} else {
ugj_spawnPyboard(ugj_formatCode(code), 'd');
@ -446,12 +446,12 @@ const ugj_showCode = () => {
}
const keyev_cb = ev => {
if (ev.key == 's' && ev.ctrlKey) {
if (elutil.lang == 'js') {
if (apptool.lang == 'js') {
// JS-CLI モード
// blackboardWrite()とwindow.alert()、fukidashi()をconsole.log()に書き換え、
// document... と ugj_... と elutil... をコメントアウト(ブラウザ関連部分の追放という意味では不完全なので注意)
// document... と ugj_... と apptool... をコメントアウト(ブラウザ関連部分の追放という意味では不完全なので注意)
// あと正規表現もいい加減
code = code.replace(/const appendDiv[^#]*\/\/#/gm, 'const blackboardWrite = text => console.log(text);').replace('window.alert', 'console.log').replace(/_fukidashi(.*), \d+(\);)/gm, 'console.log$1$2').replace(/(^(?=.*document.)[^;]*;)/gm, '/* $1 */').replace(/(^(?=.*ugj_)[^;]*;)/gm, '/* $1 */').replace(/(^(?=.*elutil.)[^;]*;)/gm, '/* $1 */');
code = code.replace(/const appendDiv[^#]*\/\/#/gm, 'const blackboardWrite = text => console.log(text);').replace('window.alert', 'console.log').replace(/_fukidashi(.*), \d+(\);)/gm, 'console.log$1$2').replace(/(^(?=.*document.)[^;]*;)/gm, '/* $1 */').replace(/(^(?=.*ugj_)[^;]*;)/gm, '/* $1 */').replace(/(^(?=.*apptool.)[^;]*;)/gm, '/* $1 */');
}
save_to_file(ugj_formatCode(ugj_asyncIife(code)));
close_cb();
@ -623,7 +623,7 @@ Blockly.svgResize(workspace);
// ワークスペースの未保存の変更のフラグ
const ugj_wsUpdateCB = event => {
if (event.type != Blockly.Events.UI) {
elutil.setWsChanged(true);
apptool.setWsChanged(true);
}
}
@ -648,17 +648,17 @@ window.onload = () => {
// ワークスペースといくつかの環境のオートリストア
ugj_loadWorkspace();
elutil.loadPrefsFromLS();
apptool.loadPrefsFromLS();
setTimeout(() => { // 環境設定のロードが終わってからイベントリスナを作成
workspace.addChangeListener(ugj_wsUpdateCB);
}, 100);
// 背景canvas
ugj_canvasBgImg(elutil.getMascotFilePath(), -1, -1);
ugj_canvasBgImg(apptool.getMascotFilePath(), -1, -1);
}
window.addEventListener('beforeunload', () => {
// window.onbeforeunload = () => {
ugj_saveWorkspace();
elutil.savePrefsToLS();
elutil.cleanupGPIO();
apptool.savePrefsToLS();
apptool.cleanupGPIO();
// }
});

10
main.js
View File

@ -166,7 +166,7 @@ let template = [
click: (item, focusedWindow) => {
if (focusedWindow) {
toggleCheck_i2c("i2c-1");
focusedWindow.webContents.executeJavaScript('elutil.setI2cbusNo("1")');
focusedWindow.webContents.executeJavaScript('apptool.setI2cbusNo("1")');
}
}
},
@ -177,7 +177,7 @@ let template = [
click: (item, focusedWindow) => {
if (focusedWindow) {
toggleCheck_i2c("i2c-6");
focusedWindow.webContents.executeJavaScript('elutil.setI2cbusNo("6")');
focusedWindow.webContents.executeJavaScript('apptool.setI2cbusNo("6")');
}
}
},
@ -196,7 +196,7 @@ let template = [
if (focusedWindow) {
// menu.getMenuItemById('py').checked = false;
toggleCheck_lang("js");
focusedWindow.webContents.executeJavaScript('elutil.setLang("js")');
focusedWindow.webContents.executeJavaScript('apptool.setLang("js")');
}
}
},
@ -208,7 +208,7 @@ let template = [
if (focusedWindow) {
// menu.getMenuItemById('js').checked = false;
toggleCheck_lang("py");
focusedWindow.webContents.executeJavaScript('elutil.setLang("py")');
focusedWindow.webContents.executeJavaScript('apptool.setLang("py")');
}
}
},
@ -224,7 +224,7 @@ let template = [
{
label: "Launch PyBfm",
click: (item, focusedWindow) => {
focusedWindow.webContents.executeJavaScript('elutil.launchPyBfm()');
focusedWindow.webContents.executeJavaScript('apptool.launchPyBfm()');
},
},
]

View File

@ -1,6 +1,6 @@
{
"name": "ocoge",
"version": "0.1.9",
"version": "0.1.10",
"description": "ブロックベースビジュアルプログラム開発・実行環境",
"main": "main.js",
"scripts": {