101 lines
3.8 KiB
Java
101 lines
3.8 KiB
Java
package ctbrec.ui.settings;
|
|
|
|
import ctbrec.Config;
|
|
import ctbrec.Recording;
|
|
import ctbrec.StringUtil;
|
|
import ctbrec.UnknownModel;
|
|
import ctbrec.recorder.Recorder;
|
|
import ctbrec.sites.chaturbate.Chaturbate;
|
|
import ctbrec.ui.CamrecApplication;
|
|
import ctbrec.ui.controls.Dialogs;
|
|
import ctbrec.variableexpansion.ConfigVariableExpander;
|
|
import ctbrec.variableexpansion.ModelVariableExpander;
|
|
import ctbrec.variableexpansion.RecordingVariableExpander;
|
|
import ctbrec.variableexpansion.functions.AntlrSyntacErrorAdapter;
|
|
import javafx.scene.Scene;
|
|
import javafx.scene.control.Label;
|
|
import javafx.scene.control.TextField;
|
|
import javafx.scene.layout.GridPane;
|
|
import javafx.scene.layout.Priority;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.antlr.v4.runtime.RecognitionException;
|
|
import org.antlr.v4.runtime.Recognizer;
|
|
|
|
import java.nio.file.Paths;
|
|
import java.time.Instant;
|
|
|
|
@Slf4j
|
|
public class VariablePlayGroundDialogFactory {
|
|
|
|
private GridPane pane;
|
|
|
|
public void openDialog(Scene parent, Config config, Recorder recorder) {
|
|
if (pane == null) {
|
|
initGui(config, recorder);
|
|
}
|
|
|
|
Dialogs.showCustomInput(parent, "Playground", pane, (obs, oldV, newV) -> {
|
|
});
|
|
}
|
|
|
|
private void initGui(Config config, Recorder recorder) {
|
|
Chaturbate chaturbate = new Chaturbate();
|
|
UnknownModel unknownModel = new UnknownModel();
|
|
unknownModel.setName("Pussy_Galore");
|
|
unknownModel.setDisplayName("Pussy Galore");
|
|
unknownModel.setSite(chaturbate);
|
|
unknownModel.setUrl("http://camsite.example/pussy_galore");
|
|
Recording recording = new Recording();
|
|
recording.setAbsoluteFile(Paths.get("ctbrec", "recs", "pussy_galore", "2023-02-26_14-05-56").toFile());
|
|
recording.setStartDate(Instant.now());
|
|
recording.setStatus(Recording.State.POST_PROCESSING);
|
|
recording.setNote("notes about the recording");
|
|
recording.setModel(unknownModel);
|
|
|
|
pane = new GridPane();
|
|
Label result = new Label();
|
|
Label error = new Label();
|
|
|
|
pane.add(new Label("Expression"), 0, 0);
|
|
TextField input = new TextField();
|
|
input.setMinWidth(600);
|
|
pane.add(input, 1, 0);
|
|
GridPane.setHgrow(input, Priority.ALWAYS);
|
|
|
|
pane.add(error, 0, 1);
|
|
GridPane.setColumnSpan(error, 2);
|
|
|
|
pane.add(result, 0, 2);
|
|
GridPane.setColumnSpan(result, 2);
|
|
|
|
pane.setHgap(5);
|
|
pane.vgapProperty().bind(pane.hgapProperty());
|
|
|
|
AntlrSyntacErrorAdapter errorHandler = new AntlrSyntacErrorAdapter() {
|
|
@Override
|
|
public void syntaxError(Recognizer<?, ?> recognizer, Object o, int line, int pos, String s, RecognitionException e) {
|
|
error.setText(String.format("Syntax error at %d:%d %s", line, pos, s));
|
|
}
|
|
};
|
|
|
|
ModelVariableExpander modelVariableExpander = new ModelVariableExpander(unknownModel, CamrecApplication.modelNotesService, recorder, errorHandler);
|
|
RecordingVariableExpander recordingVariableExpander = new RecordingVariableExpander(recording, errorHandler);
|
|
ConfigVariableExpander configVariableExpander = new ConfigVariableExpander(config, errorHandler);
|
|
|
|
input.setOnKeyTyped(evt -> {
|
|
try {
|
|
String r = input.getText();
|
|
modelVariableExpander.getPlaceholderValueSuppliers().putAll(recordingVariableExpander.getPlaceholderValueSuppliers());
|
|
modelVariableExpander.getPlaceholderValueSuppliers().putAll(configVariableExpander.getPlaceholderValueSuppliers());
|
|
r = modelVariableExpander.expand(r);
|
|
result.setText(r);
|
|
if (StringUtil.isNotBlank(r)) {
|
|
error.setText("");
|
|
}
|
|
} catch (Exception e) {
|
|
log.error("Error", e);
|
|
}
|
|
});
|
|
}
|
|
}
|