Skip to content

Commit

Permalink
Use block aware "Select All" command in context menu and app menu
Browse files Browse the repository at this point in the history
  • Loading branch information
heyman committed Jan 9, 2025
1 parent 3107cb5 commit 449b0a5
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 6 deletions.
16 changes: 12 additions & 4 deletions electron/main/menu.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { app, Menu } = require("electron")
import { OPEN_SETTINGS_EVENT, UNDO_EVENT, REDO_EVENT, MOVE_BLOCK_EVENT, DELETE_BLOCK_EVENT, CHANGE_BUFFER_EVENT } from '@/src/common/constants'
import { OPEN_SETTINGS_EVENT, UNDO_EVENT, REDO_EVENT, MOVE_BLOCK_EVENT, DELETE_BLOCK_EVENT, CHANGE_BUFFER_EVENT, SELECT_ALL_EVENT } from '@/src/common/constants'
import { openAboutWindow } from "./about";
import { quit } from "./index"

Expand All @@ -22,6 +22,14 @@ const redoMenuItem = {
},
}

const selectAllMenuItem = {
label: 'Select All',
accelerator: 'CommandOrControl+a',
click: (menuItem, window, event) => {
window?.webContents.send(SELECT_ALL_EVENT)
},
}

const deleteBlockMenuItem = {
label: 'Delete block',
accelerator: 'CommandOrControl+Shift+D',
Expand Down Expand Up @@ -117,7 +125,7 @@ const template = [
...(isMac ? [
{ role: 'pasteAndMatchStyle' },
{ role: 'delete' },
{ role: 'selectAll' },
selectAllMenuItem,
{ type: 'separator' },
{
label: 'Speech',
Expand All @@ -129,7 +137,7 @@ const template = [
] : [
{ role: 'delete' },
{ type: 'separator' },
{ role: 'selectAll' }
selectAllMenuItem,
])
]
},
Expand Down Expand Up @@ -226,7 +234,7 @@ export function getEditorContextMenu(win) {
{role: 'copy'},
{role: 'paste'},
{type: 'separator'},
{role: 'selectAll'},
selectAllMenuItem,
{type: 'separator'},
deleteBlockMenuItem,
moveBlockMenuItem,
Expand Down
1 change: 1 addition & 0 deletions src/common/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const UNDO_EVENT = "undo"
export const MOVE_BLOCK_EVENT = "move-block"
export const DELETE_BLOCK_EVENT = "delete-block"
export const CHANGE_BUFFER_EVENT = "change-buffer"
export const SELECT_ALL_EVENT = "select-all"

export const UPDATE_AVAILABLE_EVENT = "update-available"
export const UPDATE_NOT_AVAILABLE_EVENT = "update-not-available"
Expand Down
9 changes: 8 additions & 1 deletion src/components/Editor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import { useErrorStore } from "../stores/error-store"
import { useHeynoteStore } from "../stores/heynote-store.js"
import { useEditorCacheStore } from "../stores/editor-cache"
import { REDO_EVENT, WINDOW_CLOSE_EVENT, DELETE_BLOCK_EVENT, UNDO_EVENT } from '@/src/common/constants';
import { REDO_EVENT, WINDOW_CLOSE_EVENT, DELETE_BLOCK_EVENT, UNDO_EVENT, SELECT_ALL_EVENT } from '@/src/common/constants';
const NUM_EDITOR_INSTANCES = 5
Expand Down Expand Up @@ -57,6 +57,12 @@
}
})
window.heynote.mainProcess.on(SELECT_ALL_EVENT, () => {
if (this.editor) {
toRaw(this.editor).selectAll()
}
})
// if debugSyntaxTree prop is set, display syntax tree for debugging
if (this.debugSyntaxTree) {
setInterval(() => {
Expand All @@ -82,6 +88,7 @@
window.heynote.mainProcess.off(UNDO_EVENT)
window.heynote.mainProcess.off(REDO_EVENT)
window.heynote.mainProcess.off(DELETE_BLOCK_EVENT)
window.heynote.mainProcess.off(SELECT_ALL_EVENT)
this.editorCacheStore.tearDown();
},
Expand Down
6 changes: 5 additions & 1 deletion src/editor/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { customSetup } from "./setup.js"
import { heynoteLang } from "./lang-heynote/heynote.js"
import { noteBlockExtension, blockLineNumbers, blockState, getActiveNoteBlock, triggerCursorChange } from "./block/block.js"
import { heynoteEvent, SET_CONTENT, DELETE_BLOCK, APPEND_BLOCK } from "./annotation.js";
import { changeCurrentBlockLanguage, triggerCurrenciesLoaded, getBlockDelimiter, deleteBlock } from "./block/commands.js"
import { changeCurrentBlockLanguage, triggerCurrenciesLoaded, getBlockDelimiter, deleteBlock, selectAll } from "./block/commands.js"
import { formatBlockContent } from "./block/format-code.js"
import { heynoteKeymap } from "./keymap.js"
import { emacsKeymap } from "./emacs.js"
Expand Down Expand Up @@ -413,6 +413,10 @@ export class HeynoteEditor {
redo() {
redo(this.view)
}

selectAll() {
selectAll(this.view)
}
}


Expand Down

0 comments on commit 449b0a5

Please sign in to comment.