diff --git a/src/main/java/de/neemann/digital/core/memory/DataField.java b/src/main/java/de/neemann/digital/core/memory/DataField.java
index f43bb049b..0bf0ba37d 100644
--- a/src/main/java/de/neemann/digital/core/memory/DataField.java
+++ b/src/main/java/de/neemann/digital/core/memory/DataField.java
@@ -205,13 +205,23 @@ public class DataField {
*
* @param addr the address which value has changed
*/
- public void fireChanged(int addr) {
+ private void fireChanged(int addr) {
synchronized (listeners) {
for (DataListener l : listeners)
l.valueChanged(addr);
}
}
+ /**
+ * Sets the data from the given data field
+ *
+ * @param dataField the data to set to this data field
+ */
+ public void setDataFrom(DataField dataField) {
+ data = Arrays.copyOf(dataField.data, size);
+ fireChanged(-1);
+ }
+
/**
* The listener interface
*/
diff --git a/src/main/java/de/neemann/digital/gui/components/DataEditor.java b/src/main/java/de/neemann/digital/gui/components/DataEditor.java
index bd792c057..ffa8ecef5 100644
--- a/src/main/java/de/neemann/digital/gui/components/DataEditor.java
+++ b/src/main/java/de/neemann/digital/gui/components/DataEditor.java
@@ -59,11 +59,7 @@ public class DataEditor extends JDialog {
else
localDataField = new DataField(dataField, size);
- int cols = 16;
- if (size <= 16) cols = 1;
- else if (size <= 128) cols = 8;
-
- if (dataBits > 20 && cols == 16) cols = 8;
+ final int cols = calcCols(size, dataBits);
int tableWidth = 0;
MyTableModel dm = new MyTableModel(this.localDataField, cols, modelSync);
@@ -115,7 +111,7 @@ public class DataEditor extends JDialog {
getContentPane().add(buttons, BorderLayout.SOUTH);
JMenuBar menuBar = new JMenuBar();
- JMenu data = new JMenu(Lang.get("menu_data"));
+ JMenu data = new JMenu(Lang.get("menu_file"));
data.add(new ToolTipAction(Lang.get("btn_clearData")) {
@Override
@@ -134,7 +130,8 @@ public class DataEditor extends JDialog {
if (fc.showOpenDialog(DataEditor.this) == JFileChooser.APPROVE_OPTION) {
fileName = fc.getSelectedFile();
try {
- localDataField = new DataField(fc.getSelectedFile());
+ localDataField.setDataFrom(new DataField(fc.getSelectedFile()));
+ dm.fireEvent(new TableModelEvent(dm));
} catch (IOException e1) {
new ErrorMessage(Lang.get("msg_errorReadingFile")).addCause(e1).show(DataEditor.this);
}
@@ -170,6 +167,15 @@ public class DataEditor extends JDialog {
setLocationRelativeTo(parent);
}
+ private int calcCols(int size, int dataBits) {
+ int cols = 16;
+ if (size <= 16) cols = 1;
+ else if (size <= 128) cols = 8;
+
+ if (dataBits > 20 && cols == 16) cols = 8;
+ return cols;
+ }
+
/**
* @return the data field
*/
diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml
index 492206c76..d0fa8cd4d 100644
--- a/src/main/resources/lang/lang_de.xml
+++ b/src/main/resources/lang/lang_de.xml
@@ -1243,7 +1243,6 @@ Sind evtl. die Namen der Variablen nicht eindeutig?
Die ZIP-Datei enthält damit alle Dateien, die für den Betrieb der Schaltung erforderlich sind.
Ein- und Ausgänge benennen
Für alle unbenannten Ein- und Ausgänge eine Bezeichnung setzen.
- Daten
Fehler beim Öffnen einer PDF-Datei!
diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml
index 2d431e895..0183aecf5 100644
--- a/src/main/resources/lang/lang_en.xml
+++ b/src/main/resources/lang/lang_en.xml
@@ -1234,7 +1234,6 @@ The names of the variables may not be unique.
The ZIP file thus contains all the files that are necessary for the operation of the circuit.
Label Inputs and Outputs
Set a label to all inputs and outputs without a label.
- Data
<h1>Digital</h1>A simple simulator for digital circuits.
@@ -1322,7 +1321,7 @@ an <a href="https://github.com/hneemann/Digital/issues/new?labels=enhanc
Start export anyway?
To create a hardware description, a circuit must first be created and analyzed.
A standalone truth table can not be used to generate a hardware description.
- Used ROM's
+ Included ROM's
no data
Ok