mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-28 07:28:20 -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
|
test cases that depend on a non-null default value, this tests will fail. To
|
||||||
resolve this issue, reset the default value.
|
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 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.
|
- Comments are allowed in hex files.
|
||||||
|
|
||||||
v0.12.1, released on 05. Jun 2016
|
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)
|
for (Signal s : inputs)
|
||||||
tt.addVariable(s.getName());
|
tt.addVariable(s.getName());
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ public class TruthTable {
|
|||||||
private final ArrayList<Result> results;
|
private final ArrayList<Result> results;
|
||||||
private final TreeMap<String, Integer> pins;
|
private final TreeMap<String, Integer> pins;
|
||||||
private transient BitSetter bitSetter;
|
private transient BitSetter bitSetter;
|
||||||
|
private ArrayList<String> pinsWithoutNumber = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the given file and returns a truth table instance
|
* Load the given file and returns a truth table instance
|
||||||
@ -463,6 +464,26 @@ public class TruthTable {
|
|||||||
return pins;
|
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
|
* A single result column
|
||||||
*/
|
*/
|
||||||
|
@ -533,6 +533,19 @@ public class Model implements Iterable<Node> {
|
|||||||
return found;
|
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.
|
* A filter for nodes.
|
||||||
*
|
*
|
||||||
|
@ -7,6 +7,7 @@ public final class Signal implements Comparable<Signal> {
|
|||||||
private final String name;
|
private final String name;
|
||||||
private final ObservableValue value;
|
private final ObservableValue value;
|
||||||
private int pinNumber;
|
private int pinNumber;
|
||||||
|
private boolean isPin = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Instance
|
* Creates a new Instance
|
||||||
@ -35,6 +36,7 @@ public final class Signal implements Comparable<Signal> {
|
|||||||
*/
|
*/
|
||||||
public Signal setPinNumber(int pinNumber) {
|
public Signal setPinNumber(int pinNumber) {
|
||||||
this.pinNumber = pinNumber;
|
this.pinNumber = pinNumber;
|
||||||
|
isPin = true;
|
||||||
return this;
|
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.AttributeDialog;
|
||||||
import de.neemann.digital.gui.components.ElementOrderer;
|
import de.neemann.digital.gui.components.ElementOrderer;
|
||||||
import de.neemann.digital.lang.Lang;
|
import de.neemann.digital.lang.Lang;
|
||||||
import de.neemann.gui.ErrorMessage;
|
import de.neemann.gui.*;
|
||||||
import de.neemann.gui.MyFileChooser;
|
|
||||||
import de.neemann.gui.Screen;
|
|
||||||
import de.neemann.gui.ToolTipAction;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.TableModelEvent;
|
import javax.swing.event.TableModelEvent;
|
||||||
@ -208,7 +205,7 @@ public class TableDialog extends JDialog {
|
|||||||
|
|
||||||
bar.add(createSetMenu());
|
bar.add(createSetMenu());
|
||||||
|
|
||||||
bar.add(createCreateMenu(parent));
|
bar.add(createCreateMenu());
|
||||||
|
|
||||||
setJMenuBar(bar);
|
setJMenuBar(bar);
|
||||||
|
|
||||||
@ -362,7 +359,7 @@ public class TableDialog extends JDialog {
|
|||||||
setModel(new TruthTableTableModel(t));
|
setModel(new TruthTableTableModel(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
private JMenu createCreateMenu(JFrame parent) {
|
private JMenu createCreateMenu() {
|
||||||
JMenu createMenu = new JMenu(Lang.get("menu_table_create"));
|
JMenu createMenu = new JMenu(Lang.get("menu_table_create"));
|
||||||
createMenu.add(new ToolTipAction(Lang.get("menu_table_createCircuit")) {
|
createMenu.add(new ToolTipAction(Lang.get("menu_table_createCircuit")) {
|
||||||
@Override
|
@Override
|
||||||
@ -427,11 +424,7 @@ public class TableDialog extends JDialog {
|
|||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent actionEvent) {
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
Gal16v8JEDECExporter jedecExporter = new Gal16v8JEDECExporter();
|
Gal16v8JEDECExporter jedecExporter = new Gal16v8JEDECExporter();
|
||||||
if (createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed"))
|
createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed");
|
||||||
new ShowStringDialog(parent,
|
|
||||||
Lang.get("win_pinMapDialog"),
|
|
||||||
jedecExporter.getPinMapping().toString())
|
|
||||||
.setVisible(true);
|
|
||||||
}
|
}
|
||||||
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
||||||
hardware.add(gal16v8);
|
hardware.add(gal16v8);
|
||||||
@ -447,11 +440,7 @@ public class TableDialog extends JDialog {
|
|||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent actionEvent) {
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
Gal22v10JEDECExporter jedecExporter = new Gal22v10JEDECExporter();
|
Gal22v10JEDECExporter jedecExporter = new Gal22v10JEDECExporter();
|
||||||
if (createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed"))
|
createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed");
|
||||||
new ShowStringDialog(parent,
|
|
||||||
Lang.get("win_pinMapDialog"),
|
|
||||||
jedecExporter.getPinMapping().toString())
|
|
||||||
.setVisible(true);
|
|
||||||
}
|
}
|
||||||
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
||||||
hardware.add(gal22v10);
|
hardware.add(gal22v10);
|
||||||
@ -519,6 +508,14 @@ public class TableDialog extends JDialog {
|
|||||||
new ErrorMessage(Lang.get("msg_errorDuringCalculation")).addCause(e).show(this);
|
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;
|
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_signal_N">Leitung {0}</string>
|
||||||
<string name="msg_invalidSignalsAnalysed">Wenn Ein- oder Ausgänge keinen Namen haben, werden diese nicht
|
<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>
|
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="ok">Ok</string>
|
||||||
<string name="rot_0">0°</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">Messwerte</string>
|
||||||
<string name="win_measures_fullstep">Messwerte im Vollschrittmodus</string>
|
<string name="win_measures_fullstep">Messwerte im Vollschrittmodus</string>
|
||||||
<string name="win_measures_microstep">Messwerte im Einzelgattermodus</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_saveChanges">Änderungen speichern?</string>
|
||||||
<string name="win_stateChanged">Die Datei wurde verändert!</string>
|
<string name="win_stateChanged">Die Datei wurde verändert!</string>
|
||||||
<string name="win_table">Tabelle</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_signal_N">Signal {0}</string>
|
||||||
<string name="msg_invalidSignalsAnalysed">If inputs or outputs have no name set, they are not included
|
<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>
|
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="ok">Ok</string>
|
||||||
<string name="rot_0">0°</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">Measurements</string>
|
||||||
<string name="win_measures_fullstep">Measurements full clock step</string>
|
<string name="win_measures_fullstep">Measurements full clock step</string>
|
||||||
<string name="win_measures_microstep">Measurements single gate 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_saveChanges">Save Changes?</string>
|
||||||
<string name="win_stateChanged">State Changed!</string>
|
<string name="win_stateChanged">State Changed!</string>
|
||||||
<string name="win_table">Table</string>
|
<string name="win_table">Table</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user