Open config dir from Settings->Help

This commit is contained in:
Jafea7 2025-05-04 21:17:09 +10:00
parent 2830b1528a
commit 8a482b8fe9
1 changed files with 32 additions and 1 deletions

View File

@ -1,5 +1,7 @@
package ctbrec.ui.tabs; package ctbrec.ui.tabs;
import ctbrec.Config;
import ctbrec.OS;
import ctbrec.docs.DocServer; import ctbrec.docs.DocServer;
import ctbrec.ui.DesktopIntegration; import ctbrec.ui.DesktopIntegration;
import javafx.application.Platform; import javafx.application.Platform;
@ -27,14 +29,20 @@ public class HelpTab extends Tab {
Button openHelp = new Button("Open Help"); Button openHelp = new Button("Open Help");
Button openLog = new Button("Open Log File"); Button openLog = new Button("Open Log File");
Button openCfg = new Button("Open config dir");
openHelp.setPadding(new Insets(20)); openHelp.setPadding(new Insets(20));
openLog.setPadding(new Insets(20)); openLog.setPadding(new Insets(20));
Label logFilePathLabel = new Label("Log: " + new File("ctbrec.log").getAbsolutePath()); Label logFilePathLabel = new Label("Log: " + new File("ctbrec.log").getAbsolutePath());
openCfg.setPadding(new Insets(20));
Label logFilePathLabel = new Label("Log file: " + new File("ctbrec.log").getAbsolutePath());
File cfgDir = Config.getInstance().getConfigDir();
String path = (cfgDir != null) ? cfgDir.getAbsolutePath() : "Unknown";
Label configPathLabel = new Label("Config dir: " + path);
VBox vbox = new VBox(); VBox vbox = new VBox();
vbox.setAlignment(Pos.CENTER); // Center align the buttons vbox.setAlignment(Pos.CENTER); // Center align the buttons
vbox.setSpacing(20); // Set a 20 pixel gap between the buttons vbox.setSpacing(20); // Set a 20 pixel gap between the buttons
vbox.getChildren().addAll(openHelp, openLog, logFilePathLabel); vbox.getChildren().addAll(openHelp, openCfg, configPathLabel, openLog, logFilePathLabel);
BorderPane layout = new BorderPane(); BorderPane layout = new BorderPane();
@ -75,6 +83,29 @@ public class HelpTab extends Tab {
}); });
} }
openCfg.setOnAction(e -> {
File configDir = Config.getInstance().getConfigDir();
if (configDir.exists()) {
try {
// Use Runtime.getRuntime().exec() to open the file in a separate process
String osName = System.getProperty("os.name").toLowerCase();
ProcessBuilder pb = null;
if (osName.contains("mac")) {
pb = new ProcessBuilder("open", configDir.getAbsolutePath());
} else if (osName.contains("win")) {
pb = new ProcessBuilder("explorer.exe", configDir.getAbsolutePath());
} else { // Assume it's a Unix/Linux system
pb = new ProcessBuilder("xdg-open", configDir.getAbsolutePath());
}
pb.start();
} catch (IOException ex) {
log.error("Couldn't open config dir", ex);
}
} else {
log.warn("Config dir doesn't exist: {}", configDir.getAbsolutePath());
}
});
private void startDocumentationServer() { private void startDocumentationServer() {
new Thread(() -> { new Thread(() -> {
try { try {