mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-26 22:41:59 -04:00
A warning message shows up if a circuit with missing pin numbers is exported to a hardware-related file.
This commit is contained in:
parent
ffe1b77a7d
commit
4f6511d91f
@ -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
|
||||
|
@ -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());
|
||||
|
||||
|
@ -28,6 +28,7 @@ public class TruthTable {
|
||||
private final ArrayList<Result> results;
|
||||
private final TreeMap<String, Integer> pins;
|
||||
private transient BitSetter bitSetter;
|
||||
private ArrayList<String> 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<String> pinsWithoutNumber) {
|
||||
this.pinsWithoutNumber = pinsWithoutNumber;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list of pins without a number or null
|
||||
*/
|
||||
public ArrayList<String> getPinsWithoutNumber() {
|
||||
return pinsWithoutNumber;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* A single result column
|
||||
*/
|
||||
|
@ -533,6 +533,19 @@ public class Model implements Iterable<Node> {
|
||||
return found;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list of pins without a number
|
||||
*/
|
||||
public ArrayList<String> getPinsWithoutNumber() {
|
||||
ArrayList<String> 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.
|
||||
*
|
||||
|
@ -7,6 +7,7 @@ public final class Signal implements Comparable<Signal> {
|
||||
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<Signal> {
|
||||
*/
|
||||
public Signal setPinNumber(int pinNumber) {
|
||||
this.pinNumber = pinNumber;
|
||||
isPin = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -92,4 +94,10 @@ public final class Signal implements Comparable<Signal> {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return true if a pin number is missing
|
||||
*/
|
||||
public boolean missingPinNumber() {
|
||||
return isPin && pinNumber <= 0;
|
||||
}
|
||||
}
|
||||
|
@ -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<String> 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;
|
||||
}
|
||||
|
||||
|
@ -923,6 +923,7 @@ Die Icons stammen aus dem Tango Desktop Project.</string>
|
||||
<string name="msg_signal_N">Leitung {0}</string>
|
||||
<string name="msg_invalidSignalsAnalysed">Wenn Ein- oder Ausgänge keinen Namen haben, werden diese nicht
|
||||
als Variablen in die Analyse einbezogen, sondern wie Konstanten behandelt!</string>
|
||||
<string name="msg_thereAreMissingPinNumbers">Für die Pins {0} wurden keine Pinnummern festgelegt!</string>
|
||||
|
||||
<string name="ok">Ok</string>
|
||||
<string name="rot_0">0°</string>
|
||||
@ -938,7 +939,6 @@ Die Icons stammen aus dem Tango Desktop Project.</string>
|
||||
<string name="win_measures">Messwerte</string>
|
||||
<string name="win_measures_fullstep">Messwerte im Vollschrittmodus</string>
|
||||
<string name="win_measures_microstep">Messwerte im Einzelgattermodus</string>
|
||||
<string name="win_pinMapDialog">Pin-Zuordnung</string>
|
||||
<string name="win_saveChanges">Änderungen speichern?</string>
|
||||
<string name="win_stateChanged">Die Datei wurde verändert!</string>
|
||||
<string name="win_table">Tabelle</string>
|
||||
|
@ -910,6 +910,7 @@ The icons are taken from the Tango Desktop Project.</string>
|
||||
<string name="msg_signal_N">Signal {0}</string>
|
||||
<string name="msg_invalidSignalsAnalysed">If inputs or outputs have no name set, they are not included
|
||||
as variables in the analysis, but treated as constants!</string>
|
||||
<string name="msg_thereAreMissingPinNumbers">No pin numbers assigned to the pins {0}!</string>
|
||||
|
||||
<string name="ok">Ok</string>
|
||||
<string name="rot_0">0°</string>
|
||||
@ -925,7 +926,6 @@ The icons are taken from the Tango Desktop Project.</string>
|
||||
<string name="win_measures">Measurements</string>
|
||||
<string name="win_measures_fullstep">Measurements full clock step</string>
|
||||
<string name="win_measures_microstep">Measurements single gate step</string>
|
||||
<string name="win_pinMapDialog">Pin Mapping</string>
|
||||
<string name="win_saveChanges">Save Changes?</string>
|
||||
<string name="win_stateChanged">State Changed!</string>
|
||||
<string name="win_table">Table</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user