Change menu text to use whole screen msg format

This commit is contained in:
Alvin Wong
2021-04-05 15:36:41 +08:00
parent ab1b48a0f2
commit dd1801925b
5 changed files with 164 additions and 311 deletions

View File

@@ -193,41 +193,59 @@
return str;
},
validateWholeScreenMessage: function(valMap, id) {
var d = defMap[id];
if (this.isSmall(valMap[id])) {
if (valMap[id][0].length === 0) {
getWholeScreenMessageMaxLen: function(valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var maxLen;
if (this.isSmall(v)) {
maxLen = defMap[id].maxLen2 || 16;
} else {
maxLen = defMap[id].maxLen || 8;
}
return maxLen;
},
validateWholeScreenMessage: function(valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var maxLen = this.getWholeScreenMessageMaxLen(valMap, id, prop);
if (this.isSmall(v)) {
if (v[0].length === 0) {
return "invalid";
} else if (Math.max(valMap[id][0].length, valMap[id][1].length) > 16) {
} else if (Math.max(v[0].length, v[1].length) > maxLen) {
return "invalid";
}
} else {
if (valMap[id].length > 8) {
if (v.length > maxLen) {
return "invalid";
}
}
},
constraintWholeScreenMessage: function(v) {
if (this.isSmall(v)) {
return "len <= 16";
} else {
return "len <= 8";
}
constraintWholeScreenMessage: function(valMap, id, prop) {
return "len <= " + this.getWholeScreenMessageMaxLen(valMap, id, prop);
},
isSmall: function(v) {
return v instanceof Array;
},
convertToLarge: function(valMap, id) {
var message = valMap[id][0] + (valMap[id][1] !== "" ? " " + valMap[id][1] : "");
valMap[id] = message;
convertToLarge: function(valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var message = v[0] + (v[1] !== "" ? " " + v[1] : "");
if (prop) {
valMap[id][prop] = message;
} else {
valMap[id] = message;
}
},
convertToSmall: function(valMap, id) {
var message = valMap[id]
valMap[id] = [ message, "" ];
convertToSmall: function(valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var message = [ v, "" ];
if (prop) {
valMap[id][prop] = message;
} else {
valMap[id] = message;
}
}
}
});
@@ -316,7 +334,7 @@
<tr v-for="message in def.messagesWarn" v-bind:class="validateWholeScreenMessage(current.messagesWarn, message.id)">
<td class="label"><div class="stringId">{{message.id}}</div></td>
<td class="value">
<div class="constraint">{{constraintWholeScreenMessage(current.messagesWarn[message.id])}}</div>
<div class="constraint">{{constraintWholeScreenMessage(current.messagesWarn, message.id)}}</div>
<div class="ref">{{referent.messagesWarn[message.id]}}</div>
<div class="note" v-if="message.note">{{message.note}}</div>
<div class="tran" v-if="isSmall(current.messagesWarn[message.id])">
@@ -346,13 +364,21 @@
<h2>Menu Groups</h2>
<table class="data">
<tr v-for="menu in def.menuGroups" v-bind:class="validateInput(current.menuGroups, menu.id, 2)">
<tr v-for="menu in def.menuGroups" v-bind:class="validateWholeScreenMessage(current.menuGroups, menu.id, 'text2')">
<td class="label"><div class="stringId">{{menu.id}}</div></td>
<td class="value">
<div class="label">Menu Name</div>
<div class="constraint">{{constraintString(menu)}}</div>
<div class="constraint">{{constraintWholeScreenMessage(current.menuGroups, menu.id, 'text2')}}</div>
<div class="ref">{{referent.menuGroups[menu.id].text2}}</div>
<div class="tran" v-bind:class="{unchanged : current.menuGroups[menu.id].text2[0] == referent.menuGroups[menu.id].text2[0] && current.menuGroups[menu.id].text2[1] == referent.menuGroups[menu.id].text2[1], empty : current.menuGroups[menu.id].text2[0] == '' || current.menuGroups[menu.id].text2[1] == ''}"><input type="text" v-model="current.menuGroups[menu.id].text2[0]"><input type="text" v-model="current.menuGroups[menu.id].text2[1]"></div>
<div class="tran" v-if="isSmall(current.menuGroups[menu.id].text2)">
<input type="text" v-model="current.menuGroups[menu.id].text2[0]" v-bind:class="{unchanged : current.menuGroups[menu.id].text2[0] == referent.menuGroups[menu.id].text2[0] && current.menuGroups[menu.id].text2[1] == referent.menuGroups[menu.id].text2[1], empty : current.menuGroups[menu.id].text2[0] == '' && current.menuGroups[menu.id].text2[1] == ''}">
<input type="text" v-model="current.menuGroups[menu.id].text2[1]" v-bind:class="{unchanged : current.menuGroups[menu.id].text2[0] == referent.menuGroups[menu.id].text2[0] && current.menuGroups[menu.id].text2[1] == referent.menuGroups[menu.id].text2[1], empty : current.menuGroups[menu.id].text2[0] == '' && current.menuGroups[menu.id].text2[1] == ''}">
<button type="button" @click="convertToLarge(current.menuGroups, menu.id, 'text2')">Convert to large text</button>
</div>
<div class="tran" v-else>
<input type="text" v-model="current.menuGroups[menu.id].text2" v-bind:class="{unchanged : current.menuGroups[menu.id].text2 == referent.menuGroups[menu.id].text2, empty : current.menuGroups[menu.id].text2==''}">
<button type="button" @click="convertToSmall(current.menuGroups, menu.id, 'text2')">Convert to small text</button>
</div>
<div class="label">Description</div>
<div class="ref">{{referent.menuGroups[menu.id].desc}}</div>
<div class="tran"><input type="text" v-model="current.menuGroups[menu.id].desc" v-bind:class="{unchanged : current.menuGroups[menu.id].desc == referent.menuGroups[menu.id].desc, empty : current.menuGroups[menu.id].desc == ''}"></div>
@@ -362,14 +388,22 @@
<h2>Menu Options</h2>
<table class="data">
<tr v-for="menu in def.menuOptions" v-bind:class="validateInput(current.menuOptions, menu.id, 2)">
<tr v-for="menu in def.menuOptions" v-bind:class="validateWholeScreenMessage(current.menuOptions, menu.id, 'text2')">
<td class="label"><div class="stringId">{{menu.id}}</div></td>
<td class="value">
<div v-bind:class="{hidden : false}">
<div class="label">Menu Name (Double-Line)</div>
<div class="constraint">{{constraintString(menu)}}</div>
<div class="label">Menu Name</div>
<div class="constraint">{{constraintWholeScreenMessage(current.menuOptions, menu.id, 'text2')}}</div>
<div class="ref">{{referent.menuOptions[menu.id].text2}}</div>
<div class="tran" v-bind:class="{unchanged : current.menuOptions[menu.id].text2[0] == referent.menuOptions[menu.id].text2[0] && current.menuOptions[menu.id].text2[1] == referent.menuOptions[menu.id].text2[1], empty : current.menuOptions[menu.id].text2[0] == '' || current.menuOptions[menu.id].text2[1] == ''}"><input type="text" v-model="current.menuOptions[menu.id].text2[0]"><input type="text" v-model="current.menuOptions[menu.id].text2[1]"></div>
<div class="tran" v-if="isSmall(current.menuOptions[menu.id].text2)">
<input type="text" v-model="current.menuOptions[menu.id].text2[0]" v-bind:class="{unchanged : current.menuOptions[menu.id].text2[0] == referent.menuOptions[menu.id].text2[0] && current.menuOptions[menu.id].text2[1] == referent.menuOptions[menu.id].text2[1], empty : current.menuOptions[menu.id].text2[0] == '' && current.menuOptions[menu.id].text2[1] == ''}">
<input type="text" v-model="current.menuOptions[menu.id].text2[1]" v-bind:class="{unchanged : current.menuOptions[menu.id].text2[0] == referent.menuOptions[menu.id].text2[0] && current.menuOptions[menu.id].text2[1] == referent.menuOptions[menu.id].text2[1], empty : current.menuOptions[menu.id].text2[0] == '' && current.menuOptions[menu.id].text2[1] == ''}">
<button type="button" @click="convertToLarge(current.menuOptions, menu.id, 'text2')">Convert to large text</button>
</div>
<div class="tran" v-else>
<input type="text" v-model="current.menuOptions[menu.id].text2" v-bind:class="{unchanged : current.menuOptions[menu.id].text2 == referent.menuOptions[menu.id].text2, empty : current.menuOptions[menu.id].text2==''}">
<button type="button" @click="convertToSmall(current.menuOptions, menu.id, 'text2')">Convert to small text</button>
</div>
</div>
<div class="label">Description</div>
<div class="ref">{{referent.menuOptions[menu.id].desc}}</div>

View File

@@ -145,14 +145,20 @@ def get_letter_counts(defs: dict, lang: dict) -> List[str]:
obj = lang["menuOptions"]
for mod in defs["menuOptions"]:
eid = mod["id"]
text_list.append(obj[eid]["text2"][0])
text_list.append(obj[eid]["text2"][1])
if isinstance(obj[eid]["text2"], list):
text_list.append(obj[eid]["text2"][0])
text_list.append(obj[eid]["text2"][1])
else:
text_list.append(obj[eid]["text2"])
obj = lang["menuGroups"]
for mod in defs["menuGroups"]:
eid = mod["id"]
text_list.append(obj[eid]["text2"][0])
text_list.append(obj[eid]["text2"][1])
if isinstance(obj[eid]["text2"], list):
text_list.append(obj[eid]["text2"][0])
text_list.append(obj[eid]["text2"][1])
else:
text_list.append(obj[eid]["text2"])
obj = lang["menuGroups"]
for mod in defs["menuGroups"]:
@@ -459,11 +465,17 @@ def write_language(lang: dict, defs: dict, f: TextIO) -> None:
index = 0
for mod in defs["menuOptions"]:
eid = mod["id"]
if isinstance(obj[eid]["text2"], list):
if not obj[eid]["text2"][1]:
source_text = obj[eid]["text2"][0]
else:
source_text = obj[eid]["text2"][0] + "\n" + obj[eid]["text2"][1]
else:
source_text = "\n" + obj[eid]["text2"]
if "feature" in mod:
f.write(f"#ifdef {mod['feature']}\n")
f.write(f" /* [{index:02d}] {eid.ljust(max_len)[:max_len]} */ ")
txt = f'{obj[eid]["text2"][0]}\\n{obj[eid]["text2"][1]}'
f.write(f'{{ "{convert_string(symbol_conversion_table, txt)}" }},//{obj[eid]["text2"]} \n')
f.write(f'{{ "{convert_string(symbol_conversion_table, source_text)}" }},//{obj[eid]["text2"]} \n')
if "feature" in mod:
f.write("#endif\n")
@@ -478,9 +490,15 @@ def write_language(lang: dict, defs: dict, f: TextIO) -> None:
max_len = 25
for mod in defs["menuGroups"]:
eid = mod["id"]
if isinstance(obj[eid]["text2"], list):
if not obj[eid]["text2"][1]:
source_text = obj[eid]["text2"][0]
else:
source_text = obj[eid]["text2"][0] + "\n" + obj[eid]["text2"][1]
else:
source_text = "\n" + obj[eid]["text2"]
f.write(f" /* {eid.ljust(max_len)[:max_len]} */ ")
txt = f'{obj[eid]["text2"][0]}\\n{obj[eid]["text2"][1]}'
f.write(f'"{convert_string(symbol_conversion_table, txt)}",//{obj[eid]["text2"]} \n')
f.write(f'"{convert_string(symbol_conversion_table, source_text)}",//{obj[eid]["text2"]} \n')
f.write("};\n\n")

View File

@@ -62,243 +62,141 @@
},
"menuGroups": {
"PowerMenu": {
"text2": [
"",
"電源設定"
],
"text2": "電源設定",
"desc": "電源設定"
},
"SolderingMenu": {
"text2": [
"",
"焊接設定"
],
"text2": "焊接設定",
"desc": "焊接設定"
},
"PowerSavingMenu": {
"text2": [
"",
"待機設定"
],
"text2": "待機設定",
"desc": "自動待機慳電設定"
},
"UIMenu": {
"text2": [
"",
"使用者介面"
],
"text2": "使用者介面",
"desc": "使用者介面設定"
},
"AdvancedMenu": {
"text2": [
"",
"進階設定"
],
"text2": "進階設定",
"desc": "進階設定"
}
},
"menuOptions": {
"DCInCutoff": {
"text2": [
"",
"電源"
],
"text2": "電源",
"desc": "輸入電源;設定自動停機電壓 <DC 10V> <S 鋰電池以每粒3.3V計算;依個設定會停用功率限制>"
},
"SleepTemperature": {
"text2": [
"",
"待機温度"
],
"text2": "待機温度",
"desc": "喺待機模式時嘅辣雞咀温度"
},
"SleepTimeout": {
"text2": [
"",
"待機延時"
],
"text2": "待機延時",
"desc": "自動進入待機模式前嘅閒置等候時間 <S=秒 | M=分鐘>"
},
"ShutdownTimeout": {
"text2": [
"",
"自動熄機"
],
"text2": "自動熄機",
"desc": "自動熄機前嘅閒置等候時間 <M=分鐘>"
},
"MotionSensitivity": {
"text2": [
"",
"動作敏感度"
],
"text2": "動作敏感度",
"desc": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
},
"TemperatureUnit": {
"text2": [
"",
"温度單位"
],
"text2": "温度單位",
"desc": "C=攝氏 | F=華氏"
},
"AdvancedIdle": {
"text2": [
"",
"詳細閒置畫面"
],
"text2": "詳細閒置畫面",
"desc": "喺閒置畫面以英文細字顯示詳細嘅資料"
},
"DisplayRotation": {
"text2": [
"",
"畫面方向"
],
"text2": "畫面方向",
"desc": "A=自動 | L=使用左手 | R=使用右手"
},
"BoostTemperature": {
"text2": [
"",
"增熱温度"
],
"text2": "增熱温度",
"desc": "喺增熱模式時使用嘅温度"
},
"AutoStart": {
"text2": [
"",
"自動啓用"
],
"text2": "自動啓用",
"desc": "開機時自動啓用 <無=停用 | 焊=焊接模式 | 待=待機模式 | 室=室温待機>"
},
"CooldownBlink": {
"text2": [
"",
"降温時閃爍"
],
"text2": "降温時閃爍",
"desc": "停止加熱之後,當辣雞咀仲係熱嗰陣閃爍畫面"
},
"TemperatureCalibration": {
"text2": [
"",
"温度校正?"
],
"text2": "温度校正?",
"desc": "開始校正辣雞咀温度位移"
},
"SettingsReset": {
"text2": [
"",
"全部重設?"
],
"text2": "全部重設?",
"desc": "將所有設定重設到預設值"
},
"VoltageCalibration": {
"text2": [
"",
"輸入電壓校正?"
],
"text2": "輸入電壓校正?",
"desc": "開始校正VIN輸入電壓 <長撳以退出>"
},
"AdvancedSoldering": {
"text2": [
"",
"詳細焊接畫面"
],
"text2": "詳細焊接畫面",
"desc": "喺焊接模式畫面以英文細字顯示詳細嘅資料"
},
"ScrollingSpeed": {
"text2": [
"",
"捲動速度"
],
"text2": "捲動速度",
"desc": "解說文字嘅捲動速度"
},
"QCMaxVoltage": {
"text2": [
"",
"QC電壓"
],
"text2": "QC電壓",
"desc": "使用QC電源時請求嘅最高目標電壓"
},
"PowerLimit": {
"text2": [
"",
"功率限制"
],
"text2": "功率限制",
"desc": "限制辣雞可用嘅最大功率 <W=watt>"
},
"ReverseButtonTempChange": {
"text2": [
"",
"反轉加減掣"
],
"text2": "反轉加減掣",
"desc": "反轉調校温度時加減掣嘅方向"
},
"TempChangeShortStep": {
"text2": [
"",
"温度調整 短"
],
"text2": "温度調整 短",
"desc": "調校温度時短撳一下嘅温度變幅"
},
"TempChangeLongStep": {
"text2": [
"",
"温度調整 長"
],
"text2": "温度調整 長",
"desc": "調校温度時長撳嘅温度變幅"
},
"PowerPulsePower": {
"text2": [
"",
"電源脈衝"
],
"text2": "電源脈衝",
"desc": "為保持電源喚醒而通電所用嘅功率 <watt>"
},
"HallEffSensitivity": {
"text2": [
"",
"磁場敏感度"
],
"text2": "磁場敏感度",
"desc": "磁場感應器用嚟啓動待機模式嘅敏感度 <關=停用 | 低=最低敏感度 | 中=中等敏感度 | 高=最高敏感度>"
},
"LockingMode": {
"text2": [
"",
"撳掣鎖定"
],
"text2": "撳掣鎖定",
"desc": "喺焊接模式時,同時長撳兩粒掣啓用撳掣鎖定 <無=停用 | 增=鎖定增熱模式 | 全=鎖定全部>"
},
"MinVolCell": {
"text2": [
"",
"最低電壓"
],
"text2": "最低電壓",
"desc": "每粒電池嘅最低可用電壓 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
},
"AnimLoop": {
"text2": [
"",
"動畫循環"
],
"text2": "動畫循環",
"desc": "循環顯示功能表圖示動畫"
},
"AnimSpeed": {
"text2": [
"",
"動畫速度"
],
"text2": "動畫速度",
"desc": "功能表圖示動畫嘅速度 <關=不顯示動畫 | 慢=慢速 | 中=中速 | 快=快速>"
},
"PowerPulseWait": {
"text2": [
"",
"電源脈衝間隔"
],
"text2": "電源脈衝間隔",
"desc": "為保持電源喚醒,每次通電之間嘅間隔時間 <x2.5s(秒)>"
},
"PowerPulseDuration": {
"text2": [
"",
"電源脈衝時長"
],
"text2": "電源脈衝時長",
"desc": "為保持電源喚醒,每次通電脈衝嘅時間長度 <x250ms亳秒>"
}
}

View File

@@ -62,243 +62,141 @@
},
"menuGroups": {
"PowerMenu": {
"text2": [
"",
"電源設定"
],
"text2": "電源設定",
"desc": "電源設定"
},
"SolderingMenu": {
"text2": [
"",
"焊接設定"
],
"text2": "焊接設定",
"desc": "焊接設定"
},
"PowerSavingMenu": {
"text2": [
"",
"待機設定"
],
"text2": "待機設定",
"desc": "自動待機省電設定"
},
"UIMenu": {
"text2": [
"",
"使用者介面"
],
"text2": "使用者介面",
"desc": "使用者介面設定"
},
"AdvancedMenu": {
"text2": [
"",
"進階設定"
],
"text2": "進階設定",
"desc": "進階設定"
}
},
"menuOptions": {
"DCInCutoff": {
"text2": [
"",
"電源"
],
"text2": "電源",
"desc": "輸入電源;設定自動停機電壓 <DC 10V> <S 鋰電池以每顆3.3V計算;此設定會停用功率限制>"
},
"SleepTemperature": {
"text2": [
"",
"待機溫度"
],
"text2": "待機溫度",
"desc": "於待機模式時的鉻鐵頭溫度"
},
"SleepTimeout": {
"text2": [
"",
"待機延時"
],
"text2": "待機延時",
"desc": "自動進入待機模式前的閒置等候時間 <S=秒 | M=分鐘>"
},
"ShutdownTimeout": {
"text2": [
"",
"自動關機"
],
"text2": "自動關機",
"desc": "自動關機前的閒置等候時間 <M=分鐘>"
},
"MotionSensitivity": {
"text2": [
"",
"動作敏感度"
],
"text2": "動作敏感度",
"desc": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
},
"TemperatureUnit": {
"text2": [
"",
"溫標"
],
"text2": "溫標",
"desc": "C=攝氏 | F=華氏"
},
"AdvancedIdle": {
"text2": [
"",
"詳細閒置畫面"
],
"text2": "詳細閒置畫面",
"desc": "於閒置畫面以英文小字型顯示詳細資料"
},
"DisplayRotation": {
"text2": [
"",
"畫面方向"
],
"text2": "畫面方向",
"desc": "A=自動 | L=使用左手 | R=使用右手"
},
"BoostTemperature": {
"text2": [
"",
"增熱溫度"
],
"text2": "增熱溫度",
"desc": "於增熱模式時使用的溫度"
},
"AutoStart": {
"text2": [
"",
"自動啟用"
],
"text2": "自動啟用",
"desc": "開機時自動啟用 <無=停用 | 焊=焊接模式 | 待=待機模式 | 室=室溫待機>"
},
"CooldownBlink": {
"text2": [
"",
"降溫時閃爍"
],
"text2": "降溫時閃爍",
"desc": "停止加熱之後,當鉻鐵頭仍處於高溫時閃爍畫面"
},
"TemperatureCalibration": {
"text2": [
"",
"溫度校正?"
],
"text2": "溫度校正?",
"desc": "開始校正鉻鐵頭溫度位移"
},
"SettingsReset": {
"text2": [
"",
"全部重設?"
],
"text2": "全部重設?",
"desc": "將所有設定重設到預設值"
},
"VoltageCalibration": {
"text2": [
"",
"輸入電壓校正?"
],
"text2": "輸入電壓校正?",
"desc": "開始校正VIN輸入電壓 <長按以退出>"
},
"AdvancedSoldering": {
"text2": [
"",
"詳細焊接畫面"
],
"text2": "詳細焊接畫面",
"desc": "於焊接模式畫面以英文小字型顯示詳細資料"
},
"ScrollingSpeed": {
"text2": [
"",
"捲動速度"
],
"text2": "捲動速度",
"desc": "解說文字的捲動速度"
},
"QCMaxVoltage": {
"text2": [
"",
"QC電壓"
],
"text2": "QC電壓",
"desc": "使用QC電源時請求的最高目標電壓"
},
"PowerLimit": {
"text2": [
"",
"功率限制"
],
"text2": "功率限制",
"desc": "限制鉻鐵可用的最大功率 <W=watt瓦特>"
},
"ReverseButtonTempChange": {
"text2": [
"",
"調換加減鍵"
],
"text2": "調換加減鍵",
"desc": "調校溫度時調換加減鍵的方向"
},
"TempChangeShortStep": {
"text2": [
"",
"溫度調整 短"
],
"text2": "溫度調整 短",
"desc": "調校溫度時短按一下的溫度變幅"
},
"TempChangeLongStep": {
"text2": [
"",
"溫度調整 長"
],
"text2": "溫度調整 長",
"desc": "調校溫度時長按按鍵的溫度變幅"
},
"PowerPulsePower": {
"text2": [
"",
"電源脈衝"
],
"text2": "電源脈衝",
"desc": "為保持電源喚醒而通電所用的功率 <watt瓦特>"
},
"HallEffSensitivity": {
"text2": [
"",
"磁場敏感度"
],
"text2": "磁場敏感度",
"desc": "磁場感應器用作啟動待機模式的敏感度 <關=停用 | 低=最低敏感度 | 中=中等敏感度 | 高=最高敏感度>"
},
"LockingMode": {
"text2": [
"",
"按鍵鎖定"
],
"text2": "按鍵鎖定",
"desc": "於焊接模式時,同時長按兩個按鍵啟用按鍵鎖定 <無=停用 | 增=鎖定增熱模式 | 全=鎖定全部>"
},
"MinVolCell": {
"text2": [
"",
"最低電壓"
],
"text2": "最低電壓",
"desc": "每顆電池的最低可用電壓 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
},
"AnimLoop": {
"text2": [
"",
"動畫循環"
],
"text2": "動畫循環",
"desc": "循環顯示功能表圖示動畫"
},
"AnimSpeed": {
"text2": [
"",
"動畫速度"
],
"text2": "動畫速度",
"desc": "功能表圖示動畫的速度 <關=不顯示動畫 | 慢=慢速 | 中=中速 | 快=快速>"
},
"PowerPulseWait": {
"text2": [
"",
"電源脈衝間隔"
],
"text2": "電源脈衝間隔",
"desc": "為保持電源喚醒,每次通電之間的間隔時間 <x2.5s(秒)>"
},
"PowerPulseDuration": {
"text2": [
"",
"電源脈衝時長"
],
"text2": "電源脈衝時長",
"desc": "為保持電源喚醒,每次通電脈衝的時間長度 <x250ms亳秒>"
}
}

View File

@@ -195,23 +195,28 @@ var def =
"menuGroups": [
{
"id": "PowerMenu",
"maxLen": 11
"maxLen": 5,
"maxLen2": 11
},
{
"id": "SolderingMenu",
"maxLen": 11
"maxLen": 5,
"maxLen2": 11
},
{
"id": "PowerSavingMenu",
"maxLen": 11
"maxLen": 5,
"maxLen2": 11
},
{
"id": "UIMenu",
"maxLen": 11
"maxLen": 5,
"maxLen2": 11
},
{
"id": "AdvancedMenu",
"maxLen": 11
"maxLen": 5,
"maxLen2": 11
}
],
"menuOptions": [