Fixes FXSetupBridge, fixes reset subtitles, fixes work status for export hard

This commit is contained in:
Guillaume Tâche
2024-08-20 22:01:11 +02:00
parent 44c317f207
commit d14e32bfd0
4 changed files with 31 additions and 16 deletions

View File

@@ -273,6 +273,11 @@ public class FXSetupController extends AbstractFXController implements SetupCont
} finally { } finally {
manager.removeListener(this); manager.removeListener(this);
} }
}).handle((v, t) -> {
if (t != null) {
logger.error("Error", t);
}
return null;
}); });
} }

View File

@@ -311,7 +311,7 @@ public class FXSubtitlesController extends AbstractFXController implements Subti
private void loadCollection(final SubtitleCollection<?> collection) { private void loadCollection(final SubtitleCollection<?> collection) {
final var observableCollection = new ObservableSubtitleCollectionImpl(collection); final var observableCollection = new ObservableSubtitleCollectionImpl(collection);
model.originalCollections().put(observableCollection.language(), observableCollection); model.originalCollections().put(observableCollection.language(), new ObservableSubtitleCollectionImpl(observableCollection));
model.collections().put(observableCollection.language(), observableCollection); model.collections().put(observableCollection.language(), observableCollection);
} }

View File

@@ -202,6 +202,7 @@ public class FXWorkController extends AbstractFXController implements WorkContro
filePicker.setSelectedExtensionFilter(extensionFilter); filePicker.setSelectedExtensionFilter(extensionFilter);
final var file = filePicker.showSaveDialog(window()); final var file = filePicker.showSaveDialog(window());
if (file != null) { if (file != null) {
model.setStatus(WorkStatus.EXPORTING);
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
try { try {
videoConverter.addHardSubtitles(model.video(), model.collections().get(model.videoLanguageProperty().get()), file.toPath()); videoConverter.addHardSubtitles(model.video(), model.collections().get(model.videoLanguageProperty().get()), file.toPath());

View File

@@ -2,6 +2,7 @@ package com.github.gtache.autosubtitle.setup.gui.fx;
import com.github.gtache.autosubtitle.gui.fx.FXMainController; import com.github.gtache.autosubtitle.gui.fx.FXMainController;
import com.github.gtache.autosubtitle.setup.SetupUserBridge; import com.github.gtache.autosubtitle.setup.SetupUserBridge;
import javafx.application.Platform;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType; import javafx.scene.control.ButtonType;
import javafx.scene.control.ChoiceDialog; import javafx.scene.control.ChoiceDialog;
@@ -10,6 +11,7 @@ import javafx.scene.control.TextInputDialog;
import javax.inject.Inject; import javax.inject.Inject;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.CompletableFuture;
/** /**
* FX implementation of {@link SetupUserBridge} * FX implementation of {@link SetupUserBridge}
@@ -39,26 +41,33 @@ public class FXSetupUserBridge implements SetupUserBridge {
} }
private <T> T showChoiceDialog(final String title, final String message, final List<T> choices) { private <T> T showChoiceDialog(final String title, final String message, final List<T> choices) {
return CompletableFuture.supplyAsync(() -> {
final var dialog = new ChoiceDialog<>(choices.getFirst(), choices); final var dialog = new ChoiceDialog<>(choices.getFirst(), choices);
dialog.initOwner(controller.window()); dialog.initOwner(controller.window());
dialog.setHeaderText(message); dialog.setHeaderText(message);
dialog.setTitle(title); dialog.setTitle(title);
return dialog.showAndWait().orElse(null); return dialog.showAndWait().orElse(null);
}, Platform::runLater).join();
} }
private String showInputDialog(final String title, final String message) { private String showInputDialog(final String title, final String message) {
return CompletableFuture.supplyAsync(() -> {
final var dialog = new TextInputDialog(); final var dialog = new TextInputDialog();
dialog.initOwner(controller.window()); dialog.initOwner(controller.window());
dialog.setHeaderText(message); dialog.setHeaderText(message);
dialog.setTitle(title); dialog.setTitle(title);
return dialog.showAndWait().orElse(null); return dialog.showAndWait().orElse(null);
}, Platform::runLater).join();
} }
private boolean showConfirmationDialog(final String title, final String message) { private boolean showConfirmationDialog(final String title, final String message) {
return CompletableFuture.supplyAsync(() -> {
final var alert = new Alert(Alert.AlertType.CONFIRMATION, message, ButtonType.YES, ButtonType.NO); final var alert = new Alert(Alert.AlertType.CONFIRMATION, message, ButtonType.YES, ButtonType.NO);
alert.initOwner(controller.window()); alert.initOwner(controller.window());
alert.setHeaderText(null); alert.setHeaderText(null);
alert.setTitle(title); alert.setTitle(title);
return alert.showAndWait().map(bt -> bt == ButtonType.YES).orElse(false); return alert.showAndWait().map(bt -> bt == ButtonType.YES).orElse(false);
}, Platform::runLater).join();
} }
} }