diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index f6ab42e9..02e8fd7b 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -2847,7 +2847,7 @@ function App() { /> - + setStreamsSelectorShown(false)} maxWidth={1000}> {mainStreams && filePath != null && ( diff --git a/src/renderer/src/components/ExportConfirm.tsx b/src/renderer/src/components/ExportConfirm.tsx index 145b58b3..98487976 100644 --- a/src/renderer/src/components/ExportConfirm.tsx +++ b/src/renderer/src/components/ExportConfirm.tsx @@ -4,7 +4,7 @@ import { WarningSignIcon, CrossIcon } from 'evergreen-ui'; import { FaRegCheckCircle } from 'react-icons/fa'; import i18n from 'i18next'; import { useTranslation, Trans } from 'react-i18next'; -import { IoIosHelpCircle } from 'react-icons/io'; +import { IoIosHelpCircle, IoIosSettings } from 'react-icons/io'; import type { SweetAlertIcon } from 'sweetalert2'; import ExportButton from './ExportButton'; @@ -64,6 +64,7 @@ function ExportConfirm({ setMergedOutFileName, smartCutBitrate, setSmartCutBitrate, + toggleSettings, } : { areWeCutting: boolean, selectedSegments: InverseCutSegment[], @@ -89,6 +90,7 @@ function ExportConfirm({ setMergedOutFileName: (a: string) => void, smartCutBitrate: number | undefined, setSmartCutBitrate: Dispatch>, + toggleSettings: () => void, }) { const { t } = useTranslation(); @@ -151,6 +153,7 @@ function ExportConfirm({ const onAvoidNegativeTsHelpPress = useCallback(() => { // https://ffmpeg.org/ffmpeg-all.html#Format-Options + // https://github.com/mifi/lossless-cut/issues/1206 const texts = { make_non_negative: i18n.t('Shift timestamps to make them non-negative. Also note that this affects only leading negative timestamps, and not non-monotonic negative timestamps.'), make_zero: i18n.t('Shift timestamps so that the first timestamp is 0. (LosslessCut default)'), @@ -309,6 +312,61 @@ function ExportConfirm({ + + {areWeCutting && ( + + + + + + )} + + {isMov && ( + <> + + + + + + + + + + + + + )} + {willMerge && ( <> @@ -403,60 +461,6 @@ function ExportConfirm({ )} - {areWeCutting && ( - - - - - - )} - - {isMov && ( - <> - - - - - - - - - - - - - )} - {!needSmartCut && (() => { const avoidNegativeTsWarn = (() => { if (willMerge) { @@ -474,7 +478,7 @@ function ExportConfirm({ return ( + + + + +
+ {t('Shift all start times')} + + + + +
+ {t('Enable MOV Faststart?')} + + + {isIpod && !movFastStart &&
{t('For the ipod format, it is recommended to activate this option')}
} +
+ {isIpod && !movFastStart ? ( + + ) : ( + + )} +
+ {t('Preserve all MP4/MOV metadata?')} + {isIpod && preserveMovData &&
{t('For the ipod format, it is recommended to deactivate this option')}
} +
+ + + {isIpod && preserveMovData ? ( + + ) : ( + + )} +
- {t('Shift all start times')} - - - - -
- {t('Enable MOV Faststart?')} - - - {isIpod && !movFastStart &&
{t('For the ipod format, it is recommended to activate this option')}
} -
- {isIpod && !movFastStart ? ( - - ) : ( - - )} -
- {t('Preserve all MP4/MOV metadata?')} - {isIpod && preserveMovData &&
{t('For the ipod format, it is recommended to deactivate this option')}
} -
- - - {isIpod && preserveMovData ? ( - - ) : ( - - )} -
- {`"${'avoid_negative_ts'}"`} + "ffmpeg" avoid_negative_ts {avoidNegativeTsWarn != null &&
{avoidNegativeTsWarn}
}
@@ -507,6 +511,16 @@ function ExportConfirm({
+ {t('More settings')} + + + +
diff --git a/src/renderer/src/components/Settings.tsx b/src/renderer/src/components/Settings.tsx index 5dba3f54..eac0c2f9 100644 --- a/src/renderer/src/components/Settings.tsx +++ b/src/renderer/src/components/Settings.tsx @@ -103,13 +103,6 @@ function Settings({ - - {t('Show advanced settings')} - - - - - App language @@ -120,6 +113,30 @@ function Settings({ + + + {t('Show advanced settings')} +
+ {!showAdvanced && t('Advanced settings are currently not visible.')} +
+
+ + + +
+ + + + {t('Show export options screen before exporting?')} +
+ {t('This gives you an overview of the export and allows you to customise more parameters before exporting.')} +
+
+ + + +
+ {showAdvanced && ( @@ -184,12 +201,15 @@ function Settings({ {t('Choose cutting mode: Remove or keep selected segments from video when exporting?')}
- {t('Keep')}: {t('The video inside segments will be kept, while the video outside will be discarded.')}
- {t('Remove')}: {t('The video inside segments will be discarded, while the video surrounding them will be kept.')} + {invertCutSegments ? ( + <>{t('Remove')}: {t('The video inside segments will be discarded, while the video surrounding them will be kept.')} + ) : ( + <>{t('Keep')}: {t('The video inside segments will be kept, while the video outside will be discarded.')} + )}
- @@ -203,10 +223,10 @@ function Settings({
+
{customOutDir}
-
{customOutDir}
{customOutDir && ( - -
+ {showAdvanced && ( + + + {t('Snapshot capture method')} +
{t('FFmpeg capture method might sometimes capture more correct colors, but the captured snapshot might be off by one or more frames, relative to the preview.')}
+
+ + + +
+ )} {t('Snapshot capture quality')} @@ -319,14 +341,16 @@ function Settings({ - - {t('File names of extracted video frames')} - - - - + {showAdvanced && ( + + {t('File names of extracted video frames')} + + + + + )}
@@ -391,6 +415,7 @@ function Settings({ +
{showAdvanced && ( @@ -421,6 +446,13 @@ function Settings({ )} + + {t('Prefer strong colors')} + + + + + {t('In timecode show')} @@ -430,22 +462,9 @@ function Settings({ - - {t('Prefer strong colors')} - - - -
- - {t('Show export options screen before exporting?')} - - - - - {t('Show notifications')}