Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit b929040

Browse files
committed
Menu fixes
1 parent 0b6ef1c commit b929040

File tree

2 files changed

+34
-132
lines changed

2 files changed

+34
-132
lines changed

src/menu.ts

Lines changed: 33 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import {
2-
app,
32
Menu,
43
shell,
54
BrowserWindow,
@@ -11,6 +10,9 @@ interface DarwinMenuItemConstructorOptions extends MenuItemConstructorOptions {
1110
submenu?: DarwinMenuItemConstructorOptions[] | Menu;
1211
}
1312

13+
const isDev =
14+
process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true';
15+
1416
export default class MenuBuilder {
1517
mainWindow: BrowserWindow;
1618

@@ -27,10 +29,8 @@ export default class MenuBuilder {
2729
}
2830

2931
const template =
30-
process.platform === 'darwin'
31-
? this.buildDarwinTemplate()
32-
: [];
33-
// : this.buildDefaultTemplate(); // Disable menu for Win and Linux
32+
process.platform === 'darwin' ? this.buildDarwinTemplate() : [];
33+
// : this.buildDefaultTemplate(); // Disable menu for Win and Linux
3434

3535
const menu = Menu.buildFromTemplate(template);
3636
Menu.setApplicationMenu(menu);
@@ -54,143 +54,45 @@ export default class MenuBuilder {
5454
}
5555

5656
buildDarwinTemplate(): MenuItemConstructorOptions[] {
57-
const subMenuAbout: DarwinMenuItemConstructorOptions = {
58-
label: 'Electron',
57+
const none = [] as any;
58+
const subMenuApp: DarwinMenuItemConstructorOptions = {
59+
label: 'TimeTracker',
5960
submenu: [
60-
{
61-
label: 'About ElectronReact',
62-
selector: 'orderFrontStandardAboutPanel:',
63-
},
64-
{ type: 'separator' },
65-
{ label: 'Services', submenu: [] },
66-
{ type: 'separator' },
67-
{
68-
label: 'Hide ElectronReact',
69-
accelerator: 'Command+H',
70-
selector: 'hide:',
71-
},
72-
{
73-
label: 'Hide Others',
74-
accelerator: 'Command+Shift+H',
75-
selector: 'hideOtherApplications:',
76-
},
77-
{ label: 'Show All', selector: 'unhideAllApplications:' },
61+
{ role: 'about' },
62+
...(isDev ? [{ type: 'separator' }, { role: 'services' }] : none),
7863
{ type: 'separator' },
79-
{
80-
label: 'Quit',
81-
accelerator: 'Command+Q',
82-
click: () => {
83-
app.quit();
84-
},
85-
},
86-
],
87-
};
88-
const subMenuEdit: DarwinMenuItemConstructorOptions = {
89-
label: 'Edit',
90-
submenu: [
91-
{ label: 'Undo', accelerator: 'Command+Z', selector: 'undo:' },
92-
{ label: 'Redo', accelerator: 'Shift+Command+Z', selector: 'redo:' },
64+
{ role: 'hide' },
65+
{ role: 'hideOthers' },
66+
{ role: 'unhide' },
9367
{ type: 'separator' },
94-
{ label: 'Cut', accelerator: 'Command+X', selector: 'cut:' },
95-
{ label: 'Copy', accelerator: 'Command+C', selector: 'copy:' },
96-
{ label: 'Paste', accelerator: 'Command+V', selector: 'paste:' },
97-
{
98-
label: 'Select All',
99-
accelerator: 'Command+A',
100-
selector: 'selectAll:',
101-
},
102-
],
103-
};
104-
const subMenuViewDev: MenuItemConstructorOptions = {
105-
label: 'View',
106-
submenu: [
107-
{
108-
label: 'Reload',
109-
accelerator: 'Command+R',
110-
click: () => {
111-
this.mainWindow.webContents.reload();
112-
},
113-
},
114-
{
115-
label: 'Toggle Full Screen',
116-
accelerator: 'Ctrl+Command+F',
117-
click: () => {
118-
this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen());
119-
},
120-
},
121-
{
122-
label: 'Toggle Developer Tools',
123-
accelerator: 'Alt+Command+I',
124-
click: () => {
125-
this.mainWindow.webContents.toggleDevTools();
126-
},
127-
},
68+
{ role: 'quit' },
12869
],
12970
};
130-
const subMenuViewProd: MenuItemConstructorOptions = {
71+
const subMenuView: DarwinMenuItemConstructorOptions = {
13172
label: 'View',
13273
submenu: [
133-
{
134-
label: 'Toggle Full Screen',
135-
accelerator: 'Ctrl+Command+F',
136-
click: () => {
137-
this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen());
138-
},
139-
},
140-
],
141-
};
142-
const subMenuWindow: DarwinMenuItemConstructorOptions = {
143-
label: 'Window',
144-
submenu: [
145-
{
146-
label: 'Minimize',
147-
accelerator: 'Command+M',
148-
selector: 'performMiniaturize:',
149-
},
150-
{ label: 'Close', accelerator: 'Command+W', selector: 'performClose:' },
74+
...(isDev
75+
? [
76+
{ role: 'reload' },
77+
{ role: 'forceReload' },
78+
{ role: 'toggleDevTools' },
79+
{ type: 'separator' },
80+
]
81+
: none),
82+
{ role: 'resetZoom' },
83+
{ role: 'zoomIn' },
84+
{ role: 'zoomOut' },
15185
{ type: 'separator' },
152-
{ label: 'Bring All to Front', selector: 'arrangeInFront:' },
153-
],
154-
};
155-
const subMenuHelp: MenuItemConstructorOptions = {
156-
label: 'Help',
157-
submenu: [
158-
{
159-
label: 'Learn More',
160-
click() {
161-
shell.openExternal('https://electronjs.org');
162-
},
163-
},
164-
{
165-
label: 'Documentation',
166-
click() {
167-
shell.openExternal(
168-
'https://github.com/electron/electron/tree/master/docs#readme'
169-
);
170-
},
171-
},
172-
{
173-
label: 'Community Discussions',
174-
click() {
175-
shell.openExternal('https://www.electronjs.org/community');
176-
},
177-
},
178-
{
179-
label: 'Search Issues',
180-
click() {
181-
shell.openExternal('https://github.com/electron/electron/issues');
182-
},
183-
},
86+
{ role: 'togglefullscreen' },
18487
],
18588
};
18689

187-
const subMenuView =
188-
process.env.NODE_ENV === 'development' ||
189-
process.env.DEBUG_PROD === 'true'
190-
? subMenuViewDev
191-
: subMenuViewProd;
192-
193-
return [subMenuAbout, subMenuEdit, subMenuView, subMenuWindow, subMenuHelp];
90+
return [
91+
subMenuApp,
92+
{ role: 'editMenu' },
93+
subMenuView,
94+
{ role: 'windowMenu' },
95+
];
19496
}
19597

19698
buildDefaultTemplate() {

src/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "time-tracker",
33
"productName": "TimeTracker",
4-
"version": "1.0.9",
4+
"version": "1.0.10",
55
"description": "Start and stop time, jump between tasks, and add details on how time was spent.",
66
"main": "./main.prod.js",
77
"author": {

0 commit comments

Comments
 (0)