@ -2014,7 +2014,14 @@ function App() {
} , [ alwaysConcatMultipleFiles , batchLoadPaths , setWorking , isFileOpened , batchFiles . length , userOpenSingleFile , checkFileOpened , loadEdlFile , enableAskForFileOpenAction , addStreamSourceFile , filePath ] ) ;
const openFilesDialog = useCallback ( async ( ) = > {
const { canceled , filePaths } = await showOpenDialog ( { properties : [ 'openFile' , 'openDirectory' , 'multiSelections' ] , defaultPath : lastOpenedPathRef.current ! , title : t ( 'Open file' ) } ) ;
// On Windows and Linux an open dialog can not be both a file selector and a directory selector, so if you set `properties` to `['openFile', 'openDirectory']` on these platforms, a directory selector will be shown. #1995
const { canceled , filePaths } = await showOpenDialog ( { properties : [ 'openFile' , 'multiSelections' ] , defaultPath : lastOpenedPathRef.current ! , title : t ( 'Open file' ) } ) ;
if ( canceled ) return ;
userOpenFiles ( filePaths ) ;
} , [ t , userOpenFiles ] ) ;
const openDirDialog = useCallback ( async ( ) = > {
const { canceled , filePaths } = await showOpenDialog ( { properties : [ 'openDirectory' , 'multiSelections' ] , defaultPath : lastOpenedPathRef.current ! , title : t ( 'Open folder' ) } ) ;
if ( canceled ) return ;
userOpenFiles ( filePaths ) ;
} , [ t , userOpenFiles ] ) ;
@ -2199,6 +2206,7 @@ function App() {
showStreamsSelector : handleShowStreamsSelectorClick ,
html5ify : ( ) = > userHtml5ifyCurrentFile ( { ignoreRememberedValue : true } ) ,
openFilesDialog ,
openDirDialog ,
toggleSettings ,
openSendReportDialog : ( ) = > { openSendReportDialogWithState ( ) ; } ,
detectBlackScenes : ( { keyup } ) = > {
@ -2219,7 +2227,7 @@ function App() {
} ;
return ret ;
} , [ addSegment , alignSegmentTimesToKeyframes , apparentCutSegments , askStartTimeOffset , batchFileJump , batchOpenSelectedFile , captureSnapshot , captureSnapshotAsCoverArt , changePlaybackRate , checkFileOpened , cleanupFilesDialog , clearSegments , closeBatch , closeFileWithConfirm , combineOverlappingSegments , combineSelectedSegments , concatBatch , convertFormatBatch , copySegmentsToClipboard , createFixedDurationSegments , createNumSegments , createRandomSegments , createSegmentsFromKeyframes , currentSegIndexSafe , cutSegments . length , cutSegmentsHistory , deselectAllSegments , detectBlackScenes , detectSceneChanges , detectSilentScenes , duplicateCurrentSegment , editCurrentSegmentTags , extractAllStreams , extractCurrentSegmentFramesAsImages , extractSelectedSegmentsFramesAsImages , fillSegmentsGaps , goToTimecode , handleShowStreamsSelectorClick , increaseRotation , invertAllSegments , invertSelectedSegments , jumpCutEnd , jumpCutStart , jumpSeg , jumpTimelineEnd , jumpTimelineStart , keyboardNormalSeekSpeed , keyboardSeekAccFactor , keyboardSeekSpeed2 , keyboardSeekSpeed3 , onExportPress , onLabelSegment , open FilesDialog, openSendReportDialogWithState , pause , play , removeCutSegment , removeSelectedSegments , reorderSegsByStartTime , seekClosestKeyframe , seekRel , seekRelPercent , selectAllSegments , selectOnlyCurrentSegment , setCurrentSegIndex , setCutEnd , setCutStart , setPlaybackVolume , shiftAllSegmentTimes , shortStep , showIncludeExternalStreamsDialog , shuffleSegments , splitCurrentSegment , timelineToggleComfortZoom , toggleCaptureFormat , toggleCurrentSegmentSelected , toggleFullscreenVideo , toggleKeyframeCut , toggleLastCommands , toggleLoopSelectedSegments , togglePlay , toggleSegmentsList , toggleSettings , toggleShowKeyframes , toggleShowThumbnails , toggleStreamsSelector , toggleStripAudio , toggleStripThumbnail , toggleWaveformMode , tryFixInvalidDuration , userHtml5ifyCurrentFile , zoomRel ] ) ;
} , [ addSegment , alignSegmentTimesToKeyframes , apparentCutSegments , askStartTimeOffset , batchFileJump , batchOpenSelectedFile , captureSnapshot , captureSnapshotAsCoverArt , changePlaybackRate , checkFileOpened , cleanupFilesDialog , clearSegments , closeBatch , closeFileWithConfirm , combineOverlappingSegments , combineSelectedSegments , concatBatch , convertFormatBatch , copySegmentsToClipboard , createFixedDurationSegments , createNumSegments , createRandomSegments , createSegmentsFromKeyframes , currentSegIndexSafe , cutSegments . length , cutSegmentsHistory , deselectAllSegments , detectBlackScenes , detectSceneChanges , detectSilentScenes , duplicateCurrentSegment , editCurrentSegmentTags , extractAllStreams , extractCurrentSegmentFramesAsImages , extractSelectedSegmentsFramesAsImages , fillSegmentsGaps , goToTimecode , handleShowStreamsSelectorClick , increaseRotation , invertAllSegments , invertSelectedSegments , jumpCutEnd , jumpCutStart , jumpSeg , jumpTimelineEnd , jumpTimelineStart , keyboardNormalSeekSpeed , keyboardSeekAccFactor , keyboardSeekSpeed2 , keyboardSeekSpeed3 , onExportPress , onLabelSegment , open DirDialog, open FilesDialog, openSendReportDialogWithState , pause , play , removeCutSegment , removeSelectedSegments , reorderSegsByStartTime , seekClosestKeyframe , seekRel , seekRelPercent , selectAllSegments , selectOnlyCurrentSegment , setCurrentSegIndex , setCutEnd , setCutStart , setPlaybackVolume , shiftAllSegmentTimes , shortStep , showIncludeExternalStreamsDialog , shuffleSegments , splitCurrentSegment , timelineToggleComfortZoom , toggleCaptureFormat , toggleCurrentSegmentSelected , toggleFullscreenVideo , toggleKeyframeCut , toggleLastCommands , toggleLoopSelectedSegments , togglePlay , toggleSegmentsList , toggleSettings , toggleShowKeyframes , toggleShowThumbnails , toggleStreamsSelector , toggleStripAudio , toggleStripThumbnail , toggleWaveformMode , tryFixInvalidDuration , userHtml5ifyCurrentFile , zoomRel ] ) ;
const getKeyboardAction = useCallback ( ( action : MainKeyboardAction ) = > mainActions [ action ] , [ mainActions ] ) ;