From 80202bfce7f98771d9556d4899078e84482372ca Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Wed, 29 Jan 2025 01:35:09 +0100 Subject: [PATCH] Try to use the development sources folder as the initial folder for open/save operations in the structure command. --- .../internal/command/StructureCommands.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/guideme/internal/command/StructureCommands.java b/src/main/java/guideme/internal/command/StructureCommands.java index 4423062..00a9c03 100644 --- a/src/main/java/guideme/internal/command/StructureCommands.java +++ b/src/main/java/guideme/internal/command/StructureCommands.java @@ -11,6 +11,7 @@ import guideme.internal.GuidebookText; import guideme.internal.MutableGuide; import java.io.BufferedInputStream; +import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -391,6 +392,8 @@ private static void exportStructure(ServerLevel level, BlockPos origin, Vec3i si } private static String pickFileForOpen() { + setDefaultFolder(); + try (var stack = MemoryStack.stackPush()) { return TinyFileDialogs.tinyfd_openFileDialog( @@ -403,6 +406,8 @@ private static String pickFileForOpen() { } private static String pickFileForSave() { + setDefaultFolder(); + try (var stack = MemoryStack.stackPush()) { return TinyFileDialogs.tinyfd_saveFileDialog( @@ -421,4 +426,19 @@ private static PointerBuffer createFilterPatterns(MemoryStack stack) { filterPatternsBuffer.flip(); return filterPatternsBuffer; } + + private static void setDefaultFolder() { + // If any guide has development sources, default to that folder + if (lastOpenedOrSavedPath == null) { + for (var guide : GuideRegistry.getAll()) { + if (guide.getDevelopmentSourceFolder() != null) { + lastOpenedOrSavedPath = guide.getDevelopmentSourceFolder().toString(); + if (!lastOpenedOrSavedPath.endsWith("/") && !lastOpenedOrSavedPath.endsWith("\\")) { + lastOpenedOrSavedPath += File.separator; + } + break; + } + } + } + } }