diff --git a/src/renderer.jsx b/src/renderer.jsx index 292a6b45..ef3a2966 100644 --- a/src/renderer.jsx +++ b/src/renderer.jsx @@ -336,6 +336,17 @@ const App = memo(() => { setCutSegments(cloned); }; + const updateCurrentSegOrder = (newOrder) => { + const segAtNewIndex = cutSegments[newOrder]; + const segAtOldIndex = cutSegments[currentSegIndexSafe]; + const newSegments = [...cutSegments]; + // Swap indexes: + newSegments[currentSegIndexSafe] = segAtNewIndex; + newSegments[newOrder] = segAtOldIndex; + setCutSegments(newSegments); + setCurrentSegIndex(newOrder); + }; + const formatTimecode = useCallback((sec) => formatDuration({ seconds: sec, fps: timecodeShowFrames ? detectedFps : undefined, }), [detectedFps, timecodeShowFrames]); @@ -553,6 +564,26 @@ const App = memo(() => { setCutSegments(cutSegmentsNew); }, [currentSegIndexSafe, cutSegments, setCutSegments]); + async function onReorderSegsPress() { + if (cutSegments.length < 2) return; + const { value } = await Swal.fire({ + title: 'Change the order for the current segment', + text: `Please enter a number from 1 to ${cutSegments.length}`, + input: 'text', + inputValue: currentSegIndexSafe + 1, + showCancelButton: true, + inputValidator: (v) => { + const parsed = parseInt(v, 10); + return Number.isNaN(parsed) || parsed > cutSegments.length || parsed < 1 ? 'Invalid number entered' : undefined; + }, + }); + + if (value) { + const newOrder = parseInt(value, 10); + updateCurrentSegOrder(newOrder - 1); + } + } + const jumpCutStart = () => seekAbs(currentApparentCutSeg.start); const jumpCutEnd = () => seekAbs(currentApparentCutSeg.end); @@ -1738,6 +1769,8 @@ const App = memo(() => {
+ {renderInvertCutButton()} + { - {renderInvertCutButton()} +
+ {currentSegIndexSafe + 1} +
+ + - -