diff --git a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java index a763931d..9b7d9f9b 100644 --- a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java +++ b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java @@ -294,7 +294,7 @@ public abstract class AbstractComponent implements IDIYComponent { } @Override - public String getSectionName(int pointIndex) { + public String[] getSectionNames(int pointIndex) { return null; } diff --git a/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java b/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java index ee1bfb47..ff1dafb9 100644 --- a/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java +++ b/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java @@ -131,10 +131,11 @@ public interface IDIYComponent extends Serializable { String getInternalLinkName(int index1, int index2); /** - * @param pointIndex name of the internal section containing the specified point, or null if the component does not have internal sections. + * @param pointIndex name of the internal section containing the specified point, or null if the component does not have internal sections. + * One point can be shared between multiple sections, in which case, the result may contain more than one element. * @return */ - String getSectionName(int pointIndex); + String[] getSectionNames(int pointIndex); /** * Draws the component onto the {@link Graphics2D}. diff --git a/diylc/diylc-core/src/org/diylc/netlist/Node.java b/diylc/diylc-core/src/org/diylc/netlist/Node.java index 4fe476ee..0b5b5fe0 100644 --- a/diylc/diylc-core/src/org/diylc/netlist/Node.java +++ b/diylc/diylc-core/src/org/diylc/netlist/Node.java @@ -48,8 +48,8 @@ public class Node implements Comparable { } public String getDisplayName() { - String section = component.getSectionName(pointIndex); - return (section == null ? "" : section + ".") + component.getControlPointNodeName(pointIndex); + String[] section = component.getSectionNames(pointIndex); + return (section == null || section.length > 1 ? "" : section[0] + ".") + component.getControlPointNodeName(pointIndex); } @Override diff --git a/diylc/diylc-core/src/org/diylc/presenter/ProjectFileManager.java b/diylc/diylc-core/src/org/diylc/presenter/ProjectFileManager.java index 179dce04..c8acb3ba 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/ProjectFileManager.java +++ b/diylc/diylc-core/src/org/diylc/presenter/ProjectFileManager.java @@ -21,6 +21,7 @@ */ package org.diylc.presenter; +import java.awt.Color; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -92,7 +93,16 @@ public class ProjectFileManager { } }; xStream.autodetectAnnotations(true); - xStream.registerConverter(new PointConverter()); + xStream.registerConverter(new PointConverter()); + xStream.addImmutableType(Color.class); + xStream.addImmutableType(java.awt.Point.class); + xStream.addImmutableType(org.diylc.core.measures.Voltage.class); + xStream.addImmutableType(org.diylc.core.measures.Resistance.class); + xStream.addImmutableType(org.diylc.core.measures.Capacitance.class); + xStream.addImmutableType(org.diylc.core.measures.Current.class); + xStream.addImmutableType(org.diylc.core.measures.Power.class); + xStream.addImmutableType(org.diylc.core.measures.Inductance.class); + xStream.addImmutableType(org.diylc.core.measures.Size.class); this.xStreamOld = new XStream(new DomDriver()); xStreamOld.autodetectAnnotations(true); this.messageDispatcher = messageDispatcher; diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index c30596a5..b3442b9c 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-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java index 28ae3d87..22fd0b07 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java @@ -87,6 +87,11 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo return index; } + @Override + public String getComment() { + return getPinout() == null ? null : (getPinout().toString() + " pinout"); + } + @EditableProperty public String getValue() { return value; diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorPinout.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorPinout.java index 950bedeb..b652263f 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorPinout.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorPinout.java @@ -6,6 +6,14 @@ public enum TransistorPinout { @Override public String toString() { - return name().replace("_", " "); + String[] parts = name().split("_"); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < parts[1].length(); i++) { + if (i > 0) + sb.append("-"); + sb.append(parts[1].charAt(i)); + } + sb.append(" ").append(parts[0]); + return sb.toString(); }; } diff --git a/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java b/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java index 423121e1..80021b0d 100644 --- a/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java +++ b/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java @@ -1,8 +1,34 @@ +/* + + DIY Layout Creator (DIYLC). + Copyright (c) 2009-2018 held jointly by the individual authors. + + This file is part of DIYLC. + + DIYLC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + DIYLC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DIYLC. If not, see . + +*/ package org.diylc.netlist; +/** + * Maps DIYLC component control points to spice-compatible node indices. + * + * @author Branislav Stojkovic + */ public interface ISpiceMapper { - int mapToSpiceNode(int Index); + int mapToSpiceNode(int pontIndex); - String getSectionName(int pointIndex); + String getComment(); } diff --git a/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java b/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java index 1b49852e..8aade615 100644 --- a/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java +++ b/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java @@ -110,6 +110,12 @@ public class SpiceAnalyzer extends NetlistAnalyzer implements INetlistAnalyzer { } sb.append(c.getValue()); + + if (c instanceof ISpiceMapper) { + String comment = ((ISpiceMapper)c).getComment(); + if (comment != null) + sb.append(" ; ").append(comment); + } sb.append("
"); } diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index c30596a5..b3442b9c 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 9e661e6f..63f7194d 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/update.xml b/diylc/diylc-swing/update.xml index 0b2404e0..a08a32d2 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2586,10 +2586,18 @@ NEW_FEATURE Generate SPICE-compatible netlist (still in beta stage) + + NEW_FEATURE + Added pinout property to all transistor components + IMPROVEMENT When in "Highlight Connected Area" mode, the status bar shows useful information making it harder to forget what the mode does - + + + IMPROVEMENT + Cleaner XML format for .DIY files with less cross-references + BUG_FIX "Highlight Connected Areas" doesn't follow multiple chained wires and jumpers