From e28b5130eb94be33de0ea7e47f4e0fe64dc55540 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Sun, 20 Feb 2022 20:44:42 +0800 Subject: [PATCH] add shortcuts for disable/enable segments #254 Add keyboard shortcut for "Include ONLY this segment in export", e.g. only currently selected segment, because some people often want to export only current segment and would like to not click a menu every time. --- src/App.jsx | 23 +++++++++++++++-------- src/components/KeyboardShortcuts.jsx | 16 ++++++++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 82d4cf8b..024bb8d1 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1076,10 +1076,13 @@ const App = memo(() => { // If user has selected none to export, it makes no sense, so export all instead const enabledSegments = enabledSegmentsRaw.length > 0 ? enabledSegmentsRaw : inverseOrNormalSegments; - const onExportSingleSegmentClick = useCallback((activeSeg) => setDisabledSegmentIds(Object.fromEntries(cutSegments.filter((s) => s.segId !== activeSeg.segId).map((s) => [s.segId, true]))), [cutSegments]); - const onExportSegmentEnabledToggle = useCallback((toggleSeg) => setDisabledSegmentIds((existing) => ({ ...existing, [toggleSeg.segId]: !existing[toggleSeg.segId] })), []); - const onExportSegmentDisableAll = useCallback(() => setDisabledSegmentIds(Object.fromEntries(cutSegments.map((s) => [s.segId, true]))), [cutSegments]); - const onExportSegmentEnableAll = useCallback(() => setDisabledSegmentIds({}), []); + const enableOnlySegment = useCallback((seg) => setDisabledSegmentIds(Object.fromEntries(cutSegments.filter((s) => s.segId !== seg.segId).map((s) => [s.segId, true]))), [cutSegments]); + const toggleSegmentEnabled = useCallback((seg) => setDisabledSegmentIds((existing) => ({ ...existing, [seg.segId]: !existing[seg.segId] })), []); + const disableAllSegments = useCallback(() => setDisabledSegmentIds(Object.fromEntries(cutSegments.map((s) => [s.segId, true]))), [cutSegments]); + const enableAllSegments = useCallback(() => setDisabledSegmentIds({}), []); + + const enableOnlyCurrentSegment = useCallback(() => enableOnlySegment(currentCutSeg), [currentCutSeg, enableOnlySegment]); + const toggleCurrentSegmentEnabled = useCallback(() => toggleSegmentEnabled(currentCutSeg), [currentCutSeg, toggleSegmentEnabled]); const filenamifyOrNot = useCallback((name) => (safeOutputFileName ? filenamify(name) : name).substr(0, maxLabelLength), [safeOutputFileName, maxLabelLength]); @@ -1715,6 +1718,10 @@ const App = memo(() => { toggleCaptureFormat, toggleStripAudio, setStartTimeOffset: askSetStartTimeOffset, + disableAllSegments, + enableAllSegments, + enableOnlyCurrentSegment, + toggleCurrentSegmentEnabled, }; function tryMainActions() { @@ -2310,10 +2317,10 @@ const App = memo(() => { splitCurrentSegment={splitCurrentSegment} enabledSegmentsRaw={enabledSegmentsRaw} enabledSegments={enabledSegments} - onExportSingleSegmentClick={onExportSingleSegmentClick} - onExportSegmentEnabledToggle={onExportSegmentEnabledToggle} - onExportSegmentDisableAll={onExportSegmentDisableAll} - onExportSegmentEnableAll={onExportSegmentEnableAll} + onExportSingleSegmentClick={enableOnlySegment} + onExportSegmentEnabledToggle={toggleSegmentEnabled} + onExportSegmentDisableAll={disableAllSegments} + onExportSegmentEnableAll={enableAllSegments} jumpSegStart={jumpSegStart} jumpSegEnd={jumpSegEnd} onViewSegmentTagsPress={onViewSegmentTagsPress} diff --git a/src/components/KeyboardShortcuts.jsx b/src/components/KeyboardShortcuts.jsx index 88d3f0d9..5f9fc001 100644 --- a/src/components/KeyboardShortcuts.jsx +++ b/src/components/KeyboardShortcuts.jsx @@ -285,6 +285,22 @@ const KeyboardShortcuts = memo(({ name: t('Show sidebar'), category: segmentsAndCutpointsCategory, }, + enableOnlyCurrentSegment: { + name: t('Include ONLY this segment in export'), + category: segmentsAndCutpointsCategory, + }, + disableAllSegments: { + name: t('Exclude all segments from export'), + category: segmentsAndCutpointsCategory, + }, + enableAllSegments: { + name: t('Include all segments in export'), + category: segmentsAndCutpointsCategory, + }, + toggleCurrentSegmentEnabled: { + name: t('Toggle inclusion of this segment in export'), + category: segmentsAndCutpointsCategory, + }, // streamsCategory toggleStreamsSelector: {