aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2019-08-02 11:41:51 +0200
committerLibravatar Stefan Malzner <stefan@adlk.io>2019-08-02 11:41:51 +0200
commit6297d46f370092598d2ebb973bb69f2c368d7904 (patch)
tree52bdd4885537ca2fb20be32b2db9c8c4dc95f908
parentAdd separator to todos panel (diff)
downloadferdium-app-6297d46f370092598d2ebb973bb69f2c368d7904.tar.gz
ferdium-app-6297d46f370092598d2ebb973bb69f2c368d7904.tar.zst
ferdium-app-6297d46f370092598d2ebb973bb69f2c368d7904.zip
Add option to toggle the Todos panel
-rw-r--r--packages/theme/src/themes/dark/index.ts5
-rw-r--r--packages/theme/src/themes/default/index.ts7
-rw-r--r--src/features/todos/actions.js1
-rw-r--r--src/features/todos/components/TodosWebview.js56
-rw-r--r--src/features/todos/containers/TodosScreen.js2
-rw-r--r--src/features/todos/index.js1
-rw-r--r--src/features/todos/store.js15
-rw-r--r--src/i18n/locales/defaultMessages.json271
-rw-r--r--src/i18n/locales/en-US.json5
-rw-r--r--src/i18n/messages/src/lib/Menu.json271
-rw-r--r--src/lib/Menu.js50
11 files changed, 446 insertions, 238 deletions
diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts
index cb1b33f2d..d29345298 100644
--- a/packages/theme/src/themes/dark/index.ts
+++ b/packages/theme/src/themes/dark/index.ts
@@ -124,6 +124,11 @@ export const todos = merge({}, defaultStyles.todos, {
124 todosLayer: { 124 todosLayer: {
125 borderLeftColor: legacyStyles.darkThemeGrayDarker, 125 borderLeftColor: legacyStyles.darkThemeGrayDarker,
126 }, 126 },
127 toggleButton: {
128 background: defaultStyles.styleTypes.primary.accent,
129 textColor: defaultStyles.styleTypes.primary.contrast,
130 shadowColor: 'rgba(0, 0, 0, 0.2)',
131 },
127 dragIndicator: { 132 dragIndicator: {
128 background: legacyStyles.themeGrayLight, 133 background: legacyStyles.themeGrayLight,
129 }, 134 },
diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts
index d524b8ea7..ac6e3f7c7 100644
--- a/packages/theme/src/themes/default/index.ts
+++ b/packages/theme/src/themes/default/index.ts
@@ -211,7 +211,12 @@ export const announcements = {
211// Todos 211// Todos
212export const todos = { 212export const todos = {
213 todosLayer: { 213 todosLayer: {
214 borderLeftColor: legacyStyles.themeGrayDark, 214 borderLeftColor: legacyStyles.themeGrayLighter,
215 },
216 toggleButton: {
217 background: styleTypes.primary.accent,
218 textColor: styleTypes.primary.contrast,
219 shadowColor: 'rgba(0, 0, 0, 0.2)',
215 }, 220 },
216 dragIndicator: { 221 dragIndicator: {
217 background: legacyStyles.themeGrayLight, 222 background: legacyStyles.themeGrayLight,
diff --git a/src/features/todos/actions.js b/src/features/todos/actions.js
index a6090a259..dc63d5fcd 100644
--- a/src/features/todos/actions.js
+++ b/src/features/todos/actions.js
@@ -5,6 +5,7 @@ export const todoActions = createActionsFromDefinitions({
5 resize: { 5 resize: {
6 width: PropTypes.number.isRequired, 6 width: PropTypes.number.isRequired,
7 }, 7 },
8 toggleTodosPanel: {},
8 setTodosWebview: { 9 setTodosWebview: {
9 webview: PropTypes.instanceOf(Element).isRequired, 10 webview: PropTypes.instanceOf(Element).isRequired,
10 }, 11 },
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js
index bc32ae728..819e599ca 100644
--- a/src/features/todos/components/TodosWebview.js
+++ b/src/features/todos/components/TodosWebview.js
@@ -3,16 +3,31 @@ import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss'; 4import injectSheet from 'react-jss';
5import Webview from 'react-electron-web-view'; 5import Webview from 'react-electron-web-view';
6import { Icon } from '@meetfranz/ui';
6import * as environment from '../../../environment'; 7import * as environment from '../../../environment';
7 8
9const TOGGLE_SIZE = 45;
10
8const styles = theme => ({ 11const styles = theme => ({
9 root: { 12 root: {
10 background: theme.colorBackground, 13 background: theme.colorBackground,
11 position: 'relative', 14 position: 'relative',
12 borderLeft: [1, 'solid', theme.todos.todosLayer.borderLeftColor], 15 borderLeft: [1, 'solid', theme.todos.todosLayer.borderLeftColor],
16 zIndex: 300,
17
18 transition: 'all 0.5s',
19 transform: props => `translateX(${props.isVisible ? 0 : props.width}px)`,
20
21 '&:hover $toggleTodosButton': {
22 opacity: 1,
23 },
13 }, 24 },
14 webview: { 25 webview: {
15 height: '100%', 26 height: '100%',
27
28 '& webview': {
29 height: '100%',
30 },
16 }, 31 },
17 resizeHandler: { 32 resizeHandler: {
18 position: 'absolute', 33 position: 'absolute',
@@ -29,6 +44,31 @@ const styles = theme => ({
29 zIndex: 400, 44 zIndex: 400,
30 background: theme.todos.dragIndicator.background, 45 background: theme.todos.dragIndicator.background,
31 }, 46 },
47 toggleTodosButton: {
48 width: TOGGLE_SIZE,
49 height: TOGGLE_SIZE,
50 background: theme.todos.toggleButton.background,
51 position: 'absolute',
52 bottom: 80,
53 right: props => (props.width + (props.isVisible ? -TOGGLE_SIZE / 2 : 0)),
54 borderRadius: TOGGLE_SIZE / 2,
55 opacity: props => (props.isVisible ? 0 : 1),
56 transition: 'all 0.5s',
57 zIndex: 600,
58 display: 'flex',
59 alignItems: 'center',
60 justifyContent: 'center',
61 boxShadow: [0, 0, 10, theme.todos.toggleButton.shadowColor],
62 // border: [1, 'solid', theme.todos.toggleButton.borderColor],
63
64 borderTopRightRadius: props => (props.isVisible ? null : 0),
65 borderBottomRightRadius: props => (props.isVisible ? null : 0),
66
67 '& svg': {
68 fill: theme.todos.toggleButton.textColor,
69 transition: 'all 0.5s',
70 },
71 },
32}); 72});
33 73
34@injectSheet(styles) @observer 74@injectSheet(styles) @observer
@@ -36,6 +76,8 @@ class TodosWebview extends Component {
36 static propTypes = { 76 static propTypes = {
37 classes: PropTypes.object.isRequired, 77 classes: PropTypes.object.isRequired,
38 authToken: PropTypes.string.isRequired, 78 authToken: PropTypes.string.isRequired,
79 isVisible: PropTypes.bool.isRequired,
80 togglePanel: PropTypes.func.isRequired,
39 handleClientMessage: PropTypes.func.isRequired, 81 handleClientMessage: PropTypes.func.isRequired,
40 setTodosWebview: PropTypes.func.isRequired, 82 setTodosWebview: PropTypes.func.isRequired,
41 resize: PropTypes.func.isRequired, 83 resize: PropTypes.func.isRequired,
@@ -123,16 +165,26 @@ class TodosWebview extends Component {
123 } 165 }
124 166
125 render() { 167 render() {
126 const { authToken, classes } = this.props; 168 const {
169 authToken, classes, isVisible, togglePanel,
170 } = this.props;
127 const { width, delta, isDragging } = this.state; 171 const { width, delta, isDragging } = this.state;
172
128 return ( 173 return (
129 <> 174 <>
130 <div 175 <div
131 className={classes.root} 176 className={classes.root}
132 style={{ width }} 177 style={{ width: isVisible ? width : 0 }}
133 onMouseUp={() => this.stopResize()} 178 onMouseUp={() => this.stopResize()}
134 ref={(node) => { this.node = node; }} 179 ref={(node) => { this.node = node; }}
135 > 180 >
181 <button
182 onClick={() => togglePanel()}
183 className={classes.toggleTodosButton}
184 type="button"
185 >
186 <Icon icon={isVisible ? 'mdiChevronRight' : 'mdiCheckAll'} size={2} />
187 </button>
136 <div 188 <div
137 className={classes.resizeHandler} 189 className={classes.resizeHandler}
138 style={Object.assign({ left: delta }, isDragging ? { width: 600, marginLeft: -200 } : {})} // This hack is required as resizing with webviews beneath behaves quite bad 190 style={Object.assign({ left: delta }, isDragging ? { width: 600, marginLeft: -200 } : {})} // This hack is required as resizing with webviews beneath behaves quite bad
diff --git a/src/features/todos/containers/TodosScreen.js b/src/features/todos/containers/TodosScreen.js
index 2b81bd728..48acd19f4 100644
--- a/src/features/todos/containers/TodosScreen.js
+++ b/src/features/todos/containers/TodosScreen.js
@@ -27,6 +27,8 @@ class TodosScreen extends Component {
27 <ErrorBoundary> 27 <ErrorBoundary>
28 <TodosWebview 28 <TodosWebview
29 authToken={stores.user.authToken} 29 authToken={stores.user.authToken}
30 isVisible={todosStore.isTodosPanelVisible}
31 togglePanel={todoActions.toggleTodosPanel}
30 handleClientMessage={todoActions.handleClientMessage} 32 handleClientMessage={todoActions.handleClientMessage}
31 setTodosWebview={webview => todoActions.setTodosWebview({ webview })} 33 setTodosWebview={webview => todoActions.setTodosWebview({ webview })}
32 width={todosStore.width} 34 width={todosStore.width}
diff --git a/src/features/todos/index.js b/src/features/todos/index.js
index f741561d6..00b165cc5 100644
--- a/src/features/todos/index.js
+++ b/src/features/todos/index.js
@@ -7,6 +7,7 @@ export const GA_CATEGORY_TODOS = 'Todos';
7 7
8export const DEFAULT_TODOS_WIDTH = 300; 8export const DEFAULT_TODOS_WIDTH = 300;
9export const TODOS_MIN_WIDTH = 200; 9export const TODOS_MIN_WIDTH = 200;
10export const DEFAULT_TODOS_VISIBLE = true;
10 11
11export const todosStore = new TodoStore(); 12export const todosStore = new TodoStore();
12 13
diff --git a/src/features/todos/store.js b/src/features/todos/store.js
index cd9c8e5f6..79c218b65 100644
--- a/src/features/todos/store.js
+++ b/src/features/todos/store.js
@@ -9,7 +9,7 @@ import { todoActions } from './actions';
9import { FeatureStore } from '../utils/FeatureStore'; 9import { FeatureStore } from '../utils/FeatureStore';
10import { createReactions } from '../../stores/lib/Reaction'; 10import { createReactions } from '../../stores/lib/Reaction';
11import { createActionBindings } from '../utils/ActionBinding'; 11import { createActionBindings } from '../utils/ActionBinding';
12import { DEFAULT_TODOS_WIDTH, TODOS_MIN_WIDTH } from '.'; 12import { DEFAULT_TODOS_WIDTH, TODOS_MIN_WIDTH, DEFAULT_TODOS_VISIBLE } from '.';
13 13
14const debug = require('debug')('Franz:feature:todos:store'); 14const debug = require('debug')('Franz:feature:todos:store');
15 15
@@ -26,6 +26,12 @@ export default class TodoStore extends FeatureStore {
26 return width < TODOS_MIN_WIDTH ? TODOS_MIN_WIDTH : width; 26 return width < TODOS_MIN_WIDTH ? TODOS_MIN_WIDTH : width;
27 } 27 }
28 28
29 @computed get isTodosPanelVisible() {
30 if (this.settings.isTodosPanelVisible === undefined) return DEFAULT_TODOS_VISIBLE;
31
32 return this.settings.isTodosPanelVisible;
33 }
34
29 @computed get settings() { 35 @computed get settings() {
30 return localStorage.getItem('todos') || {}; 36 return localStorage.getItem('todos') || {};
31 } 37 }
@@ -41,6 +47,7 @@ export default class TodoStore extends FeatureStore {
41 47
42 this._registerActions(createActionBindings([ 48 this._registerActions(createActionBindings([
43 [todoActions.resize, this._resize], 49 [todoActions.resize, this._resize],
50 [todoActions.toggleTodosPanel, this._toggleTodosPanel],
44 [todoActions.setTodosWebview, this._setTodosWebview], 51 [todoActions.setTodosWebview, this._setTodosWebview],
45 [todoActions.handleHostMessage, this._handleHostMessage], 52 [todoActions.handleHostMessage, this._handleHostMessage],
46 [todoActions.handleClientMessage, this._handleClientMessage], 53 [todoActions.handleClientMessage, this._handleClientMessage],
@@ -81,6 +88,12 @@ export default class TodoStore extends FeatureStore {
81 }); 88 });
82 }; 89 };
83 90
91 @action _toggleTodosPanel = () => {
92 this._updateSettings({
93 isTodosPanelVisible: !this.isTodosPanelVisible,
94 });
95 };
96
84 @action _setTodosWebview = ({ webview }) => { 97 @action _setTodosWebview = ({ webview }) => {
85 debug('_setTodosWebview', webview); 98 debug('_setTodosWebview', webview);
86 this.webview = webview; 99 this.webview = webview;
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index a0654027b..5959fb059 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -3917,754 +3917,793 @@
3917 "defaultMessage": "!!!Edit", 3917 "defaultMessage": "!!!Edit",
3918 "end": { 3918 "end": {
3919 "column": 3, 3919 "column": 3,
3920 "line": 18 3920 "line": 21
3921 }, 3921 },
3922 "file": "src/lib/Menu.js", 3922 "file": "src/lib/Menu.js",
3923 "id": "menu.edit", 3923 "id": "menu.edit",
3924 "start": { 3924 "start": {
3925 "column": 8, 3925 "column": 8,
3926 "line": 15 3926 "line": 18
3927 } 3927 }
3928 }, 3928 },
3929 { 3929 {
3930 "defaultMessage": "!!!Undo", 3930 "defaultMessage": "!!!Undo",
3931 "end": { 3931 "end": {
3932 "column": 3, 3932 "column": 3,
3933 "line": 22 3933 "line": 25
3934 }, 3934 },
3935 "file": "src/lib/Menu.js", 3935 "file": "src/lib/Menu.js",
3936 "id": "menu.edit.undo", 3936 "id": "menu.edit.undo",
3937 "start": { 3937 "start": {
3938 "column": 8, 3938 "column": 8,
3939 "line": 19 3939 "line": 22
3940 } 3940 }
3941 }, 3941 },
3942 { 3942 {
3943 "defaultMessage": "!!!Redo", 3943 "defaultMessage": "!!!Redo",
3944 "end": { 3944 "end": {
3945 "column": 3, 3945 "column": 3,
3946 "line": 26 3946 "line": 29
3947 }, 3947 },
3948 "file": "src/lib/Menu.js", 3948 "file": "src/lib/Menu.js",
3949 "id": "menu.edit.redo", 3949 "id": "menu.edit.redo",
3950 "start": { 3950 "start": {
3951 "column": 8, 3951 "column": 8,
3952 "line": 23 3952 "line": 26
3953 } 3953 }
3954 }, 3954 },
3955 { 3955 {
3956 "defaultMessage": "!!!Cut", 3956 "defaultMessage": "!!!Cut",
3957 "end": { 3957 "end": {
3958 "column": 3, 3958 "column": 3,
3959 "line": 30 3959 "line": 33
3960 }, 3960 },
3961 "file": "src/lib/Menu.js", 3961 "file": "src/lib/Menu.js",
3962 "id": "menu.edit.cut", 3962 "id": "menu.edit.cut",
3963 "start": { 3963 "start": {
3964 "column": 7, 3964 "column": 7,
3965 "line": 27 3965 "line": 30
3966 } 3966 }
3967 }, 3967 },
3968 { 3968 {
3969 "defaultMessage": "!!!Copy", 3969 "defaultMessage": "!!!Copy",
3970 "end": { 3970 "end": {
3971 "column": 3, 3971 "column": 3,
3972 "line": 34 3972 "line": 37
3973 }, 3973 },
3974 "file": "src/lib/Menu.js", 3974 "file": "src/lib/Menu.js",
3975 "id": "menu.edit.copy", 3975 "id": "menu.edit.copy",
3976 "start": { 3976 "start": {
3977 "column": 8, 3977 "column": 8,
3978 "line": 31 3978 "line": 34
3979 } 3979 }
3980 }, 3980 },
3981 { 3981 {
3982 "defaultMessage": "!!!Paste", 3982 "defaultMessage": "!!!Paste",
3983 "end": { 3983 "end": {
3984 "column": 3, 3984 "column": 3,
3985 "line": 38 3985 "line": 41
3986 }, 3986 },
3987 "file": "src/lib/Menu.js", 3987 "file": "src/lib/Menu.js",
3988 "id": "menu.edit.paste", 3988 "id": "menu.edit.paste",
3989 "start": { 3989 "start": {
3990 "column": 9, 3990 "column": 9,
3991 "line": 35 3991 "line": 38
3992 } 3992 }
3993 }, 3993 },
3994 { 3994 {
3995 "defaultMessage": "!!!Paste And Match Style", 3995 "defaultMessage": "!!!Paste And Match Style",
3996 "end": { 3996 "end": {
3997 "column": 3, 3997 "column": 3,
3998 "line": 42 3998 "line": 45
3999 }, 3999 },
4000 "file": "src/lib/Menu.js", 4000 "file": "src/lib/Menu.js",
4001 "id": "menu.edit.pasteAndMatchStyle", 4001 "id": "menu.edit.pasteAndMatchStyle",
4002 "start": { 4002 "start": {
4003 "column": 22, 4003 "column": 22,
4004 "line": 39 4004 "line": 42
4005 } 4005 }
4006 }, 4006 },
4007 { 4007 {
4008 "defaultMessage": "!!!Delete", 4008 "defaultMessage": "!!!Delete",
4009 "end": { 4009 "end": {
4010 "column": 3, 4010 "column": 3,
4011 "line": 46 4011 "line": 49
4012 }, 4012 },
4013 "file": "src/lib/Menu.js", 4013 "file": "src/lib/Menu.js",
4014 "id": "menu.edit.delete", 4014 "id": "menu.edit.delete",
4015 "start": { 4015 "start": {
4016 "column": 10, 4016 "column": 10,
4017 "line": 43 4017 "line": 46
4018 } 4018 }
4019 }, 4019 },
4020 { 4020 {
4021 "defaultMessage": "!!!Select All", 4021 "defaultMessage": "!!!Select All",
4022 "end": { 4022 "end": {
4023 "column": 3, 4023 "column": 3,
4024 "line": 50 4024 "line": 53
4025 }, 4025 },
4026 "file": "src/lib/Menu.js", 4026 "file": "src/lib/Menu.js",
4027 "id": "menu.edit.selectAll", 4027 "id": "menu.edit.selectAll",
4028 "start": { 4028 "start": {
4029 "column": 13, 4029 "column": 13,
4030 "line": 47 4030 "line": 50
4031 } 4031 }
4032 }, 4032 },
4033 { 4033 {
4034 "defaultMessage": "!!!Speech", 4034 "defaultMessage": "!!!Speech",
4035 "end": { 4035 "end": {
4036 "column": 3, 4036 "column": 3,
4037 "line": 54 4037 "line": 57
4038 }, 4038 },
4039 "file": "src/lib/Menu.js", 4039 "file": "src/lib/Menu.js",
4040 "id": "menu.edit.speech", 4040 "id": "menu.edit.speech",
4041 "start": { 4041 "start": {
4042 "column": 10, 4042 "column": 10,
4043 "line": 51 4043 "line": 54
4044 } 4044 }
4045 }, 4045 },
4046 { 4046 {
4047 "defaultMessage": "!!!Start Speaking", 4047 "defaultMessage": "!!!Start Speaking",
4048 "end": { 4048 "end": {
4049 "column": 3, 4049 "column": 3,
4050 "line": 58 4050 "line": 61
4051 }, 4051 },
4052 "file": "src/lib/Menu.js", 4052 "file": "src/lib/Menu.js",
4053 "id": "menu.edit.startSpeaking", 4053 "id": "menu.edit.startSpeaking",
4054 "start": { 4054 "start": {
4055 "column": 17, 4055 "column": 17,
4056 "line": 55 4056 "line": 58
4057 } 4057 }
4058 }, 4058 },
4059 { 4059 {
4060 "defaultMessage": "!!!Stop Speaking", 4060 "defaultMessage": "!!!Stop Speaking",
4061 "end": { 4061 "end": {
4062 "column": 3, 4062 "column": 3,
4063 "line": 62 4063 "line": 65
4064 }, 4064 },
4065 "file": "src/lib/Menu.js", 4065 "file": "src/lib/Menu.js",
4066 "id": "menu.edit.stopSpeaking", 4066 "id": "menu.edit.stopSpeaking",
4067 "start": { 4067 "start": {
4068 "column": 16, 4068 "column": 16,
4069 "line": 59 4069 "line": 62
4070 } 4070 }
4071 }, 4071 },
4072 { 4072 {
4073 "defaultMessage": "!!!Start Dictation", 4073 "defaultMessage": "!!!Start Dictation",
4074 "end": { 4074 "end": {
4075 "column": 3, 4075 "column": 3,
4076 "line": 66 4076 "line": 69
4077 }, 4077 },
4078 "file": "src/lib/Menu.js", 4078 "file": "src/lib/Menu.js",
4079 "id": "menu.edit.startDictation", 4079 "id": "menu.edit.startDictation",
4080 "start": { 4080 "start": {
4081 "column": 18, 4081 "column": 18,
4082 "line": 63 4082 "line": 66
4083 } 4083 }
4084 }, 4084 },
4085 { 4085 {
4086 "defaultMessage": "!!!Emoji & Symbols", 4086 "defaultMessage": "!!!Emoji & Symbols",
4087 "end": { 4087 "end": {
4088 "column": 3, 4088 "column": 3,
4089 "line": 70 4089 "line": 73
4090 }, 4090 },
4091 "file": "src/lib/Menu.js", 4091 "file": "src/lib/Menu.js",
4092 "id": "menu.edit.emojiSymbols", 4092 "id": "menu.edit.emojiSymbols",
4093 "start": { 4093 "start": {
4094 "column": 16, 4094 "column": 16,
4095 "line": 67 4095 "line": 70
4096 } 4096 }
4097 }, 4097 },
4098 { 4098 {
4099 "defaultMessage": "!!!Actual Size", 4099 "defaultMessage": "!!!Actual Size",
4100 "end": { 4100 "end": {
4101 "column": 3, 4101 "column": 3,
4102 "line": 74 4102 "line": 77
4103 }, 4103 },
4104 "file": "src/lib/Menu.js", 4104 "file": "src/lib/Menu.js",
4105 "id": "menu.view.resetZoom", 4105 "id": "menu.view.resetZoom",
4106 "start": { 4106 "start": {
4107 "column": 13, 4107 "column": 13,
4108 "line": 71 4108 "line": 74
4109 } 4109 }
4110 }, 4110 },
4111 { 4111 {
4112 "defaultMessage": "!!!Zoom In", 4112 "defaultMessage": "!!!Zoom In",
4113 "end": { 4113 "end": {
4114 "column": 3, 4114 "column": 3,
4115 "line": 78 4115 "line": 81
4116 }, 4116 },
4117 "file": "src/lib/Menu.js", 4117 "file": "src/lib/Menu.js",
4118 "id": "menu.view.zoomIn", 4118 "id": "menu.view.zoomIn",
4119 "start": { 4119 "start": {
4120 "column": 10, 4120 "column": 10,
4121 "line": 75 4121 "line": 78
4122 } 4122 }
4123 }, 4123 },
4124 { 4124 {
4125 "defaultMessage": "!!!Zoom Out", 4125 "defaultMessage": "!!!Zoom Out",
4126 "end": { 4126 "end": {
4127 "column": 3, 4127 "column": 3,
4128 "line": 82 4128 "line": 85
4129 }, 4129 },
4130 "file": "src/lib/Menu.js", 4130 "file": "src/lib/Menu.js",
4131 "id": "menu.view.zoomOut", 4131 "id": "menu.view.zoomOut",
4132 "start": { 4132 "start": {
4133 "column": 11, 4133 "column": 11,
4134 "line": 79 4134 "line": 82
4135 } 4135 }
4136 }, 4136 },
4137 { 4137 {
4138 "defaultMessage": "!!!Enter Full Screen", 4138 "defaultMessage": "!!!Enter Full Screen",
4139 "end": { 4139 "end": {
4140 "column": 3, 4140 "column": 3,
4141 "line": 86 4141 "line": 89
4142 }, 4142 },
4143 "file": "src/lib/Menu.js", 4143 "file": "src/lib/Menu.js",
4144 "id": "menu.view.enterFullScreen", 4144 "id": "menu.view.enterFullScreen",
4145 "start": { 4145 "start": {
4146 "column": 19, 4146 "column": 19,
4147 "line": 83 4147 "line": 86
4148 } 4148 }
4149 }, 4149 },
4150 { 4150 {
4151 "defaultMessage": "!!!Exit Full Screen", 4151 "defaultMessage": "!!!Exit Full Screen",
4152 "end": { 4152 "end": {
4153 "column": 3, 4153 "column": 3,
4154 "line": 90 4154 "line": 93
4155 }, 4155 },
4156 "file": "src/lib/Menu.js", 4156 "file": "src/lib/Menu.js",
4157 "id": "menu.view.exitFullScreen", 4157 "id": "menu.view.exitFullScreen",
4158 "start": { 4158 "start": {
4159 "column": 18, 4159 "column": 18,
4160 "line": 87 4160 "line": 90
4161 } 4161 }
4162 }, 4162 },
4163 { 4163 {
4164 "defaultMessage": "!!!Toggle Full Screen", 4164 "defaultMessage": "!!!Toggle Full Screen",
4165 "end": { 4165 "end": {
4166 "column": 3, 4166 "column": 3,
4167 "line": 94 4167 "line": 97
4168 }, 4168 },
4169 "file": "src/lib/Menu.js", 4169 "file": "src/lib/Menu.js",
4170 "id": "menu.view.toggleFullScreen", 4170 "id": "menu.view.toggleFullScreen",
4171 "start": { 4171 "start": {
4172 "column": 20, 4172 "column": 20,
4173 "line": 91 4173 "line": 94
4174 } 4174 }
4175 }, 4175 },
4176 { 4176 {
4177 "defaultMessage": "!!!Toggle Developer Tools", 4177 "defaultMessage": "!!!Toggle Developer Tools",
4178 "end": { 4178 "end": {
4179 "column": 3, 4179 "column": 3,
4180 "line": 98 4180 "line": 101
4181 }, 4181 },
4182 "file": "src/lib/Menu.js", 4182 "file": "src/lib/Menu.js",
4183 "id": "menu.view.toggleDevTools", 4183 "id": "menu.view.toggleDevTools",
4184 "start": { 4184 "start": {
4185 "column": 18, 4185 "column": 18,
4186 "line": 95 4186 "line": 98
4187 } 4187 }
4188 }, 4188 },
4189 { 4189 {
4190 "defaultMessage": "!!!Toggle Todos Developer Tools", 4190 "defaultMessage": "!!!Toggle Todos Developer Tools",
4191 "end": { 4191 "end": {
4192 "column": 3, 4192 "column": 3,
4193 "line": 102 4193 "line": 105
4194 }, 4194 },
4195 "file": "src/lib/Menu.js", 4195 "file": "src/lib/Menu.js",
4196 "id": "menu.view.toggleTodosDevTools", 4196 "id": "menu.view.toggleTodosDevTools",
4197 "start": { 4197 "start": {
4198 "column": 23, 4198 "column": 23,
4199 "line": 99 4199 "line": 102
4200 } 4200 }
4201 }, 4201 },
4202 { 4202 {
4203 "defaultMessage": "!!!Toggle Service Developer Tools", 4203 "defaultMessage": "!!!Toggle Service Developer Tools",
4204 "end": { 4204 "end": {
4205 "column": 3, 4205 "column": 3,
4206 "line": 106 4206 "line": 109
4207 }, 4207 },
4208 "file": "src/lib/Menu.js", 4208 "file": "src/lib/Menu.js",
4209 "id": "menu.view.toggleServiceDevTools", 4209 "id": "menu.view.toggleServiceDevTools",
4210 "start": { 4210 "start": {
4211 "column": 25, 4211 "column": 25,
4212 "line": 103 4212 "line": 106
4213 } 4213 }
4214 }, 4214 },
4215 { 4215 {
4216 "defaultMessage": "!!!Reload Service", 4216 "defaultMessage": "!!!Reload Service",
4217 "end": { 4217 "end": {
4218 "column": 3, 4218 "column": 3,
4219 "line": 110 4219 "line": 113
4220 }, 4220 },
4221 "file": "src/lib/Menu.js", 4221 "file": "src/lib/Menu.js",
4222 "id": "menu.view.reloadService", 4222 "id": "menu.view.reloadService",
4223 "start": { 4223 "start": {
4224 "column": 17, 4224 "column": 17,
4225 "line": 107 4225 "line": 110
4226 } 4226 }
4227 }, 4227 },
4228 { 4228 {
4229 "defaultMessage": "!!!Reload Franz", 4229 "defaultMessage": "!!!Reload Franz",
4230 "end": { 4230 "end": {
4231 "column": 3, 4231 "column": 3,
4232 "line": 114 4232 "line": 117
4233 }, 4233 },
4234 "file": "src/lib/Menu.js", 4234 "file": "src/lib/Menu.js",
4235 "id": "menu.view.reloadFranz", 4235 "id": "menu.view.reloadFranz",
4236 "start": { 4236 "start": {
4237 "column": 15, 4237 "column": 15,
4238 "line": 111 4238 "line": 114
4239 } 4239 }
4240 }, 4240 },
4241 { 4241 {
4242 "defaultMessage": "!!!Minimize", 4242 "defaultMessage": "!!!Minimize",
4243 "end": { 4243 "end": {
4244 "column": 3, 4244 "column": 3,
4245 "line": 118 4245 "line": 121
4246 }, 4246 },
4247 "file": "src/lib/Menu.js", 4247 "file": "src/lib/Menu.js",
4248 "id": "menu.window.minimize", 4248 "id": "menu.window.minimize",
4249 "start": { 4249 "start": {
4250 "column": 12, 4250 "column": 12,
4251 "line": 115 4251 "line": 118
4252 } 4252 }
4253 }, 4253 },
4254 { 4254 {
4255 "defaultMessage": "!!!Close", 4255 "defaultMessage": "!!!Close",
4256 "end": { 4256 "end": {
4257 "column": 3, 4257 "column": 3,
4258 "line": 122 4258 "line": 125
4259 }, 4259 },
4260 "file": "src/lib/Menu.js", 4260 "file": "src/lib/Menu.js",
4261 "id": "menu.window.close", 4261 "id": "menu.window.close",
4262 "start": { 4262 "start": {
4263 "column": 9, 4263 "column": 9,
4264 "line": 119 4264 "line": 122
4265 } 4265 }
4266 }, 4266 },
4267 { 4267 {
4268 "defaultMessage": "!!!Learn More", 4268 "defaultMessage": "!!!Learn More",
4269 "end": { 4269 "end": {
4270 "column": 3, 4270 "column": 3,
4271 "line": 126 4271 "line": 129
4272 }, 4272 },
4273 "file": "src/lib/Menu.js", 4273 "file": "src/lib/Menu.js",
4274 "id": "menu.help.learnMore", 4274 "id": "menu.help.learnMore",
4275 "start": { 4275 "start": {
4276 "column": 13, 4276 "column": 13,
4277 "line": 123 4277 "line": 126
4278 } 4278 }
4279 }, 4279 },
4280 { 4280 {
4281 "defaultMessage": "!!!Changelog", 4281 "defaultMessage": "!!!Changelog",
4282 "end": { 4282 "end": {
4283 "column": 3, 4283 "column": 3,
4284 "line": 130 4284 "line": 133
4285 }, 4285 },
4286 "file": "src/lib/Menu.js", 4286 "file": "src/lib/Menu.js",
4287 "id": "menu.help.changelog", 4287 "id": "menu.help.changelog",
4288 "start": { 4288 "start": {
4289 "column": 13, 4289 "column": 13,
4290 "line": 127 4290 "line": 130
4291 } 4291 }
4292 }, 4292 },
4293 { 4293 {
4294 "defaultMessage": "!!!Support", 4294 "defaultMessage": "!!!Support",
4295 "end": { 4295 "end": {
4296 "column": 3, 4296 "column": 3,
4297 "line": 134 4297 "line": 137
4298 }, 4298 },
4299 "file": "src/lib/Menu.js", 4299 "file": "src/lib/Menu.js",
4300 "id": "menu.help.support", 4300 "id": "menu.help.support",
4301 "start": { 4301 "start": {
4302 "column": 11, 4302 "column": 11,
4303 "line": 131 4303 "line": 134
4304 } 4304 }
4305 }, 4305 },
4306 { 4306 {
4307 "defaultMessage": "!!!Copy Debug Information", 4307 "defaultMessage": "!!!Copy Debug Information",
4308 "end": { 4308 "end": {
4309 "column": 3, 4309 "column": 3,
4310 "line": 138 4310 "line": 141
4311 }, 4311 },
4312 "file": "src/lib/Menu.js", 4312 "file": "src/lib/Menu.js",
4313 "id": "menu.help.debugInfo", 4313 "id": "menu.help.debugInfo",
4314 "start": { 4314 "start": {
4315 "column": 13, 4315 "column": 13,
4316 "line": 135 4316 "line": 138
4317 } 4317 }
4318 }, 4318 },
4319 { 4319 {
4320 "defaultMessage": "!!!Franz Debug Information", 4320 "defaultMessage": "!!!Franz Debug Information",
4321 "end": { 4321 "end": {
4322 "column": 3, 4322 "column": 3,
4323 "line": 142 4323 "line": 145
4324 }, 4324 },
4325 "file": "src/lib/Menu.js", 4325 "file": "src/lib/Menu.js",
4326 "id": "menu.help.debugInfoCopiedHeadline", 4326 "id": "menu.help.debugInfoCopiedHeadline",
4327 "start": { 4327 "start": {
4328 "column": 27, 4328 "column": 27,
4329 "line": 139 4329 "line": 142
4330 } 4330 }
4331 }, 4331 },
4332 { 4332 {
4333 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 4333 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
4334 "end": { 4334 "end": {
4335 "column": 3, 4335 "column": 3,
4336 "line": 146 4336 "line": 149
4337 }, 4337 },
4338 "file": "src/lib/Menu.js", 4338 "file": "src/lib/Menu.js",
4339 "id": "menu.help.debugInfoCopiedBody", 4339 "id": "menu.help.debugInfoCopiedBody",
4340 "start": { 4340 "start": {
4341 "column": 23, 4341 "column": 23,
4342 "line": 143 4342 "line": 146
4343 } 4343 }
4344 }, 4344 },
4345 { 4345 {
4346 "defaultMessage": "!!!Terms of Service", 4346 "defaultMessage": "!!!Terms of Service",
4347 "end": { 4347 "end": {
4348 "column": 3, 4348 "column": 3,
4349 "line": 150 4349 "line": 153
4350 }, 4350 },
4351 "file": "src/lib/Menu.js", 4351 "file": "src/lib/Menu.js",
4352 "id": "menu.help.tos", 4352 "id": "menu.help.tos",
4353 "start": { 4353 "start": {
4354 "column": 7, 4354 "column": 7,
4355 "line": 147 4355 "line": 150
4356 } 4356 }
4357 }, 4357 },
4358 { 4358 {
4359 "defaultMessage": "!!!Privacy Statement", 4359 "defaultMessage": "!!!Privacy Statement",
4360 "end": { 4360 "end": {
4361 "column": 3, 4361 "column": 3,
4362 "line": 154 4362 "line": 157
4363 }, 4363 },
4364 "file": "src/lib/Menu.js", 4364 "file": "src/lib/Menu.js",
4365 "id": "menu.help.privacy", 4365 "id": "menu.help.privacy",
4366 "start": { 4366 "start": {
4367 "column": 11, 4367 "column": 11,
4368 "line": 151 4368 "line": 154
4369 } 4369 }
4370 }, 4370 },
4371 { 4371 {
4372 "defaultMessage": "!!!File", 4372 "defaultMessage": "!!!File",
4373 "end": { 4373 "end": {
4374 "column": 3, 4374 "column": 3,
4375 "line": 158 4375 "line": 161
4376 }, 4376 },
4377 "file": "src/lib/Menu.js", 4377 "file": "src/lib/Menu.js",
4378 "id": "menu.file", 4378 "id": "menu.file",
4379 "start": { 4379 "start": {
4380 "column": 8, 4380 "column": 8,
4381 "line": 155 4381 "line": 158
4382 } 4382 }
4383 }, 4383 },
4384 { 4384 {
4385 "defaultMessage": "!!!View", 4385 "defaultMessage": "!!!View",
4386 "end": { 4386 "end": {
4387 "column": 3, 4387 "column": 3,
4388 "line": 162 4388 "line": 165
4389 }, 4389 },
4390 "file": "src/lib/Menu.js", 4390 "file": "src/lib/Menu.js",
4391 "id": "menu.view", 4391 "id": "menu.view",
4392 "start": { 4392 "start": {
4393 "column": 8, 4393 "column": 8,
4394 "line": 159 4394 "line": 162
4395 } 4395 }
4396 }, 4396 },
4397 { 4397 {
4398 "defaultMessage": "!!!Services", 4398 "defaultMessage": "!!!Services",
4399 "end": { 4399 "end": {
4400 "column": 3, 4400 "column": 3,
4401 "line": 166 4401 "line": 169
4402 }, 4402 },
4403 "file": "src/lib/Menu.js", 4403 "file": "src/lib/Menu.js",
4404 "id": "menu.services", 4404 "id": "menu.services",
4405 "start": { 4405 "start": {
4406 "column": 12, 4406 "column": 12,
4407 "line": 163 4407 "line": 166
4408 } 4408 }
4409 }, 4409 },
4410 { 4410 {
4411 "defaultMessage": "!!!Window", 4411 "defaultMessage": "!!!Window",
4412 "end": { 4412 "end": {
4413 "column": 3, 4413 "column": 3,
4414 "line": 170 4414 "line": 173
4415 }, 4415 },
4416 "file": "src/lib/Menu.js", 4416 "file": "src/lib/Menu.js",
4417 "id": "menu.window", 4417 "id": "menu.window",
4418 "start": { 4418 "start": {
4419 "column": 10, 4419 "column": 10,
4420 "line": 167 4420 "line": 170
4421 } 4421 }
4422 }, 4422 },
4423 { 4423 {
4424 "defaultMessage": "!!!Help", 4424 "defaultMessage": "!!!Help",
4425 "end": { 4425 "end": {
4426 "column": 3, 4426 "column": 3,
4427 "line": 174 4427 "line": 177
4428 }, 4428 },
4429 "file": "src/lib/Menu.js", 4429 "file": "src/lib/Menu.js",
4430 "id": "menu.help", 4430 "id": "menu.help",
4431 "start": { 4431 "start": {
4432 "column": 8, 4432 "column": 8,
4433 "line": 171 4433 "line": 174
4434 } 4434 }
4435 }, 4435 },
4436 { 4436 {
4437 "defaultMessage": "!!!About Franz", 4437 "defaultMessage": "!!!About Franz",
4438 "end": { 4438 "end": {
4439 "column": 3, 4439 "column": 3,
4440 "line": 178 4440 "line": 181
4441 }, 4441 },
4442 "file": "src/lib/Menu.js", 4442 "file": "src/lib/Menu.js",
4443 "id": "menu.app.about", 4443 "id": "menu.app.about",
4444 "start": { 4444 "start": {
4445 "column": 9, 4445 "column": 9,
4446 "line": 175 4446 "line": 178
4447 } 4447 }
4448 }, 4448 },
4449 { 4449 {
4450 "defaultMessage": "!!!What's new?", 4450 "defaultMessage": "!!!What's new?",
4451 "end": { 4451 "end": {
4452 "column": 3, 4452 "column": 3,
4453 "line": 182 4453 "line": 185
4454 }, 4454 },
4455 "file": "src/lib/Menu.js", 4455 "file": "src/lib/Menu.js",
4456 "id": "menu.app.announcement", 4456 "id": "menu.app.announcement",
4457 "start": { 4457 "start": {
4458 "column": 16, 4458 "column": 16,
4459 "line": 179 4459 "line": 182
4460 } 4460 }
4461 }, 4461 },
4462 { 4462 {
4463 "defaultMessage": "!!!Settings", 4463 "defaultMessage": "!!!Settings",
4464 "end": { 4464 "end": {
4465 "column": 3, 4465 "column": 3,
4466 "line": 186 4466 "line": 189
4467 }, 4467 },
4468 "file": "src/lib/Menu.js", 4468 "file": "src/lib/Menu.js",
4469 "id": "menu.app.settings", 4469 "id": "menu.app.settings",
4470 "start": { 4470 "start": {
4471 "column": 12, 4471 "column": 12,
4472 "line": 183 4472 "line": 186
4473 } 4473 }
4474 }, 4474 },
4475 { 4475 {
4476 "defaultMessage": "!!!Check for updates", 4476 "defaultMessage": "!!!Check for updates",
4477 "end": { 4477 "end": {
4478 "column": 3, 4478 "column": 3,
4479 "line": 190 4479 "line": 193
4480 }, 4480 },
4481 "file": "src/lib/Menu.js", 4481 "file": "src/lib/Menu.js",
4482 "id": "menu.app.checkForUpdates", 4482 "id": "menu.app.checkForUpdates",
4483 "start": { 4483 "start": {
4484 "column": 19, 4484 "column": 19,
4485 "line": 187 4485 "line": 190
4486 } 4486 }
4487 }, 4487 },
4488 { 4488 {
4489 "defaultMessage": "!!!Hide", 4489 "defaultMessage": "!!!Hide",
4490 "end": { 4490 "end": {
4491 "column": 3, 4491 "column": 3,
4492 "line": 194 4492 "line": 197
4493 }, 4493 },
4494 "file": "src/lib/Menu.js", 4494 "file": "src/lib/Menu.js",
4495 "id": "menu.app.hide", 4495 "id": "menu.app.hide",
4496 "start": { 4496 "start": {
4497 "column": 8, 4497 "column": 8,
4498 "line": 191 4498 "line": 194
4499 } 4499 }
4500 }, 4500 },
4501 { 4501 {
4502 "defaultMessage": "!!!Hide Others", 4502 "defaultMessage": "!!!Hide Others",
4503 "end": { 4503 "end": {
4504 "column": 3, 4504 "column": 3,
4505 "line": 198 4505 "line": 201
4506 }, 4506 },
4507 "file": "src/lib/Menu.js", 4507 "file": "src/lib/Menu.js",
4508 "id": "menu.app.hideOthers", 4508 "id": "menu.app.hideOthers",
4509 "start": { 4509 "start": {
4510 "column": 14, 4510 "column": 14,
4511 "line": 195 4511 "line": 198
4512 } 4512 }
4513 }, 4513 },
4514 { 4514 {
4515 "defaultMessage": "!!!Unhide", 4515 "defaultMessage": "!!!Unhide",
4516 "end": { 4516 "end": {
4517 "column": 3, 4517 "column": 3,
4518 "line": 202 4518 "line": 205
4519 }, 4519 },
4520 "file": "src/lib/Menu.js", 4520 "file": "src/lib/Menu.js",
4521 "id": "menu.app.unhide", 4521 "id": "menu.app.unhide",
4522 "start": { 4522 "start": {
4523 "column": 10, 4523 "column": 10,
4524 "line": 199 4524 "line": 202
4525 } 4525 }
4526 }, 4526 },
4527 { 4527 {
4528 "defaultMessage": "!!!Quit", 4528 "defaultMessage": "!!!Quit",
4529 "end": { 4529 "end": {
4530 "column": 3, 4530 "column": 3,
4531 "line": 206 4531 "line": 209
4532 }, 4532 },
4533 "file": "src/lib/Menu.js", 4533 "file": "src/lib/Menu.js",
4534 "id": "menu.app.quit", 4534 "id": "menu.app.quit",
4535 "start": { 4535 "start": {
4536 "column": 8, 4536 "column": 8,
4537 "line": 203 4537 "line": 206
4538 } 4538 }
4539 }, 4539 },
4540 { 4540 {
4541 "defaultMessage": "!!!Add New Service...", 4541 "defaultMessage": "!!!Add New Service...",
4542 "end": { 4542 "end": {
4543 "column": 3, 4543 "column": 3,
4544 "line": 210 4544 "line": 213
4545 }, 4545 },
4546 "file": "src/lib/Menu.js", 4546 "file": "src/lib/Menu.js",
4547 "id": "menu.services.addNewService", 4547 "id": "menu.services.addNewService",
4548 "start": { 4548 "start": {
4549 "column": 17, 4549 "column": 17,
4550 "line": 207 4550 "line": 210
4551 } 4551 }
4552 }, 4552 },
4553 { 4553 {
4554 "defaultMessage": "!!!Add New Workspace...", 4554 "defaultMessage": "!!!Add New Workspace...",
4555 "end": { 4555 "end": {
4556 "column": 3, 4556 "column": 3,
4557 "line": 214 4557 "line": 217
4558 }, 4558 },
4559 "file": "src/lib/Menu.js", 4559 "file": "src/lib/Menu.js",
4560 "id": "menu.workspaces.addNewWorkspace", 4560 "id": "menu.workspaces.addNewWorkspace",
4561 "start": { 4561 "start": {
4562 "column": 19, 4562 "column": 19,
4563 "line": 211 4563 "line": 214
4564 } 4564 }
4565 }, 4565 },
4566 { 4566 {
4567 "defaultMessage": "!!!Open workspace drawer", 4567 "defaultMessage": "!!!Open workspace drawer",
4568 "end": { 4568 "end": {
4569 "column": 3, 4569 "column": 3,
4570 "line": 218 4570 "line": 221
4571 }, 4571 },
4572 "file": "src/lib/Menu.js", 4572 "file": "src/lib/Menu.js",
4573 "id": "menu.workspaces.openWorkspaceDrawer", 4573 "id": "menu.workspaces.openWorkspaceDrawer",
4574 "start": { 4574 "start": {
4575 "column": 23, 4575 "column": 23,
4576 "line": 215 4576 "line": 218
4577 } 4577 }
4578 }, 4578 },
4579 { 4579 {
4580 "defaultMessage": "!!!Close workspace drawer", 4580 "defaultMessage": "!!!Close workspace drawer",
4581 "end": { 4581 "end": {
4582 "column": 3, 4582 "column": 3,
4583 "line": 222 4583 "line": 225
4584 }, 4584 },
4585 "file": "src/lib/Menu.js", 4585 "file": "src/lib/Menu.js",
4586 "id": "menu.workspaces.closeWorkspaceDrawer", 4586 "id": "menu.workspaces.closeWorkspaceDrawer",
4587 "start": { 4587 "start": {
4588 "column": 24, 4588 "column": 24,
4589 "line": 219 4589 "line": 222
4590 } 4590 }
4591 }, 4591 },
4592 { 4592 {
4593 "defaultMessage": "!!!Activate next service...", 4593 "defaultMessage": "!!!Activate next service...",
4594 "end": { 4594 "end": {
4595 "column": 3, 4595 "column": 3,
4596 "line": 226 4596 "line": 229
4597 }, 4597 },
4598 "file": "src/lib/Menu.js", 4598 "file": "src/lib/Menu.js",
4599 "id": "menu.services.setNextServiceActive", 4599 "id": "menu.services.setNextServiceActive",
4600 "start": { 4600 "start": {
4601 "column": 23, 4601 "column": 23,
4602 "line": 223 4602 "line": 226
4603 } 4603 }
4604 }, 4604 },
4605 { 4605 {
4606 "defaultMessage": "!!!Activate previous service...", 4606 "defaultMessage": "!!!Activate previous service...",
4607 "end": { 4607 "end": {
4608 "column": 3, 4608 "column": 3,
4609 "line": 230 4609 "line": 233
4610 }, 4610 },
4611 "file": "src/lib/Menu.js", 4611 "file": "src/lib/Menu.js",
4612 "id": "menu.services.activatePreviousService", 4612 "id": "menu.services.activatePreviousService",
4613 "start": { 4613 "start": {
4614 "column": 27, 4614 "column": 27,
4615 "line": 227 4615 "line": 230
4616 } 4616 }
4617 }, 4617 },
4618 { 4618 {
4619 "defaultMessage": "!!!Disable notifications & audio", 4619 "defaultMessage": "!!!Disable notifications & audio",
4620 "end": { 4620 "end": {
4621 "column": 3, 4621 "column": 3,
4622 "line": 234 4622 "line": 237
4623 }, 4623 },
4624 "file": "src/lib/Menu.js", 4624 "file": "src/lib/Menu.js",
4625 "id": "sidebar.muteApp", 4625 "id": "sidebar.muteApp",
4626 "start": { 4626 "start": {
4627 "column": 11, 4627 "column": 11,
4628 "line": 231 4628 "line": 234
4629 } 4629 }
4630 }, 4630 },
4631 { 4631 {
4632 "defaultMessage": "!!!Enable notifications & audio", 4632 "defaultMessage": "!!!Enable notifications & audio",
4633 "end": { 4633 "end": {
4634 "column": 3, 4634 "column": 3,
4635 "line": 238 4635 "line": 241
4636 }, 4636 },
4637 "file": "src/lib/Menu.js", 4637 "file": "src/lib/Menu.js",
4638 "id": "sidebar.unmuteApp", 4638 "id": "sidebar.unmuteApp",
4639 "start": { 4639 "start": {
4640 "column": 13, 4640 "column": 13,
4641 "line": 235 4641 "line": 238
4642 } 4642 }
4643 }, 4643 },
4644 { 4644 {
4645 "defaultMessage": "!!!Workspaces", 4645 "defaultMessage": "!!!Workspaces",
4646 "end": { 4646 "end": {
4647 "column": 3, 4647 "column": 3,
4648 "line": 242 4648 "line": 245
4649 }, 4649 },
4650 "file": "src/lib/Menu.js", 4650 "file": "src/lib/Menu.js",
4651 "id": "menu.workspaces", 4651 "id": "menu.workspaces",
4652 "start": { 4652 "start": {
4653 "column": 14, 4653 "column": 14,
4654 "line": 239 4654 "line": 242
4655 } 4655 }
4656 }, 4656 },
4657 { 4657 {
4658 "defaultMessage": "!!!Default", 4658 "defaultMessage": "!!!Default",
4659 "end": { 4659 "end": {
4660 "column": 3, 4660 "column": 3,
4661 "line": 246 4661 "line": 249
4662 }, 4662 },
4663 "file": "src/lib/Menu.js", 4663 "file": "src/lib/Menu.js",
4664 "id": "menu.workspaces.defaultWorkspace", 4664 "id": "menu.workspaces.defaultWorkspace",
4665 "start": { 4665 "start": {
4666 "column": 20, 4666 "column": 20,
4667 "line": 243 4667 "line": 246
4668 }
4669 },
4670 {
4671 "defaultMessage": "!!!Todos",
4672 "end": {
4673 "column": 3,
4674 "line": 253
4675 },
4676 "file": "src/lib/Menu.js",
4677 "id": "menu.todos",
4678 "start": {
4679 "column": 9,
4680 "line": 250
4681 }
4682 },
4683 {
4684 "defaultMessage": "!!!Open Todos drawer",
4685 "end": {
4686 "column": 3,
4687 "line": 257
4688 },
4689 "file": "src/lib/Menu.js",
4690 "id": "menu.Todoss.openTodosDrawer",
4691 "start": {
4692 "column": 19,
4693 "line": 254
4694 }
4695 },
4696 {
4697 "defaultMessage": "!!!Close Todos drawer",
4698 "end": {
4699 "column": 3,
4700 "line": 261
4701 },
4702 "file": "src/lib/Menu.js",
4703 "id": "menu.Todoss.closeTodosDrawer",
4704 "start": {
4705 "column": 20,
4706 "line": 258
4668 } 4707 }
4669 } 4708 }
4670 ], 4709 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 235d638b4..3cec9960e 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -43,6 +43,8 @@
43 "login.serverLogout": "Your session expired, please login again.", 43 "login.serverLogout": "Your session expired, please login again.",
44 "login.submit.label": "Sign in", 44 "login.submit.label": "Sign in",
45 "login.tokenExpired": "Your session expired, please login again.", 45 "login.tokenExpired": "Your session expired, please login again.",
46 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
47 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
46 "menu.app.about": "About Franz", 48 "menu.app.about": "About Franz",
47 "menu.app.announcement": "What's new?", 49 "menu.app.announcement": "What's new?",
48 "menu.app.checkForUpdates": "Check for updates", 50 "menu.app.checkForUpdates": "Check for updates",
@@ -79,6 +81,7 @@
79 "menu.services.activatePreviousService": "Activate previous service", 81 "menu.services.activatePreviousService": "Activate previous service",
80 "menu.services.addNewService": "Add New Service...", 82 "menu.services.addNewService": "Add New Service...",
81 "menu.services.setNextServiceActive": "Activate next service", 83 "menu.services.setNextServiceActive": "Activate next service",
84 "menu.todos": "Todos",
82 "menu.view": "View", 85 "menu.view": "View",
83 "menu.view.enterFullScreen": "Enter Full Screen", 86 "menu.view.enterFullScreen": "Enter Full Screen",
84 "menu.view.exitFullScreen": "Exit Full Screen", 87 "menu.view.exitFullScreen": "Exit Full Screen",
@@ -333,4 +336,4 @@
333 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 336 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
334 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 337 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
335 "workspaces.switchingIndicator.switchingTo": "Switching to" 338 "workspaces.switchingIndicator.switchingTo": "Switching to"
336} \ No newline at end of file 339}
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json
index fa9509cbf..cee46608c 100644
--- a/src/i18n/messages/src/lib/Menu.json
+++ b/src/i18n/messages/src/lib/Menu.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Edit", 4 "defaultMessage": "!!!Edit",
5 "file": "src/lib/Menu.js", 5 "file": "src/lib/Menu.js",
6 "start": { 6 "start": {
7 "line": 15, 7 "line": 18,
8 "column": 8 8 "column": 8
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 18, 11 "line": 21,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Undo", 17 "defaultMessage": "!!!Undo",
18 "file": "src/lib/Menu.js", 18 "file": "src/lib/Menu.js",
19 "start": { 19 "start": {
20 "line": 19, 20 "line": 22,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 22, 24 "line": 25,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Redo", 30 "defaultMessage": "!!!Redo",
31 "file": "src/lib/Menu.js", 31 "file": "src/lib/Menu.js",
32 "start": { 32 "start": {
33 "line": 23, 33 "line": 26,
34 "column": 8 34 "column": 8
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 26, 37 "line": 29,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Cut", 43 "defaultMessage": "!!!Cut",
44 "file": "src/lib/Menu.js", 44 "file": "src/lib/Menu.js",
45 "start": { 45 "start": {
46 "line": 27, 46 "line": 30,
47 "column": 7 47 "column": 7
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 30, 50 "line": 33,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Copy", 56 "defaultMessage": "!!!Copy",
57 "file": "src/lib/Menu.js", 57 "file": "src/lib/Menu.js",
58 "start": { 58 "start": {
59 "line": 31, 59 "line": 34,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 34, 63 "line": 37,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Paste", 69 "defaultMessage": "!!!Paste",
70 "file": "src/lib/Menu.js", 70 "file": "src/lib/Menu.js",
71 "start": { 71 "start": {
72 "line": 35, 72 "line": 38,
73 "column": 9 73 "column": 9
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 38, 76 "line": 41,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Paste And Match Style", 82 "defaultMessage": "!!!Paste And Match Style",
83 "file": "src/lib/Menu.js", 83 "file": "src/lib/Menu.js",
84 "start": { 84 "start": {
85 "line": 39, 85 "line": 42,
86 "column": 22 86 "column": 22
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 42, 89 "line": 45,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Delete", 95 "defaultMessage": "!!!Delete",
96 "file": "src/lib/Menu.js", 96 "file": "src/lib/Menu.js",
97 "start": { 97 "start": {
98 "line": 43, 98 "line": 46,
99 "column": 10 99 "column": 10
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 46, 102 "line": 49,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Select All", 108 "defaultMessage": "!!!Select All",
109 "file": "src/lib/Menu.js", 109 "file": "src/lib/Menu.js",
110 "start": { 110 "start": {
111 "line": 47, 111 "line": 50,
112 "column": 13 112 "column": 13
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 50, 115 "line": 53,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Speech", 121 "defaultMessage": "!!!Speech",
122 "file": "src/lib/Menu.js", 122 "file": "src/lib/Menu.js",
123 "start": { 123 "start": {
124 "line": 51, 124 "line": 54,
125 "column": 10 125 "column": 10
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 54, 128 "line": 57,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Start Speaking", 134 "defaultMessage": "!!!Start Speaking",
135 "file": "src/lib/Menu.js", 135 "file": "src/lib/Menu.js",
136 "start": { 136 "start": {
137 "line": 55, 137 "line": 58,
138 "column": 17 138 "column": 17
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 58, 141 "line": 61,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!Stop Speaking", 147 "defaultMessage": "!!!Stop Speaking",
148 "file": "src/lib/Menu.js", 148 "file": "src/lib/Menu.js",
149 "start": { 149 "start": {
150 "line": 59, 150 "line": 62,
151 "column": 16 151 "column": 16
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 62, 154 "line": 65,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!Start Dictation", 160 "defaultMessage": "!!!Start Dictation",
161 "file": "src/lib/Menu.js", 161 "file": "src/lib/Menu.js",
162 "start": { 162 "start": {
163 "line": 63, 163 "line": 66,
164 "column": 18 164 "column": 18
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 66, 167 "line": 69,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,11 @@
173 "defaultMessage": "!!!Emoji & Symbols", 173 "defaultMessage": "!!!Emoji & Symbols",
174 "file": "src/lib/Menu.js", 174 "file": "src/lib/Menu.js",
175 "start": { 175 "start": {
176 "line": 67, 176 "line": 70,
177 "column": 16 177 "column": 16
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 70, 180 "line": 73,
181 "column": 3 181 "column": 3
182 } 182 }
183 }, 183 },
@@ -186,11 +186,11 @@
186 "defaultMessage": "!!!Actual Size", 186 "defaultMessage": "!!!Actual Size",
187 "file": "src/lib/Menu.js", 187 "file": "src/lib/Menu.js",
188 "start": { 188 "start": {
189 "line": 71, 189 "line": 74,
190 "column": 13 190 "column": 13
191 }, 191 },
192 "end": { 192 "end": {
193 "line": 74, 193 "line": 77,
194 "column": 3 194 "column": 3
195 } 195 }
196 }, 196 },
@@ -199,11 +199,11 @@
199 "defaultMessage": "!!!Zoom In", 199 "defaultMessage": "!!!Zoom In",
200 "file": "src/lib/Menu.js", 200 "file": "src/lib/Menu.js",
201 "start": { 201 "start": {
202 "line": 75, 202 "line": 78,
203 "column": 10 203 "column": 10
204 }, 204 },
205 "end": { 205 "end": {
206 "line": 78, 206 "line": 81,
207 "column": 3 207 "column": 3
208 } 208 }
209 }, 209 },
@@ -212,11 +212,11 @@
212 "defaultMessage": "!!!Zoom Out", 212 "defaultMessage": "!!!Zoom Out",
213 "file": "src/lib/Menu.js", 213 "file": "src/lib/Menu.js",
214 "start": { 214 "start": {
215 "line": 79, 215 "line": 82,
216 "column": 11 216 "column": 11
217 }, 217 },
218 "end": { 218 "end": {
219 "line": 82, 219 "line": 85,
220 "column": 3 220 "column": 3
221 } 221 }
222 }, 222 },
@@ -225,11 +225,11 @@
225 "defaultMessage": "!!!Enter Full Screen", 225 "defaultMessage": "!!!Enter Full Screen",
226 "file": "src/lib/Menu.js", 226 "file": "src/lib/Menu.js",
227 "start": { 227 "start": {
228 "line": 83, 228 "line": 86,
229 "column": 19 229 "column": 19
230 }, 230 },
231 "end": { 231 "end": {
232 "line": 86, 232 "line": 89,
233 "column": 3 233 "column": 3
234 } 234 }
235 }, 235 },
@@ -238,11 +238,11 @@
238 "defaultMessage": "!!!Exit Full Screen", 238 "defaultMessage": "!!!Exit Full Screen",
239 "file": "src/lib/Menu.js", 239 "file": "src/lib/Menu.js",
240 "start": { 240 "start": {
241 "line": 87, 241 "line": 90,
242 "column": 18 242 "column": 18
243 }, 243 },
244 "end": { 244 "end": {
245 "line": 90, 245 "line": 93,
246 "column": 3 246 "column": 3
247 } 247 }
248 }, 248 },
@@ -251,11 +251,11 @@
251 "defaultMessage": "!!!Toggle Full Screen", 251 "defaultMessage": "!!!Toggle Full Screen",
252 "file": "src/lib/Menu.js", 252 "file": "src/lib/Menu.js",
253 "start": { 253 "start": {
254 "line": 91, 254 "line": 94,
255 "column": 20 255 "column": 20
256 }, 256 },
257 "end": { 257 "end": {
258 "line": 94, 258 "line": 97,
259 "column": 3 259 "column": 3
260 } 260 }
261 }, 261 },
@@ -264,11 +264,11 @@
264 "defaultMessage": "!!!Toggle Developer Tools", 264 "defaultMessage": "!!!Toggle Developer Tools",
265 "file": "src/lib/Menu.js", 265 "file": "src/lib/Menu.js",
266 "start": { 266 "start": {
267 "line": 95, 267 "line": 98,
268 "column": 18 268 "column": 18
269 }, 269 },
270 "end": { 270 "end": {
271 "line": 98, 271 "line": 101,
272 "column": 3 272 "column": 3
273 } 273 }
274 }, 274 },
@@ -277,11 +277,11 @@
277 "defaultMessage": "!!!Toggle Todos Developer Tools", 277 "defaultMessage": "!!!Toggle Todos Developer Tools",
278 "file": "src/lib/Menu.js", 278 "file": "src/lib/Menu.js",
279 "start": { 279 "start": {
280 "line": 99, 280 "line": 102,
281 "column": 23 281 "column": 23
282 }, 282 },
283 "end": { 283 "end": {
284 "line": 102, 284 "line": 105,
285 "column": 3 285 "column": 3
286 } 286 }
287 }, 287 },
@@ -290,11 +290,11 @@
290 "defaultMessage": "!!!Toggle Service Developer Tools", 290 "defaultMessage": "!!!Toggle Service Developer Tools",
291 "file": "src/lib/Menu.js", 291 "file": "src/lib/Menu.js",
292 "start": { 292 "start": {
293 "line": 103, 293 "line": 106,
294 "column": 25 294 "column": 25
295 }, 295 },
296 "end": { 296 "end": {
297 "line": 106, 297 "line": 109,
298 "column": 3 298 "column": 3
299 } 299 }
300 }, 300 },
@@ -303,11 +303,11 @@
303 "defaultMessage": "!!!Reload Service", 303 "defaultMessage": "!!!Reload Service",
304 "file": "src/lib/Menu.js", 304 "file": "src/lib/Menu.js",
305 "start": { 305 "start": {
306 "line": 107, 306 "line": 110,
307 "column": 17 307 "column": 17
308 }, 308 },
309 "end": { 309 "end": {
310 "line": 110, 310 "line": 113,
311 "column": 3 311 "column": 3
312 } 312 }
313 }, 313 },
@@ -316,11 +316,11 @@
316 "defaultMessage": "!!!Reload Franz", 316 "defaultMessage": "!!!Reload Franz",
317 "file": "src/lib/Menu.js", 317 "file": "src/lib/Menu.js",
318 "start": { 318 "start": {
319 "line": 111, 319 "line": 114,
320 "column": 15 320 "column": 15
321 }, 321 },
322 "end": { 322 "end": {
323 "line": 114, 323 "line": 117,
324 "column": 3 324 "column": 3
325 } 325 }
326 }, 326 },
@@ -329,11 +329,11 @@
329 "defaultMessage": "!!!Minimize", 329 "defaultMessage": "!!!Minimize",
330 "file": "src/lib/Menu.js", 330 "file": "src/lib/Menu.js",
331 "start": { 331 "start": {
332 "line": 115, 332 "line": 118,
333 "column": 12 333 "column": 12
334 }, 334 },
335 "end": { 335 "end": {
336 "line": 118, 336 "line": 121,
337 "column": 3 337 "column": 3
338 } 338 }
339 }, 339 },
@@ -342,11 +342,11 @@
342 "defaultMessage": "!!!Close", 342 "defaultMessage": "!!!Close",
343 "file": "src/lib/Menu.js", 343 "file": "src/lib/Menu.js",
344 "start": { 344 "start": {
345 "line": 119, 345 "line": 122,
346 "column": 9 346 "column": 9
347 }, 347 },
348 "end": { 348 "end": {
349 "line": 122, 349 "line": 125,
350 "column": 3 350 "column": 3
351 } 351 }
352 }, 352 },
@@ -355,11 +355,11 @@
355 "defaultMessage": "!!!Learn More", 355 "defaultMessage": "!!!Learn More",
356 "file": "src/lib/Menu.js", 356 "file": "src/lib/Menu.js",
357 "start": { 357 "start": {
358 "line": 123, 358 "line": 126,
359 "column": 13 359 "column": 13
360 }, 360 },
361 "end": { 361 "end": {
362 "line": 126, 362 "line": 129,
363 "column": 3 363 "column": 3
364 } 364 }
365 }, 365 },
@@ -368,11 +368,11 @@
368 "defaultMessage": "!!!Changelog", 368 "defaultMessage": "!!!Changelog",
369 "file": "src/lib/Menu.js", 369 "file": "src/lib/Menu.js",
370 "start": { 370 "start": {
371 "line": 127, 371 "line": 130,
372 "column": 13 372 "column": 13
373 }, 373 },
374 "end": { 374 "end": {
375 "line": 130, 375 "line": 133,
376 "column": 3 376 "column": 3
377 } 377 }
378 }, 378 },
@@ -381,11 +381,11 @@
381 "defaultMessage": "!!!Support", 381 "defaultMessage": "!!!Support",
382 "file": "src/lib/Menu.js", 382 "file": "src/lib/Menu.js",
383 "start": { 383 "start": {
384 "line": 131, 384 "line": 134,
385 "column": 11 385 "column": 11
386 }, 386 },
387 "end": { 387 "end": {
388 "line": 134, 388 "line": 137,
389 "column": 3 389 "column": 3
390 } 390 }
391 }, 391 },
@@ -394,11 +394,11 @@
394 "defaultMessage": "!!!Copy Debug Information", 394 "defaultMessage": "!!!Copy Debug Information",
395 "file": "src/lib/Menu.js", 395 "file": "src/lib/Menu.js",
396 "start": { 396 "start": {
397 "line": 135, 397 "line": 138,
398 "column": 13 398 "column": 13
399 }, 399 },
400 "end": { 400 "end": {
401 "line": 138, 401 "line": 141,
402 "column": 3 402 "column": 3
403 } 403 }
404 }, 404 },
@@ -407,11 +407,11 @@
407 "defaultMessage": "!!!Franz Debug Information", 407 "defaultMessage": "!!!Franz Debug Information",
408 "file": "src/lib/Menu.js", 408 "file": "src/lib/Menu.js",
409 "start": { 409 "start": {
410 "line": 139, 410 "line": 142,
411 "column": 27 411 "column": 27
412 }, 412 },
413 "end": { 413 "end": {
414 "line": 142, 414 "line": 145,
415 "column": 3 415 "column": 3
416 } 416 }
417 }, 417 },
@@ -420,11 +420,11 @@
420 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 420 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
421 "file": "src/lib/Menu.js", 421 "file": "src/lib/Menu.js",
422 "start": { 422 "start": {
423 "line": 143, 423 "line": 146,
424 "column": 23 424 "column": 23
425 }, 425 },
426 "end": { 426 "end": {
427 "line": 146, 427 "line": 149,
428 "column": 3 428 "column": 3
429 } 429 }
430 }, 430 },
@@ -433,11 +433,11 @@
433 "defaultMessage": "!!!Terms of Service", 433 "defaultMessage": "!!!Terms of Service",
434 "file": "src/lib/Menu.js", 434 "file": "src/lib/Menu.js",
435 "start": { 435 "start": {
436 "line": 147, 436 "line": 150,
437 "column": 7 437 "column": 7
438 }, 438 },
439 "end": { 439 "end": {
440 "line": 150, 440 "line": 153,
441 "column": 3 441 "column": 3
442 } 442 }
443 }, 443 },
@@ -446,11 +446,11 @@
446 "defaultMessage": "!!!Privacy Statement", 446 "defaultMessage": "!!!Privacy Statement",
447 "file": "src/lib/Menu.js", 447 "file": "src/lib/Menu.js",
448 "start": { 448 "start": {
449 "line": 151, 449 "line": 154,
450 "column": 11 450 "column": 11
451 }, 451 },
452 "end": { 452 "end": {
453 "line": 154, 453 "line": 157,
454 "column": 3 454 "column": 3
455 } 455 }
456 }, 456 },
@@ -459,11 +459,11 @@
459 "defaultMessage": "!!!File", 459 "defaultMessage": "!!!File",
460 "file": "src/lib/Menu.js", 460 "file": "src/lib/Menu.js",
461 "start": { 461 "start": {
462 "line": 155, 462 "line": 158,
463 "column": 8 463 "column": 8
464 }, 464 },
465 "end": { 465 "end": {
466 "line": 158, 466 "line": 161,
467 "column": 3 467 "column": 3
468 } 468 }
469 }, 469 },
@@ -472,11 +472,11 @@
472 "defaultMessage": "!!!View", 472 "defaultMessage": "!!!View",
473 "file": "src/lib/Menu.js", 473 "file": "src/lib/Menu.js",
474 "start": { 474 "start": {
475 "line": 159, 475 "line": 162,
476 "column": 8 476 "column": 8
477 }, 477 },
478 "end": { 478 "end": {
479 "line": 162, 479 "line": 165,
480 "column": 3 480 "column": 3
481 } 481 }
482 }, 482 },
@@ -485,11 +485,11 @@
485 "defaultMessage": "!!!Services", 485 "defaultMessage": "!!!Services",
486 "file": "src/lib/Menu.js", 486 "file": "src/lib/Menu.js",
487 "start": { 487 "start": {
488 "line": 163, 488 "line": 166,
489 "column": 12 489 "column": 12
490 }, 490 },
491 "end": { 491 "end": {
492 "line": 166, 492 "line": 169,
493 "column": 3 493 "column": 3
494 } 494 }
495 }, 495 },
@@ -498,11 +498,11 @@
498 "defaultMessage": "!!!Window", 498 "defaultMessage": "!!!Window",
499 "file": "src/lib/Menu.js", 499 "file": "src/lib/Menu.js",
500 "start": { 500 "start": {
501 "line": 167, 501 "line": 170,
502 "column": 10 502 "column": 10
503 }, 503 },
504 "end": { 504 "end": {
505 "line": 170, 505 "line": 173,
506 "column": 3 506 "column": 3
507 } 507 }
508 }, 508 },
@@ -511,11 +511,11 @@
511 "defaultMessage": "!!!Help", 511 "defaultMessage": "!!!Help",
512 "file": "src/lib/Menu.js", 512 "file": "src/lib/Menu.js",
513 "start": { 513 "start": {
514 "line": 171, 514 "line": 174,
515 "column": 8 515 "column": 8
516 }, 516 },
517 "end": { 517 "end": {
518 "line": 174, 518 "line": 177,
519 "column": 3 519 "column": 3
520 } 520 }
521 }, 521 },
@@ -524,11 +524,11 @@
524 "defaultMessage": "!!!About Franz", 524 "defaultMessage": "!!!About Franz",
525 "file": "src/lib/Menu.js", 525 "file": "src/lib/Menu.js",
526 "start": { 526 "start": {
527 "line": 175, 527 "line": 178,
528 "column": 9 528 "column": 9
529 }, 529 },
530 "end": { 530 "end": {
531 "line": 178, 531 "line": 181,
532 "column": 3 532 "column": 3
533 } 533 }
534 }, 534 },
@@ -537,11 +537,11 @@
537 "defaultMessage": "!!!What's new?", 537 "defaultMessage": "!!!What's new?",
538 "file": "src/lib/Menu.js", 538 "file": "src/lib/Menu.js",
539 "start": { 539 "start": {
540 "line": 179, 540 "line": 182,
541 "column": 16 541 "column": 16
542 }, 542 },
543 "end": { 543 "end": {
544 "line": 182, 544 "line": 185,
545 "column": 3 545 "column": 3
546 } 546 }
547 }, 547 },
@@ -550,11 +550,11 @@
550 "defaultMessage": "!!!Settings", 550 "defaultMessage": "!!!Settings",
551 "file": "src/lib/Menu.js", 551 "file": "src/lib/Menu.js",
552 "start": { 552 "start": {
553 "line": 183, 553 "line": 186,
554 "column": 12 554 "column": 12
555 }, 555 },
556 "end": { 556 "end": {
557 "line": 186, 557 "line": 189,
558 "column": 3 558 "column": 3
559 } 559 }
560 }, 560 },
@@ -563,11 +563,11 @@
563 "defaultMessage": "!!!Check for updates", 563 "defaultMessage": "!!!Check for updates",
564 "file": "src/lib/Menu.js", 564 "file": "src/lib/Menu.js",
565 "start": { 565 "start": {
566 "line": 187, 566 "line": 190,
567 "column": 19 567 "column": 19
568 }, 568 },
569 "end": { 569 "end": {
570 "line": 190, 570 "line": 193,
571 "column": 3 571 "column": 3
572 } 572 }
573 }, 573 },
@@ -576,11 +576,11 @@
576 "defaultMessage": "!!!Hide", 576 "defaultMessage": "!!!Hide",
577 "file": "src/lib/Menu.js", 577 "file": "src/lib/Menu.js",
578 "start": { 578 "start": {
579 "line": 191, 579 "line": 194,
580 "column": 8 580 "column": 8
581 }, 581 },
582 "end": { 582 "end": {
583 "line": 194, 583 "line": 197,
584 "column": 3 584 "column": 3
585 } 585 }
586 }, 586 },
@@ -589,11 +589,11 @@
589 "defaultMessage": "!!!Hide Others", 589 "defaultMessage": "!!!Hide Others",
590 "file": "src/lib/Menu.js", 590 "file": "src/lib/Menu.js",
591 "start": { 591 "start": {
592 "line": 195, 592 "line": 198,
593 "column": 14 593 "column": 14
594 }, 594 },
595 "end": { 595 "end": {
596 "line": 198, 596 "line": 201,
597 "column": 3 597 "column": 3
598 } 598 }
599 }, 599 },
@@ -602,11 +602,11 @@
602 "defaultMessage": "!!!Unhide", 602 "defaultMessage": "!!!Unhide",
603 "file": "src/lib/Menu.js", 603 "file": "src/lib/Menu.js",
604 "start": { 604 "start": {
605 "line": 199, 605 "line": 202,
606 "column": 10 606 "column": 10
607 }, 607 },
608 "end": { 608 "end": {
609 "line": 202, 609 "line": 205,
610 "column": 3 610 "column": 3
611 } 611 }
612 }, 612 },
@@ -615,11 +615,11 @@
615 "defaultMessage": "!!!Quit", 615 "defaultMessage": "!!!Quit",
616 "file": "src/lib/Menu.js", 616 "file": "src/lib/Menu.js",
617 "start": { 617 "start": {
618 "line": 203, 618 "line": 206,
619 "column": 8 619 "column": 8
620 }, 620 },
621 "end": { 621 "end": {
622 "line": 206, 622 "line": 209,
623 "column": 3 623 "column": 3
624 } 624 }
625 }, 625 },
@@ -628,11 +628,11 @@
628 "defaultMessage": "!!!Add New Service...", 628 "defaultMessage": "!!!Add New Service...",
629 "file": "src/lib/Menu.js", 629 "file": "src/lib/Menu.js",
630 "start": { 630 "start": {
631 "line": 207, 631 "line": 210,
632 "column": 17 632 "column": 17
633 }, 633 },
634 "end": { 634 "end": {
635 "line": 210, 635 "line": 213,
636 "column": 3 636 "column": 3
637 } 637 }
638 }, 638 },
@@ -641,11 +641,11 @@
641 "defaultMessage": "!!!Add New Workspace...", 641 "defaultMessage": "!!!Add New Workspace...",
642 "file": "src/lib/Menu.js", 642 "file": "src/lib/Menu.js",
643 "start": { 643 "start": {
644 "line": 211, 644 "line": 214,
645 "column": 19 645 "column": 19
646 }, 646 },
647 "end": { 647 "end": {
648 "line": 214, 648 "line": 217,
649 "column": 3 649 "column": 3
650 } 650 }
651 }, 651 },
@@ -654,11 +654,11 @@
654 "defaultMessage": "!!!Open workspace drawer", 654 "defaultMessage": "!!!Open workspace drawer",
655 "file": "src/lib/Menu.js", 655 "file": "src/lib/Menu.js",
656 "start": { 656 "start": {
657 "line": 215, 657 "line": 218,
658 "column": 23 658 "column": 23
659 }, 659 },
660 "end": { 660 "end": {
661 "line": 218, 661 "line": 221,
662 "column": 3 662 "column": 3
663 } 663 }
664 }, 664 },
@@ -667,11 +667,11 @@
667 "defaultMessage": "!!!Close workspace drawer", 667 "defaultMessage": "!!!Close workspace drawer",
668 "file": "src/lib/Menu.js", 668 "file": "src/lib/Menu.js",
669 "start": { 669 "start": {
670 "line": 219, 670 "line": 222,
671 "column": 24 671 "column": 24
672 }, 672 },
673 "end": { 673 "end": {
674 "line": 222, 674 "line": 225,
675 "column": 3 675 "column": 3
676 } 676 }
677 }, 677 },
@@ -680,11 +680,11 @@
680 "defaultMessage": "!!!Activate next service...", 680 "defaultMessage": "!!!Activate next service...",
681 "file": "src/lib/Menu.js", 681 "file": "src/lib/Menu.js",
682 "start": { 682 "start": {
683 "line": 223, 683 "line": 226,
684 "column": 23 684 "column": 23
685 }, 685 },
686 "end": { 686 "end": {
687 "line": 226, 687 "line": 229,
688 "column": 3 688 "column": 3
689 } 689 }
690 }, 690 },
@@ -693,11 +693,11 @@
693 "defaultMessage": "!!!Activate previous service...", 693 "defaultMessage": "!!!Activate previous service...",
694 "file": "src/lib/Menu.js", 694 "file": "src/lib/Menu.js",
695 "start": { 695 "start": {
696 "line": 227, 696 "line": 230,
697 "column": 27 697 "column": 27
698 }, 698 },
699 "end": { 699 "end": {
700 "line": 230, 700 "line": 233,
701 "column": 3 701 "column": 3
702 } 702 }
703 }, 703 },
@@ -706,11 +706,11 @@
706 "defaultMessage": "!!!Disable notifications & audio", 706 "defaultMessage": "!!!Disable notifications & audio",
707 "file": "src/lib/Menu.js", 707 "file": "src/lib/Menu.js",
708 "start": { 708 "start": {
709 "line": 231, 709 "line": 234,
710 "column": 11 710 "column": 11
711 }, 711 },
712 "end": { 712 "end": {
713 "line": 234, 713 "line": 237,
714 "column": 3 714 "column": 3
715 } 715 }
716 }, 716 },
@@ -719,11 +719,11 @@
719 "defaultMessage": "!!!Enable notifications & audio", 719 "defaultMessage": "!!!Enable notifications & audio",
720 "file": "src/lib/Menu.js", 720 "file": "src/lib/Menu.js",
721 "start": { 721 "start": {
722 "line": 235, 722 "line": 238,
723 "column": 13 723 "column": 13
724 }, 724 },
725 "end": { 725 "end": {
726 "line": 238, 726 "line": 241,
727 "column": 3 727 "column": 3
728 } 728 }
729 }, 729 },
@@ -732,11 +732,11 @@
732 "defaultMessage": "!!!Workspaces", 732 "defaultMessage": "!!!Workspaces",
733 "file": "src/lib/Menu.js", 733 "file": "src/lib/Menu.js",
734 "start": { 734 "start": {
735 "line": 239, 735 "line": 242,
736 "column": 14 736 "column": 14
737 }, 737 },
738 "end": { 738 "end": {
739 "line": 242, 739 "line": 245,
740 "column": 3 740 "column": 3
741 } 741 }
742 }, 742 },
@@ -745,11 +745,50 @@
745 "defaultMessage": "!!!Default", 745 "defaultMessage": "!!!Default",
746 "file": "src/lib/Menu.js", 746 "file": "src/lib/Menu.js",
747 "start": { 747 "start": {
748 "line": 243, 748 "line": 246,
749 "column": 20 749 "column": 20
750 }, 750 },
751 "end": { 751 "end": {
752 "line": 246, 752 "line": 249,
753 "column": 3
754 }
755 },
756 {
757 "id": "menu.todos",
758 "defaultMessage": "!!!Todos",
759 "file": "src/lib/Menu.js",
760 "start": {
761 "line": 250,
762 "column": 9
763 },
764 "end": {
765 "line": 253,
766 "column": 3
767 }
768 },
769 {
770 "id": "menu.Todoss.openTodosDrawer",
771 "defaultMessage": "!!!Open Todos drawer",
772 "file": "src/lib/Menu.js",
773 "start": {
774 "line": 254,
775 "column": 19
776 },
777 "end": {
778 "line": 257,
779 "column": 3
780 }
781 },
782 {
783 "id": "menu.Todoss.closeTodosDrawer",
784 "defaultMessage": "!!!Close Todos drawer",
785 "file": "src/lib/Menu.js",
786 "start": {
787 "line": 258,
788 "column": 20
789 },
790 "end": {
791 "line": 261,
753 "column": 3 792 "column": 3
754 } 793 }
755 } 794 }
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 9e491e151..81efaf18f 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -8,6 +8,9 @@ import { workspaceActions } from '../features/workspaces/actions';
8import { gaEvent } from './analytics'; 8import { gaEvent } from './analytics';
9import { announcementActions } from '../features/announcements/actions'; 9import { announcementActions } from '../features/announcements/actions';
10import { announcementsStore } from '../features/announcements'; 10import { announcementsStore } from '../features/announcements';
11import TodoStore from '../features/todos/store';
12import { GA_CATEGORY_TODOS, todosStore } from '../features/todos';
13import { todoActions } from '../features/todos/actions';
11 14
12const { app, Menu, dialog } = remote; 15const { app, Menu, dialog } = remote;
13 16
@@ -244,7 +247,18 @@ const menuItems = defineMessages({
244 id: 'menu.workspaces.defaultWorkspace', 247 id: 'menu.workspaces.defaultWorkspace',
245 defaultMessage: '!!!Default', 248 defaultMessage: '!!!Default',
246 }, 249 },
247 250 todos: {
251 id: 'menu.todos',
252 defaultMessage: '!!!Todos',
253 },
254 openTodosDrawer: {
255 id: 'menu.Todoss.openTodosDrawer',
256 defaultMessage: '!!!Open Todos drawer',
257 },
258 closeTodosDrawer: {
259 id: 'menu.Todoss.closeTodosDrawer',
260 defaultMessage: '!!!Close Todos drawer',
261 },
248}); 262});
249 263
250function getActiveWebview() { 264function getActiveWebview() {
@@ -353,6 +367,11 @@ const _templateFactory = intl => [
353 visible: workspaceStore.isFeatureEnabled, 367 visible: workspaceStore.isFeatureEnabled,
354 }, 368 },
355 { 369 {
370 label: intl.formatMessage(menuItems.todos),
371 submenu: [],
372 visible: todosStore.isFeatureEnabled,
373 },
374 {
356 label: intl.formatMessage(menuItems.window), 375 label: intl.formatMessage(menuItems.window),
357 role: 'window', 376 role: 'window',
358 submenu: [ 377 submenu: [
@@ -788,6 +807,10 @@ export default class FranzMenu {
788 tpl[4].submenu = this.workspacesMenu(); 807 tpl[4].submenu = this.workspacesMenu();
789 } 808 }
790 809
810 if (todosStore.isFeatureEnabled) {
811 tpl[5].submenu = this.todosMenu();
812 }
813
791 tpl[tpl.length - 1].submenu.push({ 814 tpl[tpl.length - 1].submenu.push({
792 type: 'separator', 815 type: 'separator',
793 }, this.debugMenu()); 816 }, this.debugMenu());
@@ -902,6 +925,31 @@ export default class FranzMenu {
902 return menu; 925 return menu;
903 } 926 }
904 927
928 todosMenu() {
929 const { isTodosPanelVisible } = TodoStore;
930 const { intl } = window.franz;
931 const menu = [];
932
933 // Open todos drawer:
934 const drawerLabel = (
935 isTodosPanelVisible ? menuItems.closeTodosDrawer : menuItems.openTodosDrawer
936 );
937 menu.push({
938 label: intl.formatMessage(drawerLabel),
939 accelerator: `${cmdKey}+T`,
940 click: () => {
941 todoActions.toggleTodosPanel();
942 gaEvent(GA_CATEGORY_TODOS, 'toggleDrawer', 'menu');
943 },
944 enabled: this.stores.user.isLoggedIn,
945 }, {
946 type: 'separator',
947 });
948
949 return menu;
950 }
951
952
905 debugMenu() { 953 debugMenu() {
906 const { intl } = window.franz; 954 const { intl } = window.franz;
907 955