Skip to content

Commit cb17910

Browse files
feat(main:menu): add keymap to control editor font size (#229)
1 parent 0fa9cf0 commit cb17910

7 files changed

Lines changed: 82 additions & 53 deletions

File tree

src/main/menu/main.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,36 @@ const editorMenu: MenuItemConstructorOptions[] = [
359359
'main-menu:preview-code'
360360
)
361361
}
362+
},
363+
{
364+
type: 'separator'
365+
},
366+
{
367+
label: i18n.t('menu:editor.fontSizeIncrease'),
368+
accelerator: 'CommandOrControl+=',
369+
click: () => {
370+
BrowserWindow.getFocusedWindow()?.webContents.send(
371+
'main-menu:font-size-increase'
372+
)
373+
}
374+
},
375+
{
376+
label: i18n.t('menu:editor.fontSizeDecrease'),
377+
accelerator: 'CommandOrControl+-',
378+
click: () => {
379+
BrowserWindow.getFocusedWindow()?.webContents.send(
380+
'main-menu:font-size-decrease'
381+
)
382+
}
383+
},
384+
{
385+
label: i18n.t('menu:editor.fontSizeReset'),
386+
accelerator: 'CommandOrControl+0',
387+
click: () => {
388+
BrowserWindow.getFocusedWindow()?.webContents.send(
389+
'main-menu:font-size-reset'
390+
)
391+
}
362392
}
363393
]
364394

src/main/services/i18n/locales/en/menu.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@
6666
"format": "Format",
6767
"previewCode": "Preview Code",
6868
"previewScreenshot": "Preview Screenshot",
69-
"previewMarkdown": "Preview Markdown"
69+
"previewMarkdown": "Preview Markdown",
70+
"fontSizeIncrease": "Font Size Increase",
71+
"fontSizeDecrease": "Font Size Decrease",
72+
"fontSizeReset": "Font Size Reset"
7073
},
7174
"markdown": {
7275
"label": "Markdown",

src/main/services/i18n/locales/ru/menu.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@
6565
"copy": "Скопировать сниппет в буфер",
6666
"format": "Форматировать",
6767
"previewCode": "Просмотр результата HTML/CSS",
68-
"previewScreenshot": "Просмотр скриншота"
68+
"previewScreenshot": "Просмотр скриншота",
69+
"fontSizeIncrease": "Увеличить шрифт",
70+
"fontSizeDecrease": "Уменьшить шрифт",
71+
"fontSizeReset": "Сбросить размер шрифта"
6972
},
7073
"markdown": {
7174
"label": "Markdown",

src/renderer/App.vue

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import router from '@/router'
2828
import { nextTick, ref, watch } from 'vue'
2929
import { ipc, store, track, i18n } from './electron'
30-
import { useAppStore } from './store/app'
30+
import { EDITOR_DEFAULTS, useAppStore } from './store/app'
3131
import { repository } from '../../package.json'
3232
import { useSnippetStore } from './store/snippets'
3333
import {
@@ -48,7 +48,6 @@ import {
4848
useSupportNotification,
4949
checkForRemoteNotification
5050
} from '@/composable/notification'
51-
import { useKeyMap } from '@/composable/keymap'
5251
5352
// По какой то причине необходимо явно установить роут в '/'
5453
// для корректного поведения в продакшен сборке
@@ -98,7 +97,6 @@ const init = async () => {
9897
9998
trackAppUpdate()
10099
checkForRemoteNotification()
101-
useKeyMap()
102100
}
103101
104102
const setTheme = (theme: string) => {
@@ -148,6 +146,14 @@ watch(
148146
}
149147
)
150148
149+
watch(
150+
() => appStore.editor,
151+
v => {
152+
store.preferences.set('editor', { ...v })
153+
},
154+
{ deep: true }
155+
)
156+
151157
ipc.on('main:update-available', () => {
152158
isUpdateAvailable.value = true
153159
})
@@ -210,6 +216,22 @@ ipc.on('main-menu:add-description', async () => {
210216
await onAddDescription()
211217
})
212218
219+
ipc.on('main-menu:font-size-increase', async () => {
220+
appStore.editor.fontSize += 1
221+
emitter.emit('editor:refresh', true)
222+
})
223+
224+
ipc.on('main-menu:font-size-decrease', async () => {
225+
if (appStore.editor.fontSize === 1) return
226+
appStore.editor.fontSize -= 1
227+
emitter.emit('editor:refresh', true)
228+
})
229+
230+
ipc.on('main-menu:font-size-reset', async () => {
231+
appStore.editor.fontSize = EDITOR_DEFAULTS.fontSize
232+
emitter.emit('editor:refresh', true)
233+
})
234+
213235
ipc.on('api:snippet-create', (event, body: Snippet) => {
214236
onCreateSnippet(body)
215237
})

src/renderer/components/editor/EditorCodemirror.vue

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,15 @@ import 'codemirror/addon/selection/active-line'
3838
import 'codemirror/addon/scroll/simplescrollbars'
3939
import 'codemirror/addon/scroll/simplescrollbars.css'
4040
import 'codemirror/lib/codemirror.css'
41-
import { computed, onMounted, onUnmounted, reactive, ref, watch } from 'vue'
41+
import {
42+
computed,
43+
nextTick,
44+
onMounted,
45+
onUnmounted,
46+
reactive,
47+
ref,
48+
watch
49+
} from 'vue'
4250
import { i18n, ipc, track } from '@/electron'
4351
import { languages } from './languages'
4452
import { useAppStore } from '@/store/app'
@@ -320,16 +328,21 @@ watch(
320328
}
321329
)
322330
331+
watch(
332+
() => appStore.editor.fontSize,
333+
() => {
334+
nextTick(() => editor.refresh())
335+
}
336+
)
337+
323338
emitter.on('snippet:format', () => format())
324-
emitter.on('editor:refresh', () => editor.refresh())
325339
326340
onMounted(() => {
327341
init()
328342
})
329343
330344
onUnmounted(() => {
331345
emitter.off('snippet:format')
332-
emitter.off('editor:refresh')
333346
})
334347
</script>
335348

src/renderer/composable/keymap.ts

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/shared/types/main/index.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ type MainMenuAction =
4545
| 'preview-markdown'
4646
| 'search'
4747
| 'sort-snippets'
48+
| 'font-size-increase'
49+
| 'font-size-decrease'
50+
| 'font-size-reset'
4851

4952
type MainAction =
5053
| 'restart'

0 commit comments

Comments
 (0)