fix: update ui when shortcut changed
This commit is contained in:
@@ -6,15 +6,15 @@
|
|||||||
"message": "A simple bilingual translation extension & Greasemonkey script"
|
"message": "A simple bilingual translation extension & Greasemonkey script"
|
||||||
},
|
},
|
||||||
"toggle_translate": {
|
"toggle_translate": {
|
||||||
"message": "Toggle Translate (Alt+Q)"
|
"message": "Toggle Translate"
|
||||||
},
|
},
|
||||||
"toggle_style": {
|
"toggle_style": {
|
||||||
"message": "Toggle Style (Alt+C)"
|
"message": "Toggle Style"
|
||||||
},
|
},
|
||||||
"open_options": {
|
"open_options": {
|
||||||
"message": "Open Options (Alt+O)"
|
"message": "Open Options"
|
||||||
},
|
},
|
||||||
"open_tranbox": {
|
"open_tranbox": {
|
||||||
"message": "Translate Popup/Selected (Alt+S)"
|
"message": "Translate Popup/Selected"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,15 +6,15 @@
|
|||||||
"message": "一个简约的双语对照翻译扩展 & 油猴脚本"
|
"message": "一个简约的双语对照翻译扩展 & 油猴脚本"
|
||||||
},
|
},
|
||||||
"toggle_translate": {
|
"toggle_translate": {
|
||||||
"message": "开启翻译 (Alt+Q)"
|
"message": "开启翻译"
|
||||||
},
|
},
|
||||||
"toggle_style": {
|
"toggle_style": {
|
||||||
"message": "切换样式 (Alt+C)"
|
"message": "切换样式"
|
||||||
},
|
},
|
||||||
"open_options": {
|
"open_options": {
|
||||||
"message": "打开设置 (Alt+O)"
|
"message": "打开设置"
|
||||||
},
|
},
|
||||||
"open_tranbox": {
|
"open_tranbox": {
|
||||||
"message": "翻译弹窗/选中文字 (Alt+S)"
|
"message": "翻译弹窗/选中文字"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {
|
|||||||
MSG_TRANS_TOGGLE_STYLE,
|
MSG_TRANS_TOGGLE_STYLE,
|
||||||
MSG_OPEN_TRANBOX,
|
MSG_OPEN_TRANBOX,
|
||||||
MSG_CONTEXT_MENUS,
|
MSG_CONTEXT_MENUS,
|
||||||
|
MSG_COMMAND_SHORTCUTS,
|
||||||
CMD_TOGGLE_TRANSLATE,
|
CMD_TOGGLE_TRANSLATE,
|
||||||
CMD_TOGGLE_STYLE,
|
CMD_TOGGLE_STYLE,
|
||||||
CMD_OPEN_OPTIONS,
|
CMD_OPEN_OPTIONS,
|
||||||
@@ -138,6 +139,16 @@ browser.runtime.onMessage.addListener(
|
|||||||
removeContextMenus();
|
removeContextMenus();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MSG_COMMAND_SHORTCUTS:
|
||||||
|
browser.commands
|
||||||
|
.getAll()
|
||||||
|
.then((commands) => {
|
||||||
|
sendResponse({ data: commands });
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
sendResponse({ error: error.message });
|
||||||
|
});
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
sendResponse({ error: `message action is unavailable: ${action}` });
|
sendResponse({ error: `message action is unavailable: ${action}` });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,8 +112,8 @@ export const I18N = {
|
|||||||
en: customApiHelpEN,
|
en: customApiHelpEN,
|
||||||
},
|
},
|
||||||
translate_alt: {
|
translate_alt: {
|
||||||
zh: `翻译 (Alt+Q)`,
|
zh: `翻译`,
|
||||||
en: `Translate (Alt+Q)`,
|
en: `Translate`,
|
||||||
},
|
},
|
||||||
basic_setting: {
|
basic_setting: {
|
||||||
zh: `基本设置`,
|
zh: `基本设置`,
|
||||||
@@ -232,8 +232,8 @@ export const I18N = {
|
|||||||
en: `Text Style`,
|
en: `Text Style`,
|
||||||
},
|
},
|
||||||
text_style_alt: {
|
text_style_alt: {
|
||||||
zh: `文字样式 (Alt+C)`,
|
zh: `文字样式`,
|
||||||
en: `Text Style (Alt+C)`,
|
en: `Text Style`,
|
||||||
},
|
},
|
||||||
bg_color: {
|
bg_color: {
|
||||||
zh: `样式颜色`,
|
zh: `样式颜色`,
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ export const MSG_TRANS_GETRULE = "trans_getrule";
|
|||||||
export const MSG_TRANS_PUTRULE = "trans_putrule";
|
export const MSG_TRANS_PUTRULE = "trans_putrule";
|
||||||
export const MSG_TRANS_CURRULE = "trans_currule";
|
export const MSG_TRANS_CURRULE = "trans_currule";
|
||||||
export const MSG_CONTEXT_MENUS = "context_menus";
|
export const MSG_CONTEXT_MENUS = "context_menus";
|
||||||
|
export const MSG_COMMAND_SHORTCUTS = "command_shortcuts";
|
||||||
|
|
||||||
export const THEME_LIGHT = "light";
|
export const THEME_LIGHT = "light";
|
||||||
export const THEME_DARK = "dark";
|
export const THEME_DARK = "dark";
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ export default function Action({ translator, fab }) {
|
|||||||
contextMenus &&
|
contextMenus &&
|
||||||
menuCommandIds.push(
|
menuCommandIds.push(
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Toggle Translate (Alt+Q)",
|
"Toggle Translate",
|
||||||
(event) => {
|
(event) => {
|
||||||
translator.toggle();
|
translator.toggle();
|
||||||
sendIframeMsg(MSG_TRANS_TOGGLE);
|
sendIframeMsg(MSG_TRANS_TOGGLE);
|
||||||
@@ -108,7 +108,7 @@ export default function Action({ translator, fab }) {
|
|||||||
"Q"
|
"Q"
|
||||||
),
|
),
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Toggle Style (Alt+C)",
|
"Toggle Style",
|
||||||
(event) => {
|
(event) => {
|
||||||
translator.toggleStyle();
|
translator.toggleStyle();
|
||||||
sendIframeMsg(MSG_TRANS_TOGGLE_STYLE);
|
sendIframeMsg(MSG_TRANS_TOGGLE_STYLE);
|
||||||
@@ -117,7 +117,7 @@ export default function Action({ translator, fab }) {
|
|||||||
"C"
|
"C"
|
||||||
),
|
),
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Open Menu (Alt+K)",
|
"Open Menu",
|
||||||
(event) => {
|
(event) => {
|
||||||
setShowPopup((pre) => !pre);
|
setShowPopup((pre) => !pre);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import {
|
|||||||
MSG_TRANS_PUTRULE,
|
MSG_TRANS_PUTRULE,
|
||||||
MSG_OPEN_OPTIONS,
|
MSG_OPEN_OPTIONS,
|
||||||
MSG_SAVE_RULE,
|
MSG_SAVE_RULE,
|
||||||
|
MSG_COMMAND_SHORTCUTS,
|
||||||
OPT_TRANS_ALL,
|
OPT_TRANS_ALL,
|
||||||
OPT_LANGS_FROM,
|
OPT_LANGS_FROM,
|
||||||
OPT_LANGS_TO,
|
OPT_LANGS_TO,
|
||||||
@@ -30,6 +31,7 @@ import { tryClearCaches } from "../../libs";
|
|||||||
export default function Popup({ setShowPopup, translator: tran }) {
|
export default function Popup({ setShowPopup, translator: tran }) {
|
||||||
const i18n = useI18n();
|
const i18n = useI18n();
|
||||||
const [rule, setRule] = useState(tran?.rule);
|
const [rule, setRule] = useState(tran?.rule);
|
||||||
|
const [commands, setCommands] = useState({});
|
||||||
|
|
||||||
const handleOpenSetting = () => {
|
const handleOpenSetting = () => {
|
||||||
if (!tran) {
|
if (!tran) {
|
||||||
@@ -111,6 +113,32 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
})();
|
})();
|
||||||
}, [tran]);
|
}, [tran]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
(async () => {
|
||||||
|
try {
|
||||||
|
const commands = {};
|
||||||
|
if (isExt) {
|
||||||
|
const res = await sendBgMsg(MSG_COMMAND_SHORTCUTS);
|
||||||
|
if (!res.error) {
|
||||||
|
res.data.forEach(({ name, shortcut }) => {
|
||||||
|
commands[name] = shortcut;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const shortcuts = tran.setting.shortcuts;
|
||||||
|
if (shortcuts) {
|
||||||
|
Object.entries(shortcuts).forEach(([key, val]) => {
|
||||||
|
commands[key] = val.join("+");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setCommands(commands);
|
||||||
|
} catch (err) {
|
||||||
|
console.log("[query cmds]", err);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}, [tran]);
|
||||||
|
|
||||||
if (!rule) {
|
if (!rule) {
|
||||||
return (
|
return (
|
||||||
<Box minWidth={300}>
|
<Box minWidth={300}>
|
||||||
@@ -153,7 +181,11 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
onChange={handleTransToggle}
|
onChange={handleTransToggle}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
label={i18n("translate_alt")}
|
label={
|
||||||
|
commands["toggleTranslate"]
|
||||||
|
? `${i18n("translate_alt")}(${commands["toggleTranslate"]})`
|
||||||
|
: i18n("translate_alt")
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
@@ -211,7 +243,11 @@ export default function Popup({ setShowPopup, translator: tran }) {
|
|||||||
size="small"
|
size="small"
|
||||||
value={textStyle}
|
value={textStyle}
|
||||||
name="textStyle"
|
name="textStyle"
|
||||||
label={i18n("text_style_alt")}
|
label={
|
||||||
|
commands["toggleStyle"]
|
||||||
|
? `${i18n("text_style_alt")}(${commands["toggleStyle"]})`
|
||||||
|
: i18n("text_style_alt")
|
||||||
|
}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
>
|
>
|
||||||
{OPT_STYLE_ALL.map((item) => (
|
{OPT_STYLE_ALL.map((item) => (
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ export default function Slection({ contextMenus, tranboxSetting, transApis }) {
|
|||||||
contextMenus &&
|
contextMenus &&
|
||||||
menuCommandIds.push(
|
menuCommandIds.push(
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Translate Selected Text (Alt+S)",
|
"Translate Selected Text",
|
||||||
(event) => {
|
(event) => {
|
||||||
handleTranbox();
|
handleTranbox();
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user