Add context menu to select spelling language

This commit is contained in:
Yuya Ochiai
2017-04-27 00:42:48 +09:00
parent 3a9227f974
commit 256e317402
10 changed files with 103 additions and 44 deletions

View File

@@ -10,14 +10,49 @@ function getSuggestionsMenus(win, suggestions) {
}));
}
function getSpellCheckerLocaleMenus(onSelectSpellCheckerLocale) {
const currentLocale = ipcRenderer.sendSync('get-spellchecker-locale');
const locales = [
{language: 'English', locale: 'en-US'},
{language: 'French', locale: 'fr-FR'},
{language: 'German', locale: 'de-DE'},
{language: 'Spanish', locale: 'es-ES'},
{language: 'Dutch', locale: 'nl-NL'}
];
return locales.map((l) => ({
label: l.language,
type: 'checkbox',
checked: l.locale === currentLocale,
click() {
if (onSelectSpellCheckerLocale) {
onSelectSpellCheckerLocale(l.locale);
}
}
}));
}
module.exports = {
setup(win) {
setup(win, options) {
const defaultOptions = {
useSpellChecker: false,
onSelectSpellCheckerLocale: null
};
const actualOptions = Object.assign({}, defaultOptions, options);
electronContextMenu({
window: win,
prepend(params) {
if (params.isEditable && params.misspelledWord !== '') {
const suggestions = ipcRenderer.sendSync('get-spelling-suggestions', params.misspelledWord);
return getSuggestionsMenus(win, suggestions);
if (actualOptions.useSpellChecker) {
const prependMenuItems = [];
if (params.isEditable && params.misspelledWord !== '') {
const suggestions = ipcRenderer.sendSync('get-spelling-suggestions', params.misspelledWord);
prependMenuItems.push(...getSuggestionsMenus(win, suggestions));
}
if (params.isEditable) {
prependMenuItems.push(
{type: 'separator'},
{label: 'Spelling Languages', submenu: getSpellCheckerLocaleMenus(actualOptions.onSelectSpellCheckerLocale)});
}
return prependMenuItems;
}
return [];
}