diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 104a6daa..1dc2cf1c 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3999,7 +3999,7 @@ 30 0 - 2022-10-04 00:00:00.000 CET + 2022-10-22 00:00:00.000 CET @@ -4032,7 +4032,7 @@ IMPROVEMENT - Improved the speed and accuracy of netlist calculation + Improved the speed and accuracy of circuit analysis and netlist calculation https://github.com/bancika/diy-layout-creator/releases diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 1a897f95..6d9cdc65 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/RegressionTestRunner.launch b/diylc/diylc-swing/RegressionTestRunner.launch index 027dba42..fd6e2fd5 100644 --- a/diylc/diylc-swing/RegressionTestRunner.launch +++ b/diylc/diylc-swing/RegressionTestRunner.launch @@ -11,4 +11,5 @@ + diff --git a/diylc/diylc-swing/build.xml b/diylc/diylc-swing/build.xml index fbfecffc..2c12dbef 100644 --- a/diylc/diylc-swing/build.xml +++ b/diylc/diylc-swing/build.xml @@ -10,9 +10,10 @@ - + + @@ -124,6 +125,54 @@ + + + + + + + + + + + + + + + + + + + diff --git a/diylc/diylc-swing/flatpak/com.diy_fever.DIYLayoutCreator.metainfo.xml b/diylc/diylc-swing/flatpak/com.diy_fever.DIYLayoutCreator.metainfo.xml index 74f98bfe..7c7b4b87 100644 --- a/diylc/diylc-swing/flatpak/com.diy_fever.DIYLayoutCreator.metainfo.xml +++ b/diylc/diylc-swing/flatpak/com.diy_fever.DIYLayoutCreator.metainfo.xml @@ -37,6 +37,21 @@ nbenitezl_AT_gmail.com + + +
    +
  • [New Feature] Added 'Rotary Switch (Sealed)' component in several switching configurations
  • +
  • [New Feature] Added 'Rotary Switch (Open)' component in several switching configurations
  • +
  • [New Feature] Added 'S1 Switch' component that can be combined with potentiometer component or used on its own
  • +
  • [New Feature] Added 'DP4T (6-Position Oak Grigsby)' as a new type of Lever Switch component
  • +
  • [New Feature] Ability to rotate 'Lever Switch' and 'Schaller Megaswitch' by any angle
  • +
  • [New Feature] DIYLC Netlists can be generated including or excluding switching configurations
  • +
  • [Improvement] Ability to rotate all guitar/bass pickups through the 'Transform Selection' feature or keyboard shortcut
  • +
  • [Improvement] Improved the speed and accuracy of circuit analysis and netlist calculation
  • +
+
+ https://github.com/bancika/diy-layout-creator/releases/tag/v4.30.0 +
    diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 1a897f95..6d9cdc65 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 af7c0439..93131325 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/test/org/diylc/RegressionTestRunner.java b/diylc/diylc-swing/test/org/diylc/RegressionTestRunner.java index 8ed1799f..ada0cc60 100644 --- a/diylc/diylc-swing/test/org/diylc/RegressionTestRunner.java +++ b/diylc/diylc-swing/test/org/diylc/RegressionTestRunner.java @@ -3,10 +3,12 @@ package org.diylc; import java.awt.image.BufferedImage; import java.io.BufferedWriter; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; import java.nio.file.Files; import java.nio.file.Paths; import java.time.LocalDateTime; @@ -23,6 +25,7 @@ import org.diylc.appframework.update.VersionNumber; import org.diylc.common.IPlugInPort; import org.diylc.core.IView; import org.diylc.netlist.Netlist; +import org.diylc.netlist.NetlistException; import org.diylc.presenter.Presenter; import org.diylc.swing.plugins.file.ProjectDrawingProvider; import org.diylc.swingframework.export.DrawingExporter; @@ -178,7 +181,7 @@ public class RegressionTestRunner { } private static RegressionTestResult testOutputs(File file, String prefix, Presenter presenter, - ProjectDrawingProvider drawingProvider, MockView view) { + ProjectDrawingProvider drawingProvider, MockView view) throws NetlistException { RegressionTestResult res = new RegressionTestResult(file.getName()); File baseDir = file.getParentFile().getParentFile().getParentFile().getParentFile(); File outputDir = new File(baseDir.getAbsolutePath() + File.separator + "output" + File.separator @@ -226,47 +229,13 @@ public class RegressionTestRunner { return res.failed("Images do not match!"); } - List netlists = presenter.extractNetlists(true); - File netlistOutputDir = new File(outputDir.getAbsolutePath() + File.separator + "netlist"); - File netlistOutputFile = new File(netlistOutputDir.getAbsolutePath() + File.separator - + file.getName().replace(".diy", ".txt")); - File netlistInputFile = new File(inputDir.getAbsolutePath() + File.separator + "netlist" - + File.separator + (file.getName().replace(".diy", ".txt"))); - - netlistOutputDir.mkdirs(); - try { - if (netlistOutputFile.exists()) { - netlistOutputFile.delete(); - } - try { - try (BufferedWriter writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(netlistOutputFile, true), "UTF-8"))) { - for (Netlist netlist : netlists) { - writer.write(netlist.toString()); - writer.newLine(); - } - } - } catch (Exception e) { - try (BufferedWriter writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(netlistOutputFile, true), "UTF-8"))) { - writer.write(e.getClass().getCanonicalName() + ": " + e.getMessage()); - } - } - - List inputLines = Files.readAllLines(Paths.get(netlistInputFile.getAbsolutePath())); - List outputLines = Files.readAllLines(Paths.get(netlistOutputFile.getAbsolutePath())); - - if (inputLines.size() != outputLines.size()) { - return res.failed("Netlists do not match"); - } - for (int i = 0; i < inputLines.size(); i++) { - if (!inputLines.get(i).equals(outputLines.get(i))) { - return res.failed("Netlists do not match"); - } - } - } catch (IOException e) { - return res.failed(e.getMessage()); - } + RegressionTestResult netlistResultWithSwitches = testNetlist(file, presenter, res, outputDir, inputDir, true); + if (netlistResultWithSwitches != null) + return netlistResultWithSwitches; + + RegressionTestResult netlistResultWithoutSwitches = testNetlist(file, presenter, res, outputDir, inputDir, false); + if (netlistResultWithoutSwitches != null) + return netlistResultWithoutSwitches; // List summarizers = presenter.getNetlistAnalyzers(); // if (summarizers != null) { @@ -333,6 +302,52 @@ public class RegressionTestRunner { return res.succedded(message); } + private static RegressionTestResult testNetlist(File file, Presenter presenter, RegressionTestResult res, + File outputDir, File inputDir, boolean includeSwitches) throws NetlistException { + File netlistOutputDir = new File(outputDir.getAbsolutePath() + File.separator + "netlist"); + File netlistOutputFile = new File(netlistOutputDir.getAbsolutePath() + File.separator + + file.getName().replace(".diy", includeSwitches ? "_incl_switches.txt" : "_excl_switches.txt")); + File netlistInputFile = new File(inputDir.getAbsolutePath() + File.separator + "netlist" + + File.separator + (file.getName().replace(".diy", includeSwitches ? "_incl_switches.txt" : "_excl_switches.txt"))); + + netlistOutputDir.mkdirs(); + try { + if (netlistOutputFile.exists()) { + netlistOutputFile.delete(); + } + try { + List netlists = presenter.extractNetlists(includeSwitches); + try (BufferedWriter writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(netlistOutputFile, true), "UTF-8"))) { + for (Netlist netlist : netlists) { + writer.write(netlist.toString()); + writer.newLine(); + } + } + } catch (Exception e) { + try (BufferedWriter writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(netlistOutputFile, true), "UTF-8"))) { + writer.write(e.getClass().getCanonicalName() + ": " + e.getMessage()); + } + } + + List inputLines = Files.readAllLines(Paths.get(netlistInputFile.getAbsolutePath())); + List outputLines = Files.readAllLines(Paths.get(netlistOutputFile.getAbsolutePath())); + + if (inputLines.size() != outputLines.size()) { + return res.failed("Netlists do not match"); + } + for (int i = 0; i < inputLines.size(); i++) { + if (!inputLines.get(i).equals(outputLines.get(i))) { + return res.failed("Netlists do not match"); + } + } + } catch (IOException e) { + return res.failed(e.getMessage()); + } + return null; + } + private static RegressionTestResult prepareInputs(File file, ProjectDrawingProvider drawingProvider, IPlugInPort plugInPort) { RegressionTestResult res = new RegressionTestResult(file.getName()); @@ -346,29 +361,8 @@ public class RegressionTestRunner { // always export image to ensure that rendering is done and continuity areas are populated DrawingExporter.getInstance().exportPNG(drawingProvider, pngFile); - List netlists = plugInPort.extractNetlists(true); - File netlistDir = new File( - file.getParentFile().getParentFile().getAbsolutePath() + File.separator + "netlist"); - File netlistFile = new File( - netlistDir.getAbsolutePath() + File.separator + file.getName().replace(".diy", ".txt")); - - netlistDir.mkdirs(); - if (!netlistFile.exists()) { - try { - try (BufferedWriter writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(netlistFile, true), "UTF-8"))) { - for (Netlist netlist : netlists) { - writer.write(netlist.toString()); - writer.newLine(); - } - } - } catch (Exception e) { - try (BufferedWriter writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(netlistFile, true), "UTF-8"))) { - writer.write(e.getClass().getCanonicalName() + ": " + e.getMessage()); - } - } - } + prepareNetlist(file, plugInPort, true); + prepareNetlist(file, plugInPort, false); // List summarizers = plugInPort.getNetlistAnalyzers(); // if (summarizers != null) { @@ -399,6 +393,34 @@ public class RegressionTestRunner { return res.succedded(); } + private static void prepareNetlist(File file, IPlugInPort plugInPort, boolean includeSwitches) + throws IOException, UnsupportedEncodingException, FileNotFoundException, NetlistException { + + File netlistDir = new File( + file.getParentFile().getParentFile().getAbsolutePath() + File.separator + "netlist"); + File netlistFile = new File( + netlistDir.getAbsolutePath() + File.separator + file.getName().replace(".diy", includeSwitches ? "_incl_switches.txt" : "_excl_switches.txt")); + + netlistDir.mkdirs(); + if (!netlistFile.exists()) { + try { + List netlists = plugInPort.extractNetlists(includeSwitches); + try (BufferedWriter writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(netlistFile, true), "UTF-8"))) { + for (Netlist netlist : netlists) { + writer.write(netlist.toString()); + writer.newLine(); + } + } + } catch (Exception e) { + try (BufferedWriter writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(netlistFile, true), "UTF-8"))) { + writer.write(e.getClass().getCanonicalName() + ": " + e.getMessage()); + } + } + } + } + // private static void writeSummariesToFile(List netlists, INetlistAnalyzer summarizer, // File summaryFile) // throws TreeException, IOException, UnsupportedEncodingException, FileNotFoundException {