From 7c76aa8b0e9c78fa7990dd63ae67a1859c772823 Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 2 Jun 2016 22:20:44 +0200 Subject: [PATCH] the description field can be used to define pin assignments --- .../java/de/neemann/digital/builder/PinMap.java | 3 +++ .../de/neemann/digital/draw/elements/Circuit.java | 7 +++++++ src/main/java/de/neemann/digital/gui/Main.java | 4 +++- .../digital/gui/components/table/TableDialog.java | 14 ++++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/neemann/digital/builder/PinMap.java b/src/main/java/de/neemann/digital/builder/PinMap.java index 2fe675745..d19c037e8 100644 --- a/src/main/java/de/neemann/digital/builder/PinMap.java +++ b/src/main/java/de/neemann/digital/builder/PinMap.java @@ -72,6 +72,9 @@ public class PinMap { * @throws PinMapException PinMapException */ public PinMap parseString(String assignment) throws PinMapException { + if (assignment == null) + return this; + StringTokenizer st = new StringTokenizer(assignment, ";,"); while (st.hasMoreTokens()) { String tok = st.nextToken(); diff --git a/src/main/java/de/neemann/digital/draw/elements/Circuit.java b/src/main/java/de/neemann/digital/draw/elements/Circuit.java index 833aadd13..3ae5628ff 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Circuit.java +++ b/src/main/java/de/neemann/digital/draw/elements/Circuit.java @@ -510,4 +510,11 @@ public class Circuit { this.measurementOrdering = measurementOrdering; } + /** + * @return the description + */ + public String getDescription() { + return getAttributes().get(Keys.DESCRIPTION); + } + } diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 73510890f..6a85311bb 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -486,7 +486,9 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E public void actionPerformed(ActionEvent e) { try { Model model = new ModelDescription(circuitComponent.getCircuit(), library).createModel(false); - new TableDialog(Main.this, new ModelAnalyser(model).analyse(), shapeFactory, filename).setVisible(true); + new TableDialog(Main.this, new ModelAnalyser(model).analyse(), shapeFactory, filename) + .setPinDescription(circuitComponent.getCircuit().getDescription()) + .setVisible(true); elementState.activate(); } catch (PinException | NodeException | AnalyseException e1) { showErrorAndStopModel(Lang.get("msg_annalyseErr"), e1); 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 b2975b4f3..ac7c99928 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 @@ -65,6 +65,7 @@ public class TableDialog extends JDialog { private TableColumn column; private int columnIndex; private AllSolutionsDialog allSolutionsDialog; + private String pinDescription; /** * Creates a new instance @@ -287,6 +288,7 @@ public class TableDialog extends JDialog { if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { try { try (OutputStream out = new FileOutputStream(fileChooser.getSelectedFile())) { + expressionExporter.getPinMapping().parseString(pinDescription); new BuiderExpressionCreator(expressionExporter.getBuilder(), ExpressionModifier.IDENTITY).create(); expressionExporter.writeTo(out); } @@ -328,6 +330,7 @@ public class TableDialog extends JDialog { f = new File(f.getParentFile(), name); Gal16v8CuplExporter cupl = new Gal16v8CuplExporter(name.substring(0, name.length() - 4)); + cupl.getPinMapping().parseString(pinDescription); new BuiderExpressionCreator(cupl.getBuilder(), ExpressionModifier.IDENTITY).create(); try (FileOutputStream out = new FileOutputStream(f)) { cupl.writeTo(out); @@ -362,6 +365,17 @@ public class TableDialog extends JDialog { calculateExpressions(); } + /** + * Sets a pin description + * + * @param pinDescription the pin description + * @return this for chained calls + */ + public TableDialog setPinDescription(String pinDescription) { + this.pinDescription = pinDescription; + return this; + } + private class CalculationTableModelListener implements TableModelListener { @Override public void tableChanged(TableModelEvent tableModelEvent) {