2021-03-31 09:57:49 +00:00
|
|
|
import React, { memo } from 'react';
|
2020-02-28 11:00:30 +00:00
|
|
|
import { IoIosHelpCircle, IoIosSettings } from 'react-icons/io';
|
2021-04-07 16:33:54 +00:00
|
|
|
import { FaLock, FaUnlock } from 'react-icons/fa';
|
2021-08-25 15:21:30 +00:00
|
|
|
import { IconButton, Button, CrossIcon, ListIcon, VolumeUpIcon, VolumeOffIcon } from 'evergreen-ui';
|
2020-03-19 15:37:38 +00:00
|
|
|
import { useTranslation } from 'react-i18next';
|
2020-02-26 03:11:28 +00:00
|
|
|
|
2021-02-18 20:15:40 +00:00
|
|
|
import MergeExportButton from './components/MergeExportButton';
|
|
|
|
|
2021-08-23 06:50:17 +00:00
|
|
|
import { withBlur, isMasBuild } from './util';
|
2022-02-13 07:33:50 +00:00
|
|
|
import { primaryTextColor, controlsBackground } from './colors';
|
2020-02-26 03:11:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
const TopMenu = memo(({
|
2020-04-06 16:08:46 +00:00
|
|
|
filePath, copyAnyAudioTrack, toggleStripAudio, customOutDir, changeOutDir,
|
2020-11-25 20:46:03 +00:00
|
|
|
renderOutFmt, toggleHelp, numStreamsToCopy, numStreamsTotal, setStreamsSelectorShown, toggleSettings,
|
2021-08-23 06:50:17 +00:00
|
|
|
enabledOutSegments, autoMerge, setAutoMerge, autoDeleteMergedSegments, setAutoDeleteMergedSegments, isCustomFormatSelected, onOutFormatLockedClick, simpleMode, outFormatLocked, clearOutDir,
|
2022-02-13 14:27:23 +00:00
|
|
|
segmentsToChaptersOnly, setSegmentsToChaptersOnly,
|
2020-02-26 03:11:28 +00:00
|
|
|
}) => {
|
2020-03-19 15:37:38 +00:00
|
|
|
const { t } = useTranslation();
|
|
|
|
|
2021-08-23 06:50:17 +00:00
|
|
|
// We cannot allow exporting to a directory which has not yet been confirmed by an open dialog because of sandox restrictions
|
|
|
|
const showClearWorkingDirButton = customOutDir && !isMasBuild;
|
|
|
|
|
2021-04-07 16:33:54 +00:00
|
|
|
function renderFormatLock() {
|
|
|
|
const Icon = outFormatLocked ? FaLock : FaUnlock;
|
|
|
|
return <Icon onClick={onOutFormatLockedClick} title={t('Lock/unlock output format')} size={14} style={{ marginRight: 7, marginLeft: 2, color: outFormatLocked ? primaryTextColor : undefined }} />;
|
|
|
|
}
|
|
|
|
|
2020-02-26 03:11:28 +00:00
|
|
|
return (
|
2022-02-13 07:33:50 +00:00
|
|
|
<div
|
|
|
|
className="no-user-select"
|
|
|
|
style={{ background: controlsBackground, display: 'flex', alignItems: 'center', padding: '3px 5px', justifyContent: 'space-between', flexWrap: 'wrap' }}
|
|
|
|
>
|
2020-02-26 03:11:28 +00:00
|
|
|
{filePath && (
|
2021-03-30 15:01:25 +00:00
|
|
|
<>
|
2021-08-25 15:21:30 +00:00
|
|
|
<Button height={20} iconBefore={ListIcon} onClick={withBlur(() => setStreamsSelectorShown(true))}>
|
2020-03-19 15:37:38 +00:00
|
|
|
{t('Tracks')} ({numStreamsToCopy}/{numStreamsTotal})
|
2020-02-26 03:11:28 +00:00
|
|
|
</Button>
|
|
|
|
|
|
|
|
<Button
|
2021-08-25 15:21:30 +00:00
|
|
|
iconBefore={copyAnyAudioTrack ? VolumeUpIcon : VolumeOffIcon}
|
2020-02-26 03:11:28 +00:00
|
|
|
height={20}
|
2020-03-19 15:37:38 +00:00
|
|
|
title={`${t('Discard audio? Current:')} ${copyAnyAudioTrack ? t('Keep audio tracks') : t('Discard audio tracks')}`}
|
2020-02-26 03:11:28 +00:00
|
|
|
onClick={withBlur(toggleStripAudio)}
|
|
|
|
>
|
2020-03-19 15:37:38 +00:00
|
|
|
{copyAnyAudioTrack ? t('Keep audio') : t('Discard audio')}
|
2020-02-26 03:11:28 +00:00
|
|
|
</Button>
|
2021-03-30 15:01:25 +00:00
|
|
|
</>
|
2020-02-26 03:11:28 +00:00
|
|
|
)}
|
|
|
|
|
|
|
|
<div style={{ flexGrow: 1 }} />
|
|
|
|
|
2021-08-23 06:50:17 +00:00
|
|
|
{showClearWorkingDirButton && (
|
|
|
|
<IconButton
|
|
|
|
intent="danger"
|
|
|
|
icon={CrossIcon}
|
|
|
|
height={20}
|
|
|
|
onClick={withBlur(clearOutDir)}
|
|
|
|
title={t('Clear working directory')}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
|
2020-04-07 08:55:45 +00:00
|
|
|
<Button
|
|
|
|
height={20}
|
|
|
|
onClick={withBlur(changeOutDir)}
|
|
|
|
title={customOutDir}
|
2021-08-23 06:50:17 +00:00
|
|
|
paddingLeft={showClearWorkingDirButton ? 4 : undefined}
|
2020-04-07 08:55:45 +00:00
|
|
|
>
|
|
|
|
{customOutDir ? t('Working dir set') : t('Working dir unset')}
|
|
|
|
</Button>
|
|
|
|
|
2021-04-07 16:33:54 +00:00
|
|
|
{filePath && (
|
|
|
|
<>
|
|
|
|
{renderOutFmt({ height: 20, maxWidth: 100 })}
|
|
|
|
|
|
|
|
{!simpleMode && (isCustomFormatSelected || outFormatLocked) && renderFormatLock()}
|
2021-02-18 20:15:40 +00:00
|
|
|
|
2022-02-13 14:27:23 +00:00
|
|
|
<MergeExportButton autoMerge={autoMerge} enabledOutSegments={enabledOutSegments} setAutoMerge={setAutoMerge} autoDeleteMergedSegments={autoDeleteMergedSegments} setAutoDeleteMergedSegments={setAutoDeleteMergedSegments} segmentsToChaptersOnly={segmentsToChaptersOnly} setSegmentsToChaptersOnly={setSegmentsToChaptersOnly} />
|
2021-04-07 16:33:54 +00:00
|
|
|
</>
|
|
|
|
)}
|
2020-02-26 03:11:28 +00:00
|
|
|
|
|
|
|
<IoIosHelpCircle size={24} role="button" onClick={toggleHelp} style={{ verticalAlign: 'middle', marginLeft: 5 }} />
|
2020-02-28 11:00:30 +00:00
|
|
|
<IoIosSettings size={24} role="button" onClick={toggleSettings} style={{ verticalAlign: 'middle', marginLeft: 5 }} />
|
2022-02-13 07:33:50 +00:00
|
|
|
</div>
|
2020-02-26 03:11:28 +00:00
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
export default TopMenu;
|