diff --git a/diylc/.gitignore b/diylc/.gitignore
index 1b0b98c5..60086ef9 100644
--- a/diylc/.gitignore
+++ b/diylc/.gitignore
@@ -1,17 +1,149 @@
-# Eclipse
-.classpath
-.project
-.settings/
-
-# Intellij
-.idea/
-*.iml
-*.iws
-
-# Mac
+# Reference: https://github.com/github/gitignore
+# From: https://gist.github.com/edesdan/6bb43343740bcd54ef0f56a384a2f66f
+
+######################
+###### Mac OS X ######
+######################
+
+# Folder view configuration files
.DS_Store
-
-# Maven
-**/log/
+Desktop.ini
+
+# Thumbnail cache files
+._*
+Thumbs.db
+
+# Files that might appear on external disks
+.Spotlight-V100
+.Trashes
+
+######################
+###### Java ######
+######################
+
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+######################
+###### Gradle ######
+######################
+
+.gradle
+build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Cache of project
+.gradletasknamecache
+
+# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
+# gradle/wrapper/gradle-wrapper.properties
+
+######################
+###### Intellij ######
+######################
+
+# Created by https://www.gitignore.io/api/intellij
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff:
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/dictionaries
+
+# Sensitive or high-churn files:
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.xml
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+
+# Gradle:
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# CMake
+cmake-build-debug/
+
+# Mongo Explorer plugin:
+.idea/**/mongoSettings.xml
+
+## File-based project format:
+*.iws
+
+## Plugin-specific files:
+
+# IntelliJ
+/out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/sonarlint
+
+# End of https://www.gitignore.io/api/intellij
+
+######################
+###### Maven ######
+######################
+
**/target/
-**/build/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+
+# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
+!/.mvn/wrapper/maven-wrapper.jar
diff --git a/diylc/diylc-core/pom.xml b/diylc/diylc-core/pom.xml
index 2ee50f0d..67ac6d75 100644
--- a/diylc/diylc-core/pom.xml
+++ b/diylc/diylc-core/pom.xml
@@ -75,16 +75,22 @@
org.diylc.local
app-framework
1.0
+ system
+ ${project.basedir}/../lib/app-framework.jar
org.diylc.local
gerber-writer-api-1.0.0
1.0
+ system
+ ${project.basedir}/../lib/gerber-writer-api-1.0.0.jar
org.diylc.local
java-http-proxy
1.0
+ system
+ ${project.basedir}/../lib/java-http-proxy.jar
diff --git a/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java
index a1f57634..a57686b7 100644
--- a/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java
+++ b/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java
@@ -1569,8 +1569,8 @@ public class Presenter implements IPlugInPort, IConfigListener {
double centerY = (maxY + minY) / 2;
if (snapToGrid) {
- CalcUtils.roundToGrid(centerX, this.currentProject.getGridSpacing());
- CalcUtils.roundToGrid(centerY, this.currentProject.getGridSpacing());
+ centerX = CalcUtils.roundToGrid(centerX, this.currentProject.getGridSpacing());
+ centerY = CalcUtils.roundToGrid(centerY, this.currentProject.getGridSpacing());
}
return new Point2D.Double(centerX, centerY);
diff --git a/diylc/diylc-core/src/main/resources/update.xml b/diylc/diylc-core/src/main/resources/update.xml
index 3ed8e068..83876df3 100644
--- a/diylc/diylc-core/src/main/resources/update.xml
+++ b/diylc/diylc-core/src/main/resources/update.xml
@@ -265,10 +265,18 @@
IMPROVEMENT
Improved robustness of series/parallel graph construction code used in circuit analysis
+
+ IMPROVEMENT
+ Omit boards, wires, traces, terminals, etc from Spice netlist output
+
BUG_FIX
Moving selected components with a mouse doesn't register file modification action and doesn't enable Undo action
+
+ BUG_FIX
+ Rotating selected components sometimes wacks the alignment off the grid
+
https://github.com/bancika/diy-layout-creator/releases
diff --git a/diylc/diylc-library/lib/app-framework.jar b/diylc/diylc-library/lib/app-framework.jar
deleted file mode 100644
index 683a864c..00000000
Binary files a/diylc/diylc-library/lib/app-framework.jar and /dev/null differ
diff --git a/diylc/diylc-library/lib/gerber-writer-api-1.0.0.jar b/diylc/diylc-library/lib/gerber-writer-api-1.0.0.jar
deleted file mode 100644
index 09c27e27..00000000
Binary files a/diylc/diylc-library/lib/gerber-writer-api-1.0.0.jar and /dev/null differ
diff --git a/diylc/diylc-library/pom.xml b/diylc/diylc-library/pom.xml
index b39a53fa..cfc64273 100644
--- a/diylc/diylc-library/pom.xml
+++ b/diylc/diylc-library/pom.xml
@@ -51,7 +51,7 @@
org.apache.poi
poi
- 3.5-FINAL
+ 5.4.0
junit
@@ -64,21 +64,29 @@
org.diylc.local
app-framework
1.0
+ system
+ ${project.basedir}/../lib/app-framework.jar
org.diylc.local
gerber-writer-api-1.0.0
1.0
+ system
+ ${project.basedir}/../lib/gerber-writer-api-1.0.0.jar
org.diylc.local
jep-2.4.1
1.0
+ system
+ ${project.basedir}/../lib/jep-2.4.1.jar
org.diylc.local
svgSalamander-1.1.2.4
1.0
+ system
+ ${project.basedir}/../lib/svgSalamander-1.1.2.4.jar
diff --git a/diylc/diylc-library/src/main/java/org/diylc/netlist/SpiceAnalyzer.java b/diylc/diylc-library/src/main/java/org/diylc/netlist/SpiceAnalyzer.java
index 7ba4652b..ba7b74e7 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/netlist/SpiceAnalyzer.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/netlist/SpiceAnalyzer.java
@@ -61,9 +61,14 @@ public class SpiceAnalyzer extends NetlistAnalyzer implements INetlistAnalyzer {
protected Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException {
// grab all components that are in the netlist
- List> allComponents = netlist.getComponents();
-
List groups = netlist.getSortedGroups();
+
+ List> allComponents = groups.stream()
+ .flatMap(x -> x.getNodes().stream()
+ .map(y -> y.getComponent()))
+ .distinct()
+ .collect(Collectors.toList());
+
int unconnectedIndex = groups.size();
int maxLen = 0;
diff --git a/diylc/diylc-swing/lib/app-framework.jar b/diylc/diylc-swing/lib/app-framework.jar
deleted file mode 100644
index 683a864c..00000000
Binary files a/diylc/diylc-swing/lib/app-framework.jar and /dev/null differ
diff --git a/diylc/diylc-swing/lib/gerber-writer-api-1.0.0.jar b/diylc/diylc-swing/lib/gerber-writer-api-1.0.0.jar
deleted file mode 100644
index 09c27e27..00000000
Binary files a/diylc/diylc-swing/lib/gerber-writer-api-1.0.0.jar and /dev/null differ
diff --git a/diylc/diylc-swing/lib/java-http-proxy.jar b/diylc/diylc-swing/lib/java-http-proxy.jar
deleted file mode 100644
index 9295029e..00000000
Binary files a/diylc/diylc-swing/lib/java-http-proxy.jar and /dev/null differ
diff --git a/diylc/diylc-swing/lib/jep-2.4.1.jar b/diylc/diylc-swing/lib/jep-2.4.1.jar
deleted file mode 100644
index 0aea3e52..00000000
Binary files a/diylc/diylc-swing/lib/jep-2.4.1.jar and /dev/null differ
diff --git a/diylc/diylc-swing/lib/svgSalamander-1.1.2.4.jar b/diylc/diylc-swing/lib/svgSalamander-1.1.2.4.jar
deleted file mode 100644
index e825b66b..00000000
Binary files a/diylc/diylc-swing/lib/svgSalamander-1.1.2.4.jar and /dev/null differ
diff --git a/diylc/diylc-swing/lib/swing-framework.jar b/diylc/diylc-swing/lib/swing-framework.jar
deleted file mode 100644
index 680dc754..00000000
Binary files a/diylc/diylc-swing/lib/swing-framework.jar and /dev/null differ
diff --git a/diylc/diylc-swing/pom.xml b/diylc/diylc-swing/pom.xml
index 72fcff35..6ae106e5 100644
--- a/diylc/diylc-swing/pom.xml
+++ b/diylc/diylc-swing/pom.xml
@@ -65,7 +65,7 @@
org.apache.poi
poi
- 3.5-FINAL
+ 5.4.0
com.google.guava
@@ -118,31 +118,43 @@
org.diylc.local
app-framework
1.0
+ system
+ ${project.basedir}/../lib/app-framework.jar
org.diylc.local
gerber-writer-api-1.0.0
1.0
+ system
+ ${project.basedir}/../lib/gerber-writer-api-1.0.0.jar
org.diylc.local
java-http-proxy
1.0
+ system
+ ${project.basedir}/../lib/java-http-proxy.jar
org.diylc.local
jep-2.4.1
1.0
+ system
+ ${project.basedir}/../lib/jep-2.4.1.jar
org.diylc.local
svgSalamander-1.1.2.4
1.0
+ system
+ ${project.basedir}/../lib/svgSalamander-1.1.2.4.jar
org.diylc.local
swing-framework
1.0
+ system
+ ${project.basedir}/../lib/swing-framework.jar
diff --git a/diylc/diylc-swing/src/main/resources/images/splash_ic.png b/diylc/diylc-swing/src/main/resources/images/splash_ic.png
index 013cb706..7501086d 100644
Binary files a/diylc/diylc-swing/src/main/resources/images/splash_ic.png and b/diylc/diylc-swing/src/main/resources/images/splash_ic.png differ
diff --git a/diylc/install-dependencies.bat b/diylc/install-dependencies.bat
deleted file mode 100644
index 067f4deb..00000000
--- a/diylc/install-dependencies.bat
+++ /dev/null
@@ -1,63 +0,0 @@
-@echo off
-setlocal enabledelayedexpansion
-
-echo ===================================================
-echo DIYLC Maven Local Dependency Installer for Windows
-echo ===================================================
-echo.
-echo This script will install all JAR files from the lib directories
-echo to your local Maven repository.
-echo.
-
-REM Define the group ID for all local dependencies
-set GROUP_ID=org.diylc.local
-
-REM List of module lib directories to process
-set MODULES=diylc-swing
-
-echo Processing dependencies...
-echo.
-
-for %%m in (%MODULES%) do (
- echo Module: %%m
- echo -----------------------
-
- if exist "%%m\lib" (
- for %%j in ("%%m\lib\*.jar") do (
- REM Extract filename without extension
- set "JAR_FILE=%%j"
- set "ARTIFACT_ID=%%~nj"
-
- echo Installing !ARTIFACT_ID!.jar
-
- REM Install the JAR to the local Maven repository
- call mvn install:install-file ^
- -Dfile="!JAR_FILE!" ^
- -DgroupId=%GROUP_ID% ^
- -DartifactId=!ARTIFACT_ID! ^
- -Dversion=1.0 ^
- -Dpackaging=jar ^
- -DgeneratePom=true ^
- -DcreateChecksum=true
-
- echo.
- )
- ) else (
- echo No lib directory found for %%m
- echo.
- )
-)
-
-echo ===================================================
-echo All dependencies have been installed!
-echo.
-echo You can now reference these dependencies in your POM files as:
-echo.
-echo ^
-echo ^%GROUP_ID%^
-echo ^ARTIFACT_NAME^
-echo ^1.0^
-echo ^
-echo ===================================================
-
-pause
diff --git a/diylc/install-dependencies.sh b/diylc/install-dependencies.sh
deleted file mode 100755
index 71ee8b09..00000000
--- a/diylc/install-dependencies.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-
-echo "==================================================="
-echo "DIYLC Maven Local Dependency Installer for Unix"
-echo "==================================================="
-echo
-echo "This script will install all JAR files from the lib directories"
-echo "to your local Maven repository."
-echo
-
-# Define the group ID for all local dependencies
-GROUP_ID="org.diylc.local"
-
-# List of module lib directories to process
-MODULES=("diylc-swing")
-
-echo "Processing dependencies..."
-echo
-
-for module in "${MODULES[@]}"; do
- echo "Module: $module"
- echo "-----------------------"
-
- if [ -d "$module/lib" ]; then
- for jar_file in "$module/lib"/*.jar; do
- # Skip if no jar files found
- [ -e "$jar_file" ] || continue
-
- # Extract filename without extension
- ARTIFACT_ID=$(basename "$jar_file" .jar)
-
- echo "Installing $ARTIFACT_ID.jar"
-
- # Install the JAR to the local Maven repository
- mvn install:install-file \
- -Dfile="$jar_file" \
- -DgroupId="$GROUP_ID" \
- -DartifactId="$ARTIFACT_ID" \
- -Dversion=1.0 \
- -Dpackaging=jar \
- -DgeneratePom=true \
- -DcreateChecksum=true
-
- echo
- done
- else
- echo "No lib directory found for $module"
- echo
- fi
-done
-
-echo "==================================================="
-echo "All dependencies have been installed!"
-echo
-echo "You can now reference these dependencies in your POM files as:"
-echo
-echo ""
-echo " $GROUP_ID"
-echo " ARTIFACT_NAME"
-echo " 1.0"
-echo ""
-echo "==================================================="
diff --git a/diylc/diylc-core/lib/app-framework.jar b/diylc/lib/app-framework.jar
similarity index 52%
rename from diylc/diylc-core/lib/app-framework.jar
rename to diylc/lib/app-framework.jar
index 683a864c..1103c3ba 100644
Binary files a/diylc/diylc-core/lib/app-framework.jar and b/diylc/lib/app-framework.jar differ
diff --git a/diylc/diylc-core/lib/gerber-writer-api-1.0.0.jar b/diylc/lib/gerber-writer-api-1.0.0.jar
similarity index 100%
rename from diylc/diylc-core/lib/gerber-writer-api-1.0.0.jar
rename to diylc/lib/gerber-writer-api-1.0.0.jar
diff --git a/diylc/diylc-swing/lib/jar-loader.jar b/diylc/lib/jar-loader.jar
similarity index 100%
rename from diylc/diylc-swing/lib/jar-loader.jar
rename to diylc/lib/jar-loader.jar
diff --git a/diylc/diylc-core/lib/java-http-proxy.jar b/diylc/lib/java-http-proxy.jar
similarity index 100%
rename from diylc/diylc-core/lib/java-http-proxy.jar
rename to diylc/lib/java-http-proxy.jar
diff --git a/diylc/diylc-library/lib/jep-2.4.1.jar b/diylc/lib/jep-2.4.1.jar
similarity index 100%
rename from diylc/diylc-library/lib/jep-2.4.1.jar
rename to diylc/lib/jep-2.4.1.jar
diff --git a/diylc/diylc-library/lib/svgSalamander-1.1.2.4.jar b/diylc/lib/svgSalamander-1.1.2.4.jar
similarity index 100%
rename from diylc/diylc-library/lib/svgSalamander-1.1.2.4.jar
rename to diylc/lib/svgSalamander-1.1.2.4.jar
diff --git a/diylc/lib/swing-framework.jar b/diylc/lib/swing-framework.jar
new file mode 100644
index 00000000..a2c687fa
Binary files /dev/null and b/diylc/lib/swing-framework.jar differ