diff --git a/diylc/diylc-core/lib/app-framework.jar b/diylc/diylc-core/lib/app-framework.jar index 8b1974e9..e8515ab1 100644 Binary files a/diylc/diylc-core/lib/app-framework.jar and b/diylc/diylc-core/lib/app-framework.jar differ diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 2a5d30d1..faaaecc2 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3394,6 +3394,10 @@ 2020-12-20 00:00:00.000 CET + + IMPROVEMENT + Migrate application data (config, logs, backups) directory from '$USER_HOME/.diylc' to '$USER_HOME/diylc' to avoid it being hidden on some OSs + BUG_FIX macOS: splash screen hangs for several minutes on some machines diff --git a/diylc/diylc-library/lib/app-framework.jar b/diylc/diylc-library/lib/app-framework.jar index 8b1974e9..e8515ab1 100644 Binary files a/diylc/diylc-library/lib/app-framework.jar and b/diylc/diylc-library/lib/app-framework.jar differ diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index ac171966..a1953543 100644 Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/build.xml b/diylc/diylc-swing/build.xml index b33b4120..e25c5499 100644 --- a/diylc/diylc-swing/build.xml +++ b/diylc/diylc-swing/build.xml @@ -10,7 +10,7 @@ - + diff --git a/diylc/diylc-swing/lib/app-framework.jar b/diylc/diylc-swing/lib/app-framework.jar index 8b1974e9..e8515ab1 100644 Binary files a/diylc/diylc-swing/lib/app-framework.jar and b/diylc/diylc-swing/lib/app-framework.jar differ diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index ac171966..a1953543 100644 Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 6f2e943d..774ac956 100644 Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ diff --git a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java index 6f64725c..6e087b3f 100644 --- a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java +++ b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java @@ -18,8 +18,13 @@ package org.diylc; import java.io.File; +import java.io.IOException; import java.lang.reflect.Field; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.util.List; import java.util.Properties; @@ -97,11 +102,7 @@ public class DIYLCStarter { LOG.error("Could not initialize log4j configuration", e); } - // initialize configuration - ConfigurationManager configurationManager = ConfigurationManager.getInstance(); - XStream xStream = configurationManager.getSerializer(); - ProjectFileManager.configure(xStream); - configurationManager.initialize("diylc"); + initializeConfiguration(); // disable HIGHLIGHT_CONTINUITY_AREA config, keep it transient ConfigurationManager.getInstance().writeValue(IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false); @@ -239,4 +240,24 @@ public class DIYLCStarter { + "Replace the main 'config.xml' file with the backup when running the latest version of DIYLC." + "", "Warning", IView.WARNING_MESSAGE); } + + private static void initializeConfiguration() { + // migrate config file from old folder path to the new one + Path oldPath = Paths.get(Utils.getUserDataDirectory(".diylc") + "config.xml"); + Path newPath = Paths.get(Utils.getUserDataDirectory("diylc") + "config.xml"); + try { + if (oldPath.toFile().exists() && !newPath.toFile().exists()) { + LOG.info("Copying config file to the new directory"); + Files.copy(oldPath, newPath, StandardCopyOption.REPLACE_EXISTING); + } + } catch (IOException e) { + LOG.error("Failed to copy config file to the new directory", e); + } + + // initialize + ConfigurationManager configurationManager = ConfigurationManager.getInstance(); + XStream xStream = configurationManager.getSerializer(); + ProjectFileManager.configure(xStream); + configurationManager.initialize("diylc"); + } } diff --git a/diylc/diylc-swing/src/org/diylc/log4j.properties b/diylc/diylc-swing/src/org/diylc/log4j.properties index d41504c8..6c3d5eea 100644 --- a/diylc/diylc-swing/src/org/diylc/log4j.properties +++ b/diylc/diylc-swing/src/org/diylc/log4j.properties @@ -2,7 +2,7 @@ log4j.rootLogger = DEBUG, fileout, stdout log4j.appender.fileout = org.diylc.appframework.miscutils.NewLogForEachRunFileAppender log4j.appender.fileout.layout.ConversionPattern = %d{ABSOLUTE} %5p [%t] %c{1} - %m%n log4j.appender.fileout.layout = org.apache.log4j.PatternLayout -log4j.appender.fileout.File = ${user.home}/.diylc/logs/log.txt +log4j.appender.fileout.File = ${user.home}/diylc/logs/log.txt log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p [%t] %c{1} - %m%n diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/help/HelpMenuPlugin.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/help/HelpMenuPlugin.java index 1423c61b..f46e4504 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/help/HelpMenuPlugin.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/help/HelpMenuPlugin.java @@ -77,7 +77,7 @@ public class HelpMenuPlugin implements IPlugIn { HELP_TITLE); swingUI.injectMenuAction(new NavigateURLAction("Plugin API", IconLoader.ApplicationEdit.getIcon(), PLUGIN_URL), HELP_TITLE); swingUI.injectMenuAction(new NavigateURLAction("Submit a Bug", IconLoader.Bug.getIcon(), BUG_URL), HELP_TITLE); - swingUI.injectMenuAction(new NavigateFolderAction("Access User Files", IconLoader.User.getIcon(), System.getProperty("user.home") + "/.diylc"), HELP_TITLE); + swingUI.injectMenuAction(new NavigateFolderAction("Access User Files", IconLoader.User.getIcon(), Utils.getUserDataDirectory("diylc")), HELP_TITLE); swingUI.injectMenuAction(null, HELP_TITLE); swingUI.injectMenuAction(new RecentUpdatesAction(), HELP_TITLE); swingUI.injectMenuAction(null, HELP_TITLE);