Adds context menu for subtitles table

This commit is contained in:
Guillaume Tâche
2024-09-26 21:41:02 +02:00
parent c59619da2d
commit 0a2f9e0c31
9 changed files with 130 additions and 197 deletions

200
.idea/workspace.xml generated
View File

@@ -8,120 +8,15 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="ff40425e-42c7-4b0e-a76a-6e50cecddb1a" name="Changes" comment=""> <list default="true" id="ff40425e-42c7-4b0e-a76a-6e50cecddb1a" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/.idea/csv-editor.xml" afterDir="false" /> <change afterPath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/client/AbstractClient.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/ExportOptions.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/ImportOptions.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/FormatException.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/FormatOptions.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/ParseOptions.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/ExtractOptions.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/api/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverterProvider.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/impl/FormatOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/impl/ParseOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/impl/ExtractOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/impl/ExportOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/impl/ImportOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/impl/TestFormatOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/impl/TestParseOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/impl/TestExtractOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/impl/TestExportOptionsImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/impl/TestImportOptionsImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/codeStyles/Project.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/codeStyles/codeStyleConfig.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/scala_compiler.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/sonarlint.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/File.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/File.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/Language.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/Language.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/VideoConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/VideoConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/archive/Archiver.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/archive/Archiver.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/process/ProcessListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/process/ProcessListener.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/setup/SetupManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/setup/SetupManager.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/SubtitleImporterExporter.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/SubtitleImporterExporter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/SubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/SubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/SubtitleConverterProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/SubtitleConverterProvider.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/ExtractionModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/ExtractionModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/SubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/SubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitleImporterExporter.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitleImporterExporter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/api/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/TestSubtitleExtractor.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/cli/src/main/java/com/github/gtache/autosubtitle/cli/Cli.java" beforeDir="false" afterPath="$PROJECT_DIR$/cli/src/main/java/com/github/gtache/autosubtitle/cli/Cli.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoLoader.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoLoader.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/client/RemoteSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/client/RemoteSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/translation/client/RemoteTranslator.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/src/main/java/com/github/gtache/autosubtitle/translation/client/RemoteTranslator.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/impl/AbstractSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/impl/AbstractSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/conda/src/main/java/com/github/gtache/autosubtitle/setup/conda/CondaSetupManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/conda/src/main/java/com/github/gtache/autosubtitle/setup/conda/CondaSetupManager.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/setup/ffmpeg/FFmpegSetupManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/setup/ffmpeg/FFmpegSetupManager.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/conda/src/test/java/com/github/gtache/autosubtitle/setup/conda/TestCondaSetupManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/conda/src/test/java/com/github/gtache/autosubtitle/setup/conda/TestCondaSetupManager.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/gui/core/src/main/resources/com/github/gtache/autosubtitle/gui/impl/ParametersBundle_fr.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/resources/com/github/gtache/autosubtitle/gui/impl/ParametersBundle_fr.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/archive/impl/ZipDecompresser.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/archive/impl/ZipArchiver.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/gui/core/src/main/resources/com/github/gtache/autosubtitle/gui/impl/SubtitlesBundle.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/resources/com/github/gtache/autosubtitle/gui/impl/SubtitlesBundle.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/modules/archive/impl/ArchiveModule.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/modules/archive/impl/ArchiveModule.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/gui/core/src/main/resources/com/github/gtache/autosubtitle/gui/impl/SubtitlesBundle_fr.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/resources/com/github/gtache/autosubtitle/gui/impl/SubtitlesBundle_fr.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/modules/subtitle/impl/SubtitleModule.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/modules/subtitle/impl/SubtitleModule.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/impl/ASSSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/impl/ASSSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/impl/SRTSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/impl/SRTSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/impl/SubtitleCollectionImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/impl/SubtitleCollectionImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/impl/SubtitleImporterExporterImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/main/java/com/github/gtache/autosubtitle/subtitle/impl/SubtitleImporterExporterImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/archive/impl/TestZipDecompresser.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/archive/impl/TestZipArchiver.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/impl/TestArchitecture.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/impl/TestArchitecture.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/impl/TestASSSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/impl/TestASSSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/impl/TestSRTSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/impl/TestSRTSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/impl/TestAbstractSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/impl/TestAbstractSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/impl/TestSubtitleImporterExporterImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/test/java/com/github/gtache/autosubtitle/subtitle/impl/TestSubtitleImporterExporterImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/archive/ffmpeg/TarArchiver.java" beforeDir="false" afterPath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/archive/ffmpeg/TarArchiver.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/archive/ffmpeg/XZArchiver.java" beforeDir="false" afterPath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/archive/ffmpeg/XZArchiver.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/ffmpeg/FFmpegVideoConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/ffmpeg/src/main/java/com/github/gtache/autosubtitle/ffmpeg/FFmpegVideoConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ffmpeg/src/main/java/module-info.java" beforeDir="false" afterPath="$PROJECT_DIR$/ffmpeg/src/main/java/module-info.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ffmpeg/src/test/java/com/github/gtache/autosubtitle/ffmpeg/TestFFmpegVideoConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/ffmpeg/src/test/java/com/github/gtache/autosubtitle/ffmpeg/TestFFmpegVideoConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ffmpeg/src/test/java/com/github/gtache/autosubtitle/setup/ffmpeg/TestFFmpegSetupManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/ffmpeg/src/test/java/com/github/gtache/autosubtitle/setup/ffmpeg/TestFFmpegSetupManager.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/api/src/main/java/com/github/gtache/autosubtitle/gui/parameters/ParametersModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/api/src/main/java/com/github/gtache/autosubtitle/gui/parameters/ParametersModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/api/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/SubtitlesModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/api/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/SubtitlesModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/api/src/main/java/com/github/gtache/autosubtitle/gui/work/WorkModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/api/src/main/java/com/github/gtache/autosubtitle/gui/work/WorkModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/CombinedResourceBundle.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/CombinedResourceBundle.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/MainBundleProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/MainBundleProvider.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/ParametersBundleProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/ParametersBundleProvider.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/SetupBundleProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/SetupBundleProvider.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/SubtitlesBundleProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/SubtitlesBundleProvider.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/WorkBundleProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/gui/impl/spi/WorkBundleProvider.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/modules/gui/impl/GuiCoreModule.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/core/src/main/java/com/github/gtache/autosubtitle/modules/gui/impl/GuiCoreModule.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/parameters/fx/FXParametersController.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/parameters/fx/FXParametersController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/parameters/fx/FXParametersModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/parameters/fx/FXParametersModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesBinder.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesBinder.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesController.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/subtitles/fx/FXSubtitlesModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/work/fx/FXWorkBinder.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/work/fx/FXWorkBinder.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/work/fx/FXWorkController.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/work/fx/FXWorkController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/work/fx/FXWorkModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/com/github/gtache/autosubtitle/gui/work/fx/FXWorkModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/main/java/module-info.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/main/java/module-info.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/parameters/fx/TestFXParametersModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/parameters/fx/TestFXParametersModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/subtitles/fx/TestFXSubtitlesBinder.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/subtitles/fx/TestFXSubtitlesBinder.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/subtitles/fx/TestFXSubtitlesModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/subtitles/fx/TestFXSubtitlesModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/work/fx/TestFXWorkBinder.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/work/fx/TestFXWorkBinder.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/work/fx/TestFXWorkModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/gui/work/fx/TestFXWorkModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/subtitle/gui/fx/TestObservableSubtitleCollectionImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/subtitle/gui/fx/TestObservableSubtitleCollectionImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/subtitle/gui/fx/TestObservableSubtitleImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/fx/src/test/java/com/github/gtache/autosubtitle/subtitle/gui/fx/TestObservableSubtitleImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/run/src/main/java/com/github/gtache/autosubtitle/gui/run/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/run/src/main/java/com/github/gtache/autosubtitle/gui/run/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gui/run/src/main/java/com/github/gtache/autosubtitle/modules/gui/run/RunComponent.java" beforeDir="false" afterPath="$PROJECT_DIR$/gui/run/src/main/java/com/github/gtache/autosubtitle/modules/gui/run/RunComponent.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/base/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/base/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/base/src/main/java/com/github/gtache/autosubtitle/modules/subtitle/parser/json/whisper/base/WhisperJsonModule.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/base/src/main/java/com/github/gtache/autosubtitle/modules/subtitle/parser/json/whisper/base/WhisperJsonModule.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/base/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/whisper/base/WhisperSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/base/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/whisper/base/WhisperSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/base/src/main/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisper/base/JSONSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/base/src/main/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisper/base/JSONSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/base/src/main/java/module-info.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/base/src/main/java/module-info.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/common/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/whisper/AbstractWhisperSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/common/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/whisper/AbstractWhisperSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/common/src/main/java/module-info.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/common/src/main/java/module-info.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/common/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/whisper/TestAbstractWhisperSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/common/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/whisper/TestAbstractWhisperSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/modules/subtitle/parser/json/whisperx/WhisperXJsonModule.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/modules/subtitle/parser/json/whisperx/WhisperXJsonModule.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/whisperx/WhisperXSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/whisperx/WhisperXSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisperx/JSONSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisperx/JSONSubtitleConverter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisperx/JSONSubtitles.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/main/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisperx/JSONSubtitles.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/main/java/module-info.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/main/java/module-info.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/test/java/com/github/gtache/autosubtitle/modules/subtitle/parser/json/whisperx/TestWhisperXJsonModule.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/test/java/com/github/gtache/autosubtitle/modules/subtitle/parser/json/whisperx/TestWhisperXJsonModule.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/whisperx/TestWhisperXSubtitleExtractor.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/whisperx/TestWhisperXSubtitleExtractor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/whisper/whisperx/src/test/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisperx/TestJSONSubtitleConverter.java" beforeDir="false" afterPath="$PROJECT_DIR$/whisper/whisperx/src/test/java/com/github/gtache/autosubtitle/subtitle/parser/json/whisperx/TestJSONSubtitleConverter.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -184,47 +79,35 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"><![CDATA[{ <component name="PropertiesComponent">{
"keyToString": { &quot;keyToString&quot;: {
"Application.Main.executor": "Run", &quot;Application.Main.executor&quot;: &quot;Run&quot;,
"JUnit.TestASSSubtitleConverter.executor": "Run", &quot;JUnit.TestASSSubtitleConverter.executor&quot;: &quot;Run&quot;,
"JUnit.TestAbstractSetupManager.executor": "Run", &quot;JUnit.TestAbstractSetupManager.executor&quot;: &quot;Run&quot;,
"JUnit.TestFFmpegVideoConverter.executor": "Run", &quot;JUnit.TestFFmpegVideoConverter.executor&quot;: &quot;Run&quot;,
"JUnit.TestFXSubtitlesBinder.executor": "Run", &quot;JUnit.TestFXSubtitlesBinder.executor&quot;: &quot;Run&quot;,
"Maven.autosubtitle [clean,package,-DskipTests].executor": "Run", &quot;Maven.autosubtitle [clean,package,-DskipTests].executor&quot;: &quot;Run&quot;,
"Maven.autosubtitle [clean,package].executor": "Run", &quot;Maven.autosubtitle [clean,package].executor&quot;: &quot;Run&quot;,
"Maven.autosubtitle [clean].executor": "Run", &quot;Maven.autosubtitle [clean].executor&quot;: &quot;Run&quot;,
"RunOnceActivity.ShowReadmeOnStart": "true", &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
"SHARE_PROJECT_CONFIGURATION_FILES": "true", &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
"com.codeium.enabled": "true", &quot;com.codeium.enabled&quot;: &quot;true&quot;,
"git-widget-placeholder": "master", &quot;git-widget-placeholder&quot;: &quot;master&quot;,
"ignore.virus.scanning.warn.message": "true", &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
"kotlin-language-version-configured": "true", &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
"node.js.detected.package.eslint": "true", &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
"node.js.detected.package.tslint": "true", &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
"node.js.selected.package.eslint": "(autodetect)", &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
"node.js.selected.package.tslint": "(autodetect)", &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
"nodejs_package_manager_path": "npm", &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
"project.structure.last.edited": "Modules", &quot;project.structure.last.edited&quot;: &quot;Modules&quot;,
"project.structure.proportion": "0.0", &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
"project.structure.side.proportion": "0.0", &quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
"run.code.analysis.last.selected.profile": "aDefault", &quot;run.code.analysis.last.selected.profile&quot;: &quot;aDefault&quot;,
"settings.editor.selected.configurable": "actions.on.save", &quot;settings.editor.selected.configurable&quot;: &quot;actions.on.save&quot;,
"vue.rearranger.settings.migration": "true" &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
} }
}]]></component> }</component>
<component name="QodanaHighlightedReportService">
<option name="localRunNotPublishedPersistedInfo">
<LocalReportPersistedInfo>
<option name="path" value="C:\Temp\UserTemp\qodana_output\qodana.sarif.json" />
<option name="reportGuid" value="6c32d48e-3af1-4a39-9921-31ac1f556472" />
<option name="reportName" value="auto-subtitle/qodana/2024-09-22" />
</LocalReportPersistedInfo>
</option>
</component>
<component name="QodanaIsSelectedPersistenceService">
<option name="selectedOrLoading" value="true" />
</component>
<component name="QodanaReportsService"> <component name="QodanaReportsService">
<option name="descriptions"> <option name="descriptions">
<ReportDescription localRun="true" path="C:\Temp\UserTemp\qodana_output\qodana.sarif.json" reportGuid="6c32d48e-3af1-4a39-9921-31ac1f556472" reportId="auto-subtitle/qodana/2024-09-22" /> <ReportDescription localRun="true" path="C:\Temp\UserTemp\qodana_output\qodana.sarif.json" reportGuid="6c32d48e-3af1-4a39-9921-31ac1f556472" reportId="auto-subtitle/qodana/2024-09-22" />
@@ -242,11 +125,11 @@
<component name="RunAnythingCache"> <component name="RunAnythingCache">
<option name="myCommands"> <option name="myCommands">
<command value="mvn clean" /> <command value="mvn clean" />
<command value="mvn clean package" />
<command value="mvn clean package -DskipTests" /> <command value="mvn clean package -DskipTests" />
<command value="mvn clean package" />
</option> </option>
</component> </component>
<component name="RunManager" selected="JUnit.TestFXSubtitlesBinder"> <component name="RunManager" selected="Application.Main">
<configuration default="true" type="Applet"> <configuration default="true" type="Applet">
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" /> <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<method v="2"> <method v="2">
@@ -427,11 +310,11 @@
</configuration> </configuration>
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="Application.Main" />
<item itemvalue="JUnit.TestFXSubtitlesBinder" /> <item itemvalue="JUnit.TestFXSubtitlesBinder" />
<item itemvalue="JUnit.TestFFmpegVideoConverter" /> <item itemvalue="JUnit.TestFFmpegVideoConverter" />
<item itemvalue="JUnit.TestASSSubtitleConverter" />
<item itemvalue="JUnit.TestAbstractSetupManager" /> <item itemvalue="JUnit.TestAbstractSetupManager" />
<item itemvalue="Application.Main" /> <item itemvalue="JUnit.TestASSSubtitleConverter" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@@ -452,7 +335,10 @@
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1726946764733</updated> <updated>1726946764733</updated>
<workItem from="1726946765439" duration="148000" /> <workItem from="1726946765439" duration="148000" />
<workItem from="1727010656600" duration="16634000" /> <workItem from="1727010656600" duration="16805000" />
<workItem from="1727202729910" duration="57000" />
<workItem from="1727202805574" duration="1096000" />
<workItem from="1727206350052" duration="1842000" />
</task> </task>
<servers /> <servers />
</component> </component>

View File

@@ -0,0 +1,4 @@
package com.github.gtache.autosubtitle.client;
public abstract class AbstractClient {
}

View File

@@ -6,19 +6,20 @@ import com.github.gtache.autosubtitle.subtitle.SubtitleCollection;
import com.github.gtache.autosubtitle.subtitle.extractor.ExtractOptions; import com.github.gtache.autosubtitle.subtitle.extractor.ExtractOptions;
import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor; import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor;
import com.github.gtache.autosubtitle.subtitle.extractor.impl.AbstractSubtitleExtractor; import com.github.gtache.autosubtitle.subtitle.extractor.impl.AbstractSubtitleExtractor;
import com.github.gtache.autosubtitle.subtitle.impl.SubtitleImpl;
/** /**
* {@link SubtitleExtractor} using a remote API * {@link SubtitleExtractor} using a remote API
*/ */
public class RemoteSubtitleExtractor extends AbstractSubtitleExtractor { public class RemoteSubtitleExtractor extends AbstractSubtitleExtractor<SubtitleImpl> {
@Override @Override
public SubtitleCollection extract(final Video video, final ExtractOptions options) { public SubtitleCollection<SubtitleImpl> extract(final Video video, final ExtractOptions options) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override @Override
public SubtitleCollection extract(final Audio audio, final ExtractOptions options) { public SubtitleCollection<SubtitleImpl> extract(final Audio audio, final ExtractOptions options) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
} }

View File

@@ -1,5 +1,6 @@
package com.github.gtache.autosubtitle.subtitle.extractor.impl; package com.github.gtache.autosubtitle.subtitle.extractor.impl;
import com.github.gtache.autosubtitle.subtitle.Subtitle;
import com.github.gtache.autosubtitle.subtitle.extractor.ExtractEvent; import com.github.gtache.autosubtitle.subtitle.extractor.ExtractEvent;
import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor; import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor;
import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractorListener; import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractorListener;
@@ -10,7 +11,7 @@ import java.util.Set;
/** /**
* Base implementation of {@link SubtitleExtractor} * Base implementation of {@link SubtitleExtractor}
*/ */
public abstract class AbstractSubtitleExtractor implements SubtitleExtractor { public abstract class AbstractSubtitleExtractor<T extends Subtitle> implements SubtitleExtractor<T> {
private final Set<SubtitleExtractorListener> listeners; private final Set<SubtitleExtractorListener> listeners;

View File

@@ -7,8 +7,6 @@ import com.github.gtache.autosubtitle.setup.SetupException;
import com.github.gtache.autosubtitle.setup.SetupManager; import com.github.gtache.autosubtitle.setup.SetupManager;
import com.github.gtache.autosubtitle.setup.SetupStatus; import com.github.gtache.autosubtitle.setup.SetupStatus;
import com.github.gtache.autosubtitle.setup.impl.AbstractSetupManager; import com.github.gtache.autosubtitle.setup.impl.AbstractSetupManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.IOException; import java.io.IOException;
@@ -27,7 +25,6 @@ import static java.util.Objects.requireNonNull;
*/ */
//TODO add gpg/signature check //TODO add gpg/signature check
public class FFmpegSetupManager extends AbstractSetupManager { public class FFmpegSetupManager extends AbstractSetupManager {
private static final Logger logger = LogManager.getLogger(FFmpegSetupManager.class);
private final FFmpegSetupConfiguration configuration; private final FFmpegSetupConfiguration configuration;
private final ArchiverProvider archiverProvider; private final ArchiverProvider archiverProvider;

View File

@@ -4,4 +4,5 @@ parameters.extraction.model.label=Mod\u00E8le utilis\u00E9 pour l'extraction des
parameters.subtitles.font.family=Police par d\u00E9faut pour les sous-titres parameters.subtitles.font.family=Police par d\u00E9faut pour les sous-titres
parameters.subtitles.font.size=Taille de la police par d\u00E9faut pour les sous-titres parameters.subtitles.font.size=Taille de la police par d\u00E9faut pour les sous-titres
parameters.subtitles.max.length.label=Taille maximale d'une ligne de sous-titres (caract\u00E8res) parameters.subtitles.max.length.label=Taille maximale d'une ligne de sous-titres (caract\u00E8res)
parameters.subtitles.max.lines.label=Nombre de lignes maximum pour les sous-titres
parameters.subtitles.output.format=Format de sortie pour les sous-titres parameters.subtitles.output.format=Format de sortie pour les sous-titres

View File

@@ -7,6 +7,9 @@ subtitles.export.error.title=Error exporting
subtitles.language.label=Video language subtitles.language.label=Video language
subtitles.load.error.label=Error loading subtitles : {0} subtitles.load.error.label=Error loading subtitles : {0}
subtitles.load.error.title=Error loading subtitles.load.error.title=Error loading
subtitles.menu.add.label=Add
subtitles.menu.delete.label=Delete
subtitles.menu.duplicate.label=Duplicate
subtitles.save.error.label=Error saving subtitles : {0} subtitles.save.error.label=Error saving subtitles : {0}
subtitles.save.error.title=Error saving subtitles.save.error.title=Error saving
subtitles.table.column.from.label=From subtitles.table.column.from.label=From

View File

@@ -7,6 +7,9 @@ subtitles.export.error.title=Erreur d'export
subtitles.language.label=Langage de la vid\u00E9o subtitles.language.label=Langage de la vid\u00E9o
subtitles.load.error.label=Erreur de chargement des sous-titres : {0} subtitles.load.error.label=Erreur de chargement des sous-titres : {0}
subtitles.load.error.title=Erreur de chargement subtitles.load.error.title=Erreur de chargement
subtitles.menu.add.label=Ajouter
subtitles.menu.delete.label=Supprimer
subtitles.menu.duplicate.label=Dupliquer
subtitles.save.error.label=Erreur de sauvegarde des sous-titres : {0} subtitles.save.error.label=Erreur de sauvegarde des sous-titres : {0}
subtitles.save.error.title=Erreur lors de la sauvegarde subtitles.save.error.title=Erreur lors de la sauvegarde
subtitles.table.column.from.label=De subtitles.table.column.from.label=De

View File

@@ -19,12 +19,15 @@ import javafx.collections.MapChangeListener;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.ComboBox; import javafx.scene.control.ComboBox;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SelectionMode; import javafx.scene.control.SelectionMode;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TabPane; import javafx.scene.control.TabPane;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.input.ContextMenuEvent;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.stage.FileChooser; import javafx.stage.FileChooser;
import javafx.stage.Window; import javafx.stage.Window;
@@ -131,38 +134,44 @@ public class FXSubtitlesController extends AbstractFXController implements Subti
} }
}); });
translationsCombobox.setOnAction(e -> { translationsCombobox.setOnAction(e -> translateToNewLanguage());
final var value = translationsCombobox.getValue();
if (value != null && !model.collections().containsKey(value)) {
model.setTranslating(true);
CompletableFuture.supplyAsync(() -> {
final var mainCollection = model.collections().get(model.videoLanguage());
try {
if (mainCollection == null) {
return translator.translate(model.selectedCollection(), value);
} else {
return translator.translate(mainCollection, value);
}
} catch (final TranslationException ex) {
throw new CompletionException(ex);
}
}).whenCompleteAsync((r, t) -> {
if (t == null) {
loadCollection(r);
model.setSelectedCollection(model.collections().get(value));
} else {
logger.error("Error while translating to {}", value, t);
final var newCollection = new ObservableSubtitleCollectionImpl();
loadCollection(newCollection);
model.setSelectedCollection(newCollection);
}
model.setTranslating(false);
}, Platform::runLater);
}
});
binder.createBindings(); binder.createBindings();
} }
private void translateToNewLanguage() {
final var value = translationsCombobox.getValue();
if (value != null && !model.collections().containsKey(value)) {
model.setTranslating(true);
CompletableFuture.supplyAsync(() -> {
final var mainCollection = model.collections().get(model.videoLanguage());
try {
if (mainCollection == null) {
if (model.selectedCollection() == null) {
return null;
} else {
return translator.translate(model.selectedCollection(), value);
}
} else {
return translator.translate(mainCollection, value);
}
} catch (final TranslationException ex) {
throw new CompletionException(ex);
}
}).whenCompleteAsync((r, t) -> {
if (r == null) {
logger.error("Error while translating to {}", value, t);
final var newCollection = new ObservableSubtitleCollectionImpl();
loadCollection(newCollection);
model.setSelectedCollection(newCollection);
} else {
loadCollection(r);
model.setSelectedCollection(model.collections().get(value));
}
model.setTranslating(false);
}, Platform::runLater);
}
}
private void bindTable() { private void bindTable() {
subtitlesTable.setItems(model.selectedSubtitles()); subtitlesTable.setItems(model.selectedSubtitles());
subtitlesTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); subtitlesTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
@@ -182,9 +191,7 @@ public class FXSubtitlesController extends AbstractFXController implements Subti
e.consume(); e.consume();
} }
}); });
subtitlesTable.setOnContextMenuRequested(e -> { subtitlesTable.setOnContextMenuRequested(this::showContextMenu);
//TODO menu with copy, delete
});
startColumn.setCellFactory(TextFieldTableCell.forTableColumn(new TimeStringConverter(timeFormatter))); startColumn.setCellFactory(TextFieldTableCell.forTableColumn(new TimeStringConverter(timeFormatter)));
startColumn.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue() == null ? null : param.getValue().start())); startColumn.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue() == null ? null : param.getValue().start()));
startColumn.setOnEditCommit(e -> { startColumn.setOnEditCommit(e -> {
@@ -214,6 +221,30 @@ public class FXSubtitlesController extends AbstractFXController implements Subti
} }
private void showContextMenu(final ContextMenuEvent e) {
if (model.selectedCollection() != null) {
final var deleteMenuItem = new MenuItem(resources.getString("subtitles.menu.delete.label"));
deleteMenuItem.setOnAction(ignored -> deleteSelectedSubtitles());
final var addMenuItem = new MenuItem(resources.getString("subtitles.menu.add.label"));
addMenuItem.setOnAction(ignored -> addNewSubtitle());
final var duplicateMenuItem = new MenuItem(resources.getString("subtitles.menu.duplicate.label"));
duplicateMenuItem.setOnAction(ignored -> duplicateSelectedSubtitles());
final var menu = new ContextMenu(addMenuItem);
if (!model.selectedSubtitles().isEmpty()) {
menu.getItems().addAll(duplicateMenuItem, deleteMenuItem);
}
menu.show(subtitlesTable, e.getScreenX(), e.getScreenY());
}
}
private void duplicateSelectedSubtitles() {
final var selected = model.selectedSubtitles();
if (!selected.isEmpty()) {
model.selectedCollection().observableSubtitles().addAll(selected.stream().map(ObservableSubtitleImpl::new).toList());
model.selectedCollection().observableSubtitles().sort(Comparator.comparingLong(ObservableSubtitleImpl::start));
}
}
private void manageTabs() { private void manageTabs() {
final var toRemove = new ArrayList<Tab>(); final var toRemove = new ArrayList<Tab>();
final var toAdd = new ArrayList<Tab>(); final var toAdd = new ArrayList<Tab>();
@@ -247,7 +278,13 @@ public class FXSubtitlesController extends AbstractFXController implements Subti
@FXML @FXML
private void addPressed() { private void addPressed() {
model.selectedCollection().subtitles().add(new ObservableSubtitleImpl(resources.getString("subtitles.add.prompt.label"))); addNewSubtitle();
}
private void addNewSubtitle() {
if (model.selectedCollection() != null) {
model.selectedCollection().subtitles().add(new ObservableSubtitleImpl(resources.getString("subtitles.add.prompt.label")));
}
} }
@FXML @FXML