From 4f6511d91f25c5f83a698c8f42b153d07ca6cdf0 Mon Sep 17 00:00:00 2001 From: hneemann Date: Wed, 21 Jun 2017 14:22:24 +0200 Subject: [PATCH] A warning message shows up if a circuit with missing pin numbers is exported to a hardware-related file. --- distribution/ReleaseNotes.txt | 1 + .../digital/analyse/ModelAnalyser.java | 2 +- .../neemann/digital/analyse/TruthTable.java | 21 ++++++++++++++ .../java/de/neemann/digital/core/Model.java | 13 +++++++++ .../java/de/neemann/digital/core/Signal.java | 8 +++++ .../gui/components/table/TableDialog.java | 29 +++++++++---------- src/main/resources/lang/lang_de.xml | 2 +- src/main/resources/lang/lang_en.xml | 2 +- 8 files changed, 59 insertions(+), 19 deletions(-) diff --git a/distribution/ReleaseNotes.txt b/distribution/ReleaseNotes.txt index 1dd2393c5..c7292b731 100644 --- a/distribution/ReleaseNotes.txt +++ b/distribution/ReleaseNotes.txt @@ -8,6 +8,7 @@ planned as v0.13 test cases that depend on a non-null default value, this tests will fail. To resolve this issue, reset the default value. - A warning message shows up if a circuit with unnamed inputs/outputs is analysed. +- A warning message shows up if a circuit with missing pin numbers is exported to a hardware-related file. - Comments are allowed in hex files. v0.12.1, released on 05. Jun 2016 diff --git a/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java b/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java index df803e213..bfbe820e7 100644 --- a/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java +++ b/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java @@ -268,7 +268,7 @@ public class ModelAnalyser { } }; - TruthTable tt = new TruthTable(); + TruthTable tt = new TruthTable().setPinsWithoutNumber(model.getPinsWithoutNumber()); for (Signal s : inputs) tt.addVariable(s.getName()); diff --git a/src/main/java/de/neemann/digital/analyse/TruthTable.java b/src/main/java/de/neemann/digital/analyse/TruthTable.java index 7ccc65452..a8c5a463e 100644 --- a/src/main/java/de/neemann/digital/analyse/TruthTable.java +++ b/src/main/java/de/neemann/digital/analyse/TruthTable.java @@ -28,6 +28,7 @@ public class TruthTable { private final ArrayList results; private final TreeMap pins; private transient BitSetter bitSetter; + private ArrayList pinsWithoutNumber = null; /** * Load the given file and returns a truth table instance @@ -463,6 +464,26 @@ public class TruthTable { return pins; } + + /** + * Sets the missing pin number flag + * + * @param pinsWithoutNumber list of pins without a number or null + * @return this for chained calls + */ + public TruthTable setPinsWithoutNumber(ArrayList pinsWithoutNumber) { + this.pinsWithoutNumber = pinsWithoutNumber; + return this; + } + + /** + * @return list of pins without a number or null + */ + public ArrayList getPinsWithoutNumber() { + return pinsWithoutNumber; + } + + /** * A single result column */ diff --git a/src/main/java/de/neemann/digital/core/Model.java b/src/main/java/de/neemann/digital/core/Model.java index d7483d413..4dd710656 100644 --- a/src/main/java/de/neemann/digital/core/Model.java +++ b/src/main/java/de/neemann/digital/core/Model.java @@ -533,6 +533,19 @@ public class Model implements Iterable { return found; } + /** + * @return list of pins without a number + */ + public ArrayList getPinsWithoutNumber() { + ArrayList sigWithoutPinNumber = null; + for (Signal s : signals) + if (s.missingPinNumber()) { + if (sigWithoutPinNumber == null) sigWithoutPinNumber = new ArrayList<>(); + sigWithoutPinNumber.add(s.getName()); + } + return sigWithoutPinNumber; + } + /** * A filter for nodes. * diff --git a/src/main/java/de/neemann/digital/core/Signal.java b/src/main/java/de/neemann/digital/core/Signal.java index 771c1546f..b63757f8a 100644 --- a/src/main/java/de/neemann/digital/core/Signal.java +++ b/src/main/java/de/neemann/digital/core/Signal.java @@ -7,6 +7,7 @@ public final class Signal implements Comparable { private final String name; private final ObservableValue value; private int pinNumber; + private boolean isPin = false; /** * Creates a new Instance @@ -35,6 +36,7 @@ public final class Signal implements Comparable { */ public Signal setPinNumber(int pinNumber) { this.pinNumber = pinNumber; + isPin = true; return this; } @@ -92,4 +94,10 @@ public final class Signal implements Comparable { } + /** + * @return true if a pin number is missing + */ + public boolean missingPinNumber() { + return isPin && pinNumber <= 0; + } } diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java index 45f976cbd..aa7463c95 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java @@ -37,10 +37,7 @@ import de.neemann.digital.gui.SaveAsHelper; import de.neemann.digital.gui.components.AttributeDialog; import de.neemann.digital.gui.components.ElementOrderer; import de.neemann.digital.lang.Lang; -import de.neemann.gui.ErrorMessage; -import de.neemann.gui.MyFileChooser; -import de.neemann.gui.Screen; -import de.neemann.gui.ToolTipAction; +import de.neemann.gui.*; import javax.swing.*; import javax.swing.event.TableModelEvent; @@ -208,7 +205,7 @@ public class TableDialog extends JDialog { bar.add(createSetMenu()); - bar.add(createCreateMenu(parent)); + bar.add(createCreateMenu()); setJMenuBar(bar); @@ -362,7 +359,7 @@ public class TableDialog extends JDialog { setModel(new TruthTableTableModel(t)); } - private JMenu createCreateMenu(JFrame parent) { + private JMenu createCreateMenu() { JMenu createMenu = new JMenu(Lang.get("menu_table_create")); createMenu.add(new ToolTipAction(Lang.get("menu_table_createCircuit")) { @Override @@ -427,11 +424,7 @@ public class TableDialog extends JDialog { @Override public void actionPerformed(ActionEvent actionEvent) { Gal16v8JEDECExporter jedecExporter = new Gal16v8JEDECExporter(); - if (createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed")) - new ShowStringDialog(parent, - Lang.get("win_pinMapDialog"), - jedecExporter.getPinMapping().toString()) - .setVisible(true); + createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed"); } }.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem()); hardware.add(gal16v8); @@ -447,11 +440,7 @@ public class TableDialog extends JDialog { @Override public void actionPerformed(ActionEvent actionEvent) { Gal22v10JEDECExporter jedecExporter = new Gal22v10JEDECExporter(); - if (createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed")) - new ShowStringDialog(parent, - Lang.get("win_pinMapDialog"), - jedecExporter.getPinMapping().toString()) - .setVisible(true); + createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed"); } }.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem()); hardware.add(gal22v10); @@ -519,6 +508,14 @@ public class TableDialog extends JDialog { new ErrorMessage(Lang.get("msg_errorDuringCalculation")).addCause(e).show(this); } } + + ArrayList pinsWithoutNumber = model.getTable().getPinsWithoutNumber(); + if (pinsWithoutNumber != null) + JOptionPane.showMessageDialog(TableDialog.this, + new LineBreaker().toHTML().breakLines(Lang.get("msg_thereAreMissingPinNumbers", pinsWithoutNumber)), + Lang.get("msg_warning"), + JOptionPane.WARNING_MESSAGE); + return result; } diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index bcc112986..3a30d54ac 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -923,6 +923,7 @@ Die Icons stammen aus dem Tango Desktop Project. Leitung {0} Wenn Ein- oder Ausgänge keinen Namen haben, werden diese nicht als Variablen in die Analyse einbezogen, sondern wie Konstanten behandelt! + Für die Pins {0} wurden keine Pinnummern festgelegt! Ok @@ -938,7 +939,6 @@ Die Icons stammen aus dem Tango Desktop Project. Messwerte Messwerte im Vollschrittmodus Messwerte im Einzelgattermodus - Pin-Zuordnung Änderungen speichern? Die Datei wurde verändert! Tabelle diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index c7777e46c..7fd95c3ca 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -910,6 +910,7 @@ The icons are taken from the Tango Desktop Project. Signal {0} If inputs or outputs have no name set, they are not included as variables in the analysis, but treated as constants! + No pin numbers assigned to the pins {0}! Ok @@ -925,7 +926,6 @@ The icons are taken from the Tango Desktop Project. Measurements Measurements full clock step Measurements single gate step - Pin Mapping Save Changes? State Changed! Table