diff options
Diffstat (limited to 'src/lib/Menu.js')
-rw-r--r-- | src/lib/Menu.js | 130 |
1 files changed, 124 insertions, 6 deletions
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index 2f918dcb0..e26c50e1e 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -21,9 +21,37 @@ const menuItems = defineMessages({ | |||
21 | id: 'menu.edit', | 21 | id: 'menu.edit', |
22 | defaultMessage: '!!!Edit', | 22 | defaultMessage: '!!!Edit', |
23 | }, | 23 | }, |
24 | view: { | 24 | undo: { |
25 | id: 'menu.view', | 25 | id: 'menu.edit.undo', |
26 | defaultMessage: '!!!View', | 26 | defaultMessage: '!!!Undo', |
27 | }, | ||
28 | redo: { | ||
29 | id: 'menu.edit.redo', | ||
30 | defaultMessage: '!!!Redo', | ||
31 | }, | ||
32 | cut: { | ||
33 | id: 'menu.edit.cut', | ||
34 | defaultMessage: '!!!Cut', | ||
35 | }, | ||
36 | copy: { | ||
37 | id: 'menu.edit.copy', | ||
38 | defaultMessage: '!!!Copy', | ||
39 | }, | ||
40 | paste: { | ||
41 | id: 'menu.edit.paste', | ||
42 | defaultMessage: '!!!Paste', | ||
43 | }, | ||
44 | pasteAndMatchStyle: { | ||
45 | id: 'menu.edit.pasteAndMatchStyle', | ||
46 | defaultMessage: '!!!Paste And Match Style', | ||
47 | }, | ||
48 | delete: { | ||
49 | id: 'menu.edit.delete', | ||
50 | defaultMessage: '!!!Delete', | ||
51 | }, | ||
52 | selectAll: { | ||
53 | id: 'menu.edit.selectAll', | ||
54 | defaultMessage: '!!!Select All', | ||
27 | }, | 55 | }, |
28 | findInPage: { | 56 | findInPage: { |
29 | id: 'menu.edit.findInPage', | 57 | id: 'menu.edit.findInPage', |
@@ -61,6 +89,22 @@ const menuItems = defineMessages({ | |||
61 | id: 'menu.view.forward', | 89 | id: 'menu.view.forward', |
62 | defaultMessage: '!!!Forward', | 90 | defaultMessage: '!!!Forward', |
63 | }, | 91 | }, |
92 | resetZoom: { | ||
93 | id: 'menu.view.resetZoom', | ||
94 | defaultMessage: '!!!Actual Size', | ||
95 | }, | ||
96 | zoomIn: { | ||
97 | id: 'menu.view.zoomIn', | ||
98 | defaultMessage: '!!!Zoom In', | ||
99 | }, | ||
100 | zoomOut: { | ||
101 | id: 'menu.view.zoomOut', | ||
102 | defaultMessage: '!!!Zoom Out', | ||
103 | }, | ||
104 | toggleFullScreen: { | ||
105 | id: 'menu.view.toggleFullScreen', | ||
106 | defaultMessage: '!!!Toggle Full Screen', | ||
107 | }, | ||
64 | toggleDarkMode: { | 108 | toggleDarkMode: { |
65 | id: 'menu.view.toggleDarkMode', | 109 | id: 'menu.view.toggleDarkMode', |
66 | defaultMessage: '!!!Toggle Dark Mode', | 110 | defaultMessage: '!!!Toggle Dark Mode', |
@@ -93,6 +137,14 @@ const menuItems = defineMessages({ | |||
93 | id: 'menu.view.reloadTodos', | 137 | id: 'menu.view.reloadTodos', |
94 | defaultMessage: '!!!Reload ToDos', | 138 | defaultMessage: '!!!Reload ToDos', |
95 | }, | 139 | }, |
140 | minimize: { | ||
141 | id: 'menu.window.minimize', | ||
142 | defaultMessage: '!!!Minimize', | ||
143 | }, | ||
144 | close: { | ||
145 | id: 'menu.window.close', | ||
146 | defaultMessage: '!!!Close', | ||
147 | }, | ||
96 | learnMore: { | 148 | learnMore: { |
97 | id: 'menu.help.learnMore', | 149 | id: 'menu.help.learnMore', |
98 | defaultMessage: '!!!Learn More', | 150 | defaultMessage: '!!!Learn More', |
@@ -141,10 +193,26 @@ const menuItems = defineMessages({ | |||
141 | id: 'menu.file', | 193 | id: 'menu.file', |
142 | defaultMessage: '!!!File', | 194 | defaultMessage: '!!!File', |
143 | }, | 195 | }, |
196 | view: { | ||
197 | id: 'menu.view', | ||
198 | defaultMessage: '!!!View', | ||
199 | }, | ||
144 | services: { | 200 | services: { |
145 | id: 'menu.services', | 201 | id: 'menu.services', |
146 | defaultMessage: '!!!Services', | 202 | defaultMessage: '!!!Services', |
147 | }, | 203 | }, |
204 | window: { | ||
205 | id: 'menu.window', | ||
206 | defaultMessage: '!!!Window', | ||
207 | }, | ||
208 | help: { | ||
209 | id: 'menu.help', | ||
210 | defaultMessage: '!!!Help', | ||
211 | }, | ||
212 | about: { | ||
213 | id: 'menu.app.about', | ||
214 | defaultMessage: '!!!About Ferdi', | ||
215 | }, | ||
148 | announcement: { | 216 | announcement: { |
149 | id: 'menu.app.announcement', | 217 | id: 'menu.app.announcement', |
150 | defaultMessage: '!!!What\'s new?', | 218 | defaultMessage: '!!!What\'s new?', |
@@ -157,10 +225,26 @@ const menuItems = defineMessages({ | |||
157 | id: 'menu.app.checkForUpdates', | 225 | id: 'menu.app.checkForUpdates', |
158 | defaultMessage: '!!!Check for updates', | 226 | defaultMessage: '!!!Check for updates', |
159 | }, | 227 | }, |
228 | hide: { | ||
229 | id: 'menu.app.hide', | ||
230 | defaultMessage: '!!!Hide', | ||
231 | }, | ||
232 | hideOthers: { | ||
233 | id: 'menu.app.hideOthers', | ||
234 | defaultMessage: '!!!Hide Others', | ||
235 | }, | ||
236 | unhide: { | ||
237 | id: 'menu.app.unhide', | ||
238 | defaultMessage: '!!!Unhide', | ||
239 | }, | ||
160 | autohideMenuBar: { | 240 | autohideMenuBar: { |
161 | id: 'menu.app.autohideMenuBar', | 241 | id: 'menu.app.autohideMenuBar', |
162 | defaultMessage: '!!!Auto-hide menu bar', | 242 | defaultMessage: '!!!Auto-hide menu bar', |
163 | }, | 243 | }, |
244 | quit: { | ||
245 | id: 'menu.app.quit', | ||
246 | defaultMessage: '!!!Quit', | ||
247 | }, | ||
164 | addNewService: { | 248 | addNewService: { |
165 | id: 'menu.services.addNewService', | 249 | id: 'menu.services.addNewService', |
166 | defaultMessage: '!!!Add New Service...', | 250 | defaultMessage: '!!!Add New Service...', |
@@ -233,31 +317,46 @@ const _titleBarTemplateFactory = (intl, locked) => [ | |||
233 | accelerator: 'Alt+E', | 317 | accelerator: 'Alt+E', |
234 | submenu: [ | 318 | submenu: [ |
235 | { | 319 | { |
320 | label: intl.formatMessage(menuItems.undo), | ||
236 | role: 'undo', | 321 | role: 'undo', |
237 | }, | 322 | }, |
238 | { | 323 | { |
324 | label: intl.formatMessage(menuItems.redo), | ||
239 | role: 'redo', | 325 | role: 'redo', |
240 | }, | 326 | }, |
241 | { | 327 | { |
242 | type: 'separator', | 328 | type: 'separator', |
243 | }, | 329 | }, |
244 | { | 330 | { |
331 | label: intl.formatMessage(menuItems.cut), | ||
332 | accelerator: `${cmdKey}+X`, | ||
245 | role: 'cut', | 333 | role: 'cut', |
246 | }, | 334 | }, |
247 | { | 335 | { |
336 | label: intl.formatMessage(menuItems.copy), | ||
337 | accelerator: `${cmdKey}+C`, | ||
248 | role: 'copy', | 338 | role: 'copy', |
249 | }, | 339 | }, |
250 | { | 340 | { |
341 | label: intl.formatMessage(menuItems.paste), | ||
342 | accelerator: `${cmdKey}+V`, | ||
251 | role: 'paste', | 343 | role: 'paste', |
252 | }, | 344 | }, |
253 | { | 345 | { |
254 | role: 'pasteAndMatchStyle', | 346 | label: intl.formatMessage(menuItems.pasteAndMatchStyle), |
255 | accelerator: `${cmdKey}+Shift+V`, // Override the accelerator since this adds new key combo in macos | 347 | accelerator: `${cmdKey}+Shift+V`, // Override the accelerator since this adds new key combo in macos |
348 | role: 'pasteAndMatchStyle', | ||
349 | click() { | ||
350 | getActiveWebview().pasteAndMatchStyle(); | ||
351 | }, | ||
256 | }, | 352 | }, |
257 | { | 353 | { |
354 | label: intl.formatMessage(menuItems.delete), | ||
258 | role: 'delete', | 355 | role: 'delete', |
259 | }, | 356 | }, |
260 | { | 357 | { |
358 | label: intl.formatMessage(menuItems.selectAll), | ||
359 | accelerator: `${cmdKey}+A`, | ||
261 | role: 'selectall', | 360 | role: 'selectall', |
262 | }, | 361 | }, |
263 | ], | 362 | ], |
@@ -319,12 +418,16 @@ const _titleBarTemplateFactory = (intl, locked) => [ | |||
319 | type: 'separator', | 418 | type: 'separator', |
320 | }, | 419 | }, |
321 | { | 420 | { |
421 | label: intl.formatMessage(menuItems.resetZoom), | ||
422 | accelerator: `${cmdKey}+0`, | ||
322 | role: 'resetZoom', | 423 | role: 'resetZoom', |
323 | click() { | 424 | click() { |
324 | getActiveWebview().setZoomLevel(0); | 425 | getActiveWebview().setZoomLevel(0); |
325 | }, | 426 | }, |
326 | }, | 427 | }, |
327 | { | 428 | { |
429 | label: intl.formatMessage(menuItems.zoomIn), | ||
430 | accelerator: `${cmdKey}+plus`, | ||
328 | role: 'zoomIn', | 431 | role: 'zoomIn', |
329 | click() { | 432 | click() { |
330 | const activeService = getActiveWebview(); | 433 | const activeService = getActiveWebview(); |
@@ -335,6 +438,8 @@ const _titleBarTemplateFactory = (intl, locked) => [ | |||
335 | }, | 438 | }, |
336 | }, | 439 | }, |
337 | { | 440 | { |
441 | label: intl.formatMessage(menuItems.zoomOut), | ||
442 | accelerator: `${cmdKey}+-`, | ||
338 | role: 'zoomOut', | 443 | role: 'zoomOut', |
339 | click() { | 444 | click() { |
340 | const activeService = getActiveWebview(); | 445 | const activeService = getActiveWebview(); |
@@ -348,6 +453,7 @@ const _titleBarTemplateFactory = (intl, locked) => [ | |||
348 | type: 'separator', | 453 | type: 'separator', |
349 | }, | 454 | }, |
350 | { | 455 | { |
456 | label: intl.formatMessage(menuItems.toggleFullScreen), | ||
351 | role: 'toggleFullScreen', | 457 | role: 'toggleFullScreen', |
352 | }, | 458 | }, |
353 | { | 459 | { |
@@ -384,17 +490,22 @@ const _titleBarTemplateFactory = (intl, locked) => [ | |||
384 | visible: !locked && todosStore.isFeatureEnabled, | 490 | visible: !locked && todosStore.isFeatureEnabled, |
385 | }, | 491 | }, |
386 | { | 492 | { |
493 | label: intl.formatMessage(menuItems.window), | ||
387 | role: 'window', | 494 | role: 'window', |
388 | submenu: [ | 495 | submenu: [ |
389 | { | 496 | { |
497 | label: intl.formatMessage(menuItems.minimize), | ||
390 | role: 'minimize', | 498 | role: 'minimize', |
391 | }, | 499 | }, |
392 | { | 500 | { |
501 | label: intl.formatMessage(menuItems.close), | ||
393 | role: 'close', | 502 | role: 'close', |
394 | }, | 503 | }, |
395 | ], | 504 | ], |
396 | }, | 505 | }, |
397 | { | 506 | { |
507 | label: intl.formatMessage(menuItems.help), | ||
508 | accelerator: 'Alt+H', | ||
398 | role: 'help', | 509 | role: 'help', |
399 | submenu: [ | 510 | submenu: [ |
400 | { | 511 | { |
@@ -599,6 +710,7 @@ export default class FranzMenu { | |||
599 | accelerator: 'Alt+F', | 710 | accelerator: 'Alt+F', |
600 | submenu: [ | 711 | submenu: [ |
601 | { | 712 | { |
713 | label: intl.formatMessage(menuItems.about), | ||
602 | role: 'about', | 714 | role: 'about', |
603 | }, | 715 | }, |
604 | { | 716 | { |
@@ -633,18 +745,22 @@ export default class FranzMenu { | |||
633 | type: 'separator', | 745 | type: 'separator', |
634 | }, | 746 | }, |
635 | { | 747 | { |
748 | label: intl.formatMessage(menuItems.hide), | ||
636 | role: 'hide', | 749 | role: 'hide', |
637 | }, | 750 | }, |
638 | { | 751 | { |
752 | label: intl.formatMessage(menuItems.hideOthers), | ||
639 | role: 'hideOthers', | 753 | role: 'hideOthers', |
640 | }, | 754 | }, |
641 | { | 755 | { |
756 | label: intl.formatMessage(menuItems.unhide), | ||
642 | role: 'unhide', | 757 | role: 'unhide', |
643 | }, | 758 | }, |
644 | { | 759 | { |
645 | type: 'separator', | 760 | type: 'separator', |
646 | }, | 761 | }, |
647 | { | 762 | { |
763 | label: intl.formatMessage(menuItems.quit), | ||
648 | role: 'quit', | 764 | role: 'quit', |
649 | click() { | 765 | click() { |
650 | app.quit(); | 766 | app.quit(); |
@@ -654,6 +770,7 @@ export default class FranzMenu { | |||
654 | }); | 770 | }); |
655 | 771 | ||
656 | const about = { | 772 | const about = { |
773 | label: intl.formatMessage(menuItems.about), | ||
657 | role: 'about', | 774 | role: 'about', |
658 | click: () => { | 775 | click: () => { |
659 | dialog.showMessageBox({ | 776 | dialog.showMessageBox({ |
@@ -693,7 +810,7 @@ export default class FranzMenu { | |||
693 | tpl[0].submenu = [ | 810 | tpl[0].submenu = [ |
694 | { | 811 | { |
695 | label: intl.formatMessage(menuItems.settings), | 812 | label: intl.formatMessage(menuItems.settings), |
696 | accelerator: 'Ctrl+P', | 813 | accelerator: `${cmdKey}+P`, |
697 | click: () => { | 814 | click: () => { |
698 | this.actions.ui.openSettings({ path: 'app' }); | 815 | this.actions.ui.openSettings({ path: 'app' }); |
699 | }, | 816 | }, |
@@ -704,8 +821,9 @@ export default class FranzMenu { | |||
704 | type: 'separator', | 821 | type: 'separator', |
705 | }, | 822 | }, |
706 | { | 823 | { |
824 | label: intl.formatMessage(menuItems.quit), | ||
707 | role: 'quit', | 825 | role: 'quit', |
708 | accelerator: 'Ctrl+Q', | 826 | accelerator: `${cmdKey}+Q`, |
709 | click() { | 827 | click() { |
710 | app.quit(); | 828 | app.quit(); |
711 | }, | 829 | }, |