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 {