From e1c3cf9e7243e43d52d8e3460c6a2adf7e23dbb2 Mon Sep 17 00:00:00 2001 From: Jafea7 Date: Sun, 4 May 2025 21:17:09 +1000 Subject: [PATCH] Open config dir from Settings->Help --- .../src/main/java/ctbrec/ui/tabs/HelpTab.java | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/tabs/HelpTab.java b/client/src/main/java/ctbrec/ui/tabs/HelpTab.java index 846b36fd..ea097625 100644 --- a/client/src/main/java/ctbrec/ui/tabs/HelpTab.java +++ b/client/src/main/java/ctbrec/ui/tabs/HelpTab.java @@ -1,5 +1,7 @@ package ctbrec.ui.tabs; +import ctbrec.Config; +import ctbrec.OS; import ctbrec.docs.DocServer; import ctbrec.ui.DesktopIntegration; import javafx.application.Platform; @@ -27,14 +29,19 @@ public class HelpTab extends Tab { Button openHelp = new Button("Open Help"); Button openLog = new Button("Open Log File"); + Button openCfg = new Button("Open config dir"); openHelp.setPadding(new Insets(20)); openLog.setPadding(new Insets(20)); - 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.setAlignment(Pos.CENTER); // Center align 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(); @@ -73,8 +80,31 @@ public class HelpTab extends Tab { log.warn("Log file doesn't exist: {}", logFile.getAbsolutePath()); } }); - } + 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() { new Thread(() -> { try {