2022-11-23 09:00:00 +00:00
|
|
|
const electron = require('electron');
|
2023-02-18 15:11:17 +00:00
|
|
|
const { t } = require('i18next');
|
2016-10-30 10:57:12 +00:00
|
|
|
|
2023-02-06 06:33:02 +00:00
|
|
|
// menu-safe i18n.t:
|
|
|
|
// https://github.com/mifi/lossless-cut/issues/1456
|
2023-02-18 15:11:17 +00:00
|
|
|
const esc = (val) => val.replace(/&/g, '&&');
|
2023-02-06 06:33:02 +00:00
|
|
|
|
2018-09-30 20:08:36 +00:00
|
|
|
const { Menu } = electron;
|
2016-10-30 10:57:12 +00:00
|
|
|
|
2021-12-01 17:19:37 +00:00
|
|
|
const { homepage, getReleaseUrl, licensesPage } = require('./constants');
|
2016-10-30 10:57:12 +00:00
|
|
|
|
2023-02-15 05:59:48 +00:00
|
|
|
module.exports = ({ app, mainWindow, newVersion, isStoreBuild }) => {
|
2020-03-26 11:04:36 +00:00
|
|
|
const menu = [
|
|
|
|
...(process.platform === 'darwin' ? [{ role: 'appMenu' }] : []),
|
2016-10-30 10:57:12 +00:00
|
|
|
|
2020-03-26 11:04:36 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('File')),
|
2020-03-26 11:04:36 +00:00
|
|
|
submenu: [
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Open')),
|
2020-03-26 11:04:36 +00:00
|
|
|
accelerator: 'CmdOrCtrl+O',
|
|
|
|
async click() {
|
2022-06-08 02:41:00 +00:00
|
|
|
mainWindow.webContents.send('openFilesDialog');
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Close')),
|
2020-03-26 11:04:36 +00:00
|
|
|
accelerator: 'CmdOrCtrl+W',
|
|
|
|
async click() {
|
2022-02-23 11:43:19 +00:00
|
|
|
mainWindow.webContents.send('closeCurrentFile');
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
|
|
|
},
|
2021-08-28 14:47:43 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Close batch')),
|
2021-08-28 14:47:43 +00:00
|
|
|
async click() {
|
2022-02-23 11:43:19 +00:00
|
|
|
mainWindow.webContents.send('closeBatchFiles');
|
2021-08-28 14:47:43 +00:00
|
|
|
},
|
|
|
|
},
|
2020-03-26 11:04:36 +00:00
|
|
|
{ type: 'separator' },
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Import project (LLC)...')),
|
2020-03-26 11:04:36 +00:00
|
|
|
click() {
|
2021-08-24 09:21:26 +00:00
|
|
|
mainWindow.webContents.send('importEdlFile', 'llc');
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
|
|
|
},
|
2020-12-11 15:15:35 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Export project (LLC)...')),
|
2020-12-11 15:15:35 +00:00
|
|
|
click() {
|
2021-08-24 09:21:26 +00:00
|
|
|
mainWindow.webContents.send('exportEdlFile', 'llc');
|
2020-12-11 15:15:35 +00:00
|
|
|
},
|
|
|
|
},
|
2020-11-18 20:24:20 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Import project')),
|
2020-11-18 20:24:20 +00:00
|
|
|
submenu: [
|
2021-08-24 09:21:26 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Times in seconds (CSV)')),
|
2021-08-24 09:21:26 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'csv');
|
|
|
|
},
|
|
|
|
},
|
2022-02-14 04:08:57 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Frame numbers (CSV)')),
|
2022-02-14 04:08:57 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'csv-frames');
|
|
|
|
},
|
|
|
|
},
|
2021-02-21 18:12:25 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('EDL (MPlayer)')),
|
2021-02-21 18:12:25 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'mplayer');
|
|
|
|
},
|
|
|
|
},
|
2020-11-19 21:51:17 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Text chapters / YouTube')),
|
2020-11-19 21:51:17 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'youtube');
|
|
|
|
},
|
|
|
|
},
|
2020-11-18 20:24:20 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('DaVinci Resolve / Final Cut Pro XML')),
|
2020-11-18 20:24:20 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'xmeml');
|
|
|
|
},
|
|
|
|
},
|
2022-07-17 21:36:57 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Final Cut Pro FCPX / FCPXML')),
|
2022-07-17 21:36:57 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'fcpxml');
|
|
|
|
},
|
|
|
|
},
|
2020-11-19 21:51:17 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('CUE sheet file')),
|
2020-11-19 21:51:17 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'cue');
|
|
|
|
},
|
|
|
|
},
|
2020-12-08 16:10:31 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('PotPlayer Bookmarks (.pbf)')),
|
2020-12-08 16:10:31 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'pbf');
|
|
|
|
},
|
|
|
|
},
|
2023-07-25 16:55:04 +00:00
|
|
|
{
|
|
|
|
label: esc(t('DV Analyzer Summary.txt')),
|
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('importEdlFile', 'dv-analyzer-summary-txt');
|
|
|
|
},
|
|
|
|
},
|
2020-11-18 20:24:20 +00:00
|
|
|
],
|
|
|
|
},
|
2020-12-14 16:29:07 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Export project')),
|
2020-12-14 16:29:07 +00:00
|
|
|
submenu: [
|
2021-08-24 09:21:26 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Times in seconds (CSV)')),
|
2021-08-24 09:21:26 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('exportEdlFile', 'csv');
|
|
|
|
},
|
|
|
|
},
|
2020-12-14 16:29:07 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Timestamps (CSV)')),
|
2020-12-14 16:29:07 +00:00
|
|
|
click() {
|
2020-12-14 23:49:08 +00:00
|
|
|
mainWindow.webContents.send('exportEdlFile', 'csv-human');
|
|
|
|
},
|
|
|
|
},
|
2022-01-14 09:55:56 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Frame numbers (CSV)')),
|
2022-01-14 09:55:56 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('exportEdlFile', 'csv-frames');
|
|
|
|
},
|
|
|
|
},
|
2020-12-14 23:49:08 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Timestamps (TSV/TXT)')),
|
2020-12-14 23:49:08 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('exportEdlFile', 'tsv-human');
|
2020-12-14 16:29:07 +00:00
|
|
|
},
|
|
|
|
},
|
2021-02-19 12:46:08 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Start times as YouTube Chapters')),
|
2021-02-19 12:46:08 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('exportEdlYouTube');
|
|
|
|
},
|
|
|
|
},
|
2020-12-14 16:29:07 +00:00
|
|
|
],
|
|
|
|
},
|
2020-03-26 11:04:36 +00:00
|
|
|
{ type: 'separator' },
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Convert to supported format')),
|
2020-03-26 11:04:36 +00:00
|
|
|
click() {
|
2020-04-07 14:03:33 +00:00
|
|
|
mainWindow.webContents.send('html5ify');
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
|
|
|
},
|
2020-11-22 22:53:04 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Fix incorrect duration')),
|
2020-11-22 22:53:04 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('fixInvalidDuration');
|
|
|
|
},
|
|
|
|
},
|
2020-03-26 11:04:36 +00:00
|
|
|
{ type: 'separator' },
|
2020-12-11 15:15:35 +00:00
|
|
|
|
2020-03-26 11:04:36 +00:00
|
|
|
{ type: 'separator' },
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Settings')),
|
2021-04-18 11:04:53 +00:00
|
|
|
accelerator: 'CmdOrCtrl+,',
|
2020-03-26 11:04:36 +00:00
|
|
|
click() {
|
2022-02-23 11:43:19 +00:00
|
|
|
mainWindow.webContents.send('toggleSettings');
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
|
|
|
},
|
2022-08-12 09:37:39 +00:00
|
|
|
// Due to Apple Review Guidelines, we cannot include an Exit menu item here
|
|
|
|
// Apple has their own Quit from the app menu
|
|
|
|
...(process.platform !== 'darwin' ? [
|
|
|
|
{ type: 'separator' },
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Exit')),
|
2022-08-12 09:37:39 +00:00
|
|
|
click() {
|
|
|
|
app.quit();
|
|
|
|
},
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
2022-08-12 09:37:39 +00:00
|
|
|
] : []),
|
2020-03-26 11:04:36 +00:00
|
|
|
],
|
2020-02-20 10:41:01 +00:00
|
|
|
},
|
|
|
|
|
2020-03-26 11:04:36 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Edit')),
|
2020-03-26 11:04:36 +00:00
|
|
|
submenu: [
|
2022-06-08 01:44:05 +00:00
|
|
|
// https://github.com/mifi/lossless-cut/issues/610
|
|
|
|
// https://github.com/mifi/lossless-cut/issues/1183
|
2023-02-18 15:11:17 +00:00
|
|
|
{ role: 'undo', label: esc(t('Undo')) },
|
|
|
|
{ role: 'redo', label: esc(t('Redo')) },
|
2020-03-26 11:04:36 +00:00
|
|
|
{ type: 'separator' },
|
2023-02-18 15:11:17 +00:00
|
|
|
{ role: 'cut', label: esc(t('Cut')) },
|
|
|
|
{ role: 'copy', label: esc(t('Copy')) },
|
|
|
|
{ role: 'paste', label: esc(t('Paste')) },
|
|
|
|
{ role: 'selectall', label: esc(t('Select All')) },
|
2020-11-20 23:04:08 +00:00
|
|
|
{ type: 'separator' },
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Segments')),
|
2020-11-20 23:04:08 +00:00
|
|
|
submenu: [
|
2020-12-14 11:29:17 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Clear all segments')),
|
2020-12-14 11:29:17 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('clearSegments');
|
|
|
|
},
|
|
|
|
},
|
2020-11-25 21:42:10 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Reorder segments by start time')),
|
2020-11-25 21:42:10 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('reorderSegsByStartTime');
|
|
|
|
},
|
|
|
|
},
|
2020-11-20 23:04:08 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Create num segments')),
|
2020-11-20 23:04:08 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('createNumSegments');
|
|
|
|
},
|
|
|
|
},
|
2020-11-20 23:30:53 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Create fixed duration segments')),
|
2020-11-20 23:30:53 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('createFixedDurationSegments');
|
|
|
|
},
|
|
|
|
},
|
2022-05-24 05:31:48 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Create random segments')),
|
2022-05-24 05:31:48 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('createRandomSegments');
|
|
|
|
},
|
|
|
|
},
|
2021-08-25 06:36:04 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Invert all segments on timeline')),
|
2021-08-25 06:36:04 +00:00
|
|
|
click() {
|
2022-03-06 13:52:48 +00:00
|
|
|
mainWindow.webContents.send('invertAllSegments');
|
2021-08-25 06:36:04 +00:00
|
|
|
},
|
|
|
|
},
|
2022-03-06 08:54:12 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Fill gaps between segments')),
|
2022-03-06 08:54:12 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('fillSegmentsGaps');
|
|
|
|
},
|
|
|
|
},
|
2022-12-30 08:15:22 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Combine overlapping segments')),
|
2022-12-30 08:15:22 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('combineOverlappingSegments');
|
|
|
|
},
|
|
|
|
},
|
2023-04-04 12:43:10 +00:00
|
|
|
{
|
|
|
|
label: esc(t('Combine selected segments')),
|
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('combineSelectedSegments');
|
|
|
|
},
|
|
|
|
},
|
2022-02-18 06:34:20 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Shuffle segments order')),
|
2022-02-18 06:34:20 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('shuffleSegments');
|
|
|
|
},
|
|
|
|
},
|
2022-03-01 15:10:25 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Shift all segments on timeline')),
|
2022-03-01 15:10:25 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('shiftAllSegmentTimes');
|
|
|
|
},
|
|
|
|
},
|
2023-02-05 11:08:28 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Align segment times to keyframes')),
|
2023-02-05 11:08:28 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('alignSegmentTimesToKeyframes');
|
|
|
|
},
|
|
|
|
},
|
2020-11-20 23:04:08 +00:00
|
|
|
],
|
|
|
|
},
|
2020-12-11 15:15:35 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Tracks')),
|
2020-12-11 15:15:35 +00:00
|
|
|
submenu: [
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Extract all tracks')),
|
2020-12-11 15:15:35 +00:00
|
|
|
click() {
|
2022-02-23 11:43:19 +00:00
|
|
|
mainWindow.webContents.send('extractAllStreams');
|
2020-12-11 15:15:35 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Edit tracks / metadata tags')),
|
2020-12-11 15:15:35 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('showStreamsSelector');
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
2020-03-26 11:04:36 +00:00
|
|
|
],
|
2020-02-20 10:41:01 +00:00
|
|
|
},
|
|
|
|
|
2020-03-26 11:04:36 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('View')),
|
2020-03-26 11:04:36 +00:00
|
|
|
submenu: [
|
2023-02-18 15:11:17 +00:00
|
|
|
{ role: 'togglefullscreen', label: esc(t('Toggle Full Screen')) },
|
2020-03-26 11:04:36 +00:00
|
|
|
],
|
|
|
|
},
|
2020-02-20 10:41:01 +00:00
|
|
|
|
2020-03-26 13:31:11 +00:00
|
|
|
// On Windows the windowMenu has a close Ctrl+W which clashes with File->Close shortcut
|
|
|
|
...(process.platform === 'darwin'
|
2023-02-18 15:11:17 +00:00
|
|
|
? [{ role: 'windowMenu', label: esc(t('Window')) }]
|
2020-03-26 13:31:11 +00:00
|
|
|
: [{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Window')),
|
|
|
|
submenu: [{ role: 'minimize', label: esc(t('Minimize')) }],
|
2020-03-26 13:31:11 +00:00
|
|
|
}]
|
|
|
|
),
|
2016-10-30 10:57:12 +00:00
|
|
|
|
2020-03-26 11:04:36 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Tools')),
|
2019-01-28 01:25:31 +00:00
|
|
|
submenu: [
|
2022-02-23 13:16:02 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Merge/concatenate files')),
|
2022-02-23 13:16:02 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('concatCurrentBatch');
|
|
|
|
},
|
|
|
|
},
|
2020-02-20 17:57:14 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Set custom start offset/timecode')),
|
2020-02-20 17:57:14 +00:00
|
|
|
click() {
|
2022-02-23 13:16:02 +00:00
|
|
|
mainWindow.webContents.send('askSetStartTimeOffset');
|
2020-02-20 17:57:14 +00:00
|
|
|
},
|
|
|
|
},
|
2022-03-18 09:51:24 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Detect black scenes')),
|
2022-03-18 09:51:24 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('detectBlackScenes');
|
|
|
|
},
|
|
|
|
},
|
2022-12-28 15:55:41 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Detect silent scenes')),
|
2022-12-28 15:55:41 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('detectSilentScenes');
|
|
|
|
},
|
|
|
|
},
|
2022-12-29 10:22:24 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Detect scene changes')),
|
2022-12-29 10:22:24 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('detectSceneChanges');
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Create segments from keyframes')),
|
2022-12-29 10:22:24 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('createSegmentsFromKeyframes');
|
|
|
|
},
|
|
|
|
},
|
2022-10-19 15:27:48 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Last ffmpeg commands')),
|
2022-10-19 15:27:48 +00:00
|
|
|
click() { mainWindow.webContents.send('toggleLastCommands'); },
|
|
|
|
},
|
2022-03-18 09:51:24 +00:00
|
|
|
{ type: 'separator' },
|
2023-02-18 15:11:17 +00:00
|
|
|
{ role: 'toggleDevTools', label: esc(t('Toggle Developer Tools')) },
|
2019-01-28 01:25:31 +00:00
|
|
|
],
|
|
|
|
},
|
|
|
|
{
|
2016-11-05 20:22:31 +00:00
|
|
|
role: 'help',
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Help')),
|
2016-11-05 20:22:31 +00:00
|
|
|
submenu: [
|
2020-02-22 15:44:21 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('How to use')),
|
2022-10-19 15:27:48 +00:00
|
|
|
click() { electron.shell.openExternal('https://mifi.no/losslesscut/usage'); },
|
2020-02-22 15:44:21 +00:00
|
|
|
},
|
2020-03-26 11:04:36 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('FAQ')),
|
2022-10-19 15:27:48 +00:00
|
|
|
click() { electron.shell.openExternal('https://mifi.no/losslesscut/faq'); },
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
2021-11-15 07:32:27 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Troubleshooting')),
|
2022-10-19 15:27:48 +00:00
|
|
|
click() { electron.shell.openExternal('https://mifi.no/losslesscut/troubleshooting'); },
|
2021-11-15 07:32:27 +00:00
|
|
|
},
|
2022-10-19 15:27:48 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Keyboard & mouse shortcuts')),
|
2022-10-19 15:27:48 +00:00
|
|
|
click() {
|
|
|
|
mainWindow.webContents.send('toggleKeyboardShortcuts');
|
|
|
|
},
|
|
|
|
},
|
2023-04-17 04:28:10 +00:00
|
|
|
{
|
|
|
|
label: esc(t('Learn More')),
|
|
|
|
click() { electron.shell.openExternal(homepage); },
|
|
|
|
},
|
|
|
|
{ type: 'separator' },
|
2020-04-10 10:54:51 +00:00
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Report an error')),
|
2020-04-10 10:54:51 +00:00
|
|
|
click() { mainWindow.webContents.send('openSendReportDialog'); },
|
|
|
|
},
|
2023-04-17 04:28:10 +00:00
|
|
|
{
|
|
|
|
label: esc(t('Feature request')),
|
|
|
|
click() { electron.shell.openExternal('https://github.com/mifi/lossless-cut/issues'); },
|
|
|
|
},
|
|
|
|
{ type: 'separator' },
|
|
|
|
{
|
|
|
|
label: esc(t('Licenses')),
|
|
|
|
click() { electron.shell.openExternal(licensesPage); },
|
|
|
|
},
|
2023-04-05 13:37:38 +00:00
|
|
|
...(process.platform !== 'darwin' ? [{ role: 'about', label: esc(t('About LosslessCut')) }] : []),
|
2016-11-05 20:22:31 +00:00
|
|
|
],
|
2020-03-26 11:04:36 +00:00
|
|
|
},
|
|
|
|
];
|
2016-10-30 10:57:12 +00:00
|
|
|
|
2023-02-15 05:59:48 +00:00
|
|
|
if (!isStoreBuild && newVersion) {
|
2018-02-17 14:15:30 +00:00
|
|
|
menu.push({
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('New version!')),
|
2018-02-17 14:15:30 +00:00
|
|
|
submenu: [
|
|
|
|
{
|
2023-02-18 15:11:17 +00:00
|
|
|
label: esc(t('Download {{version}}', { version: newVersion })),
|
2021-12-01 17:19:37 +00:00
|
|
|
click() { electron.shell.openExternal(getReleaseUrl(newVersion)); },
|
2018-02-17 14:15:30 +00:00
|
|
|
},
|
|
|
|
],
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2016-10-30 10:57:12 +00:00
|
|
|
Menu.setApplicationMenu(Menu.buildFromTemplate(menu));
|
|
|
|
};
|