diff --git a/src/main/java/de/neemann/digital/analyse/expression/modify/NAnd.java b/src/main/java/de/neemann/digital/analyse/expression/modify/NAnd.java index 5f0c75a89..91a5ce08c 100644 --- a/src/main/java/de/neemann/digital/analyse/expression/modify/NAnd.java +++ b/src/main/java/de/neemann/digital/analyse/expression/modify/NAnd.java @@ -1,6 +1,7 @@ package de.neemann.digital.analyse.expression.modify; import de.neemann.digital.analyse.expression.Expression; +import de.neemann.digital.analyse.expression.Not; import de.neemann.digital.analyse.expression.Operation; import java.util.ArrayList; @@ -14,7 +15,9 @@ public class NAnd implements ExpressionModifier { @Override public Expression modify(Expression expression) { - if (expression instanceof Operation.Or) { + if (expression instanceof Operation.And) { + return new Not(not(expression)); + } else if (expression instanceof Operation.Or) { ArrayList exp = new ArrayList<>(); for (Expression e : ((Operation.Or) expression).getExpressions()) exp.add(not(e)); diff --git a/src/main/java/de/neemann/digital/analyse/expression/modify/NOr.java b/src/main/java/de/neemann/digital/analyse/expression/modify/NOr.java index a9766bc99..0365ced84 100644 --- a/src/main/java/de/neemann/digital/analyse/expression/modify/NOr.java +++ b/src/main/java/de/neemann/digital/analyse/expression/modify/NOr.java @@ -1,6 +1,7 @@ package de.neemann.digital.analyse.expression.modify; import de.neemann.digital.analyse.expression.Expression; +import de.neemann.digital.analyse.expression.Not; import de.neemann.digital.analyse.expression.Operation; import java.util.ArrayList; @@ -14,6 +15,9 @@ public class NOr implements ExpressionModifier { @Override public Expression modify(Expression expression) { + if (expression instanceof Operation.Or) { + return new Not(not(expression)); + } else if (expression instanceof Operation.And) { ArrayList exp = new ArrayList<>(); for (Expression e : ((Operation.And) expression).getExpressions()) diff --git a/src/main/java/de/neemann/digital/draw/builder/Builder.java b/src/main/java/de/neemann/digital/draw/builder/Builder.java index 5f9caf465..d27760e0e 100644 --- a/src/main/java/de/neemann/digital/draw/builder/Builder.java +++ b/src/main/java/de/neemann/digital/draw/builder/Builder.java @@ -172,6 +172,7 @@ public class Builder { */ public Circuit createCircuit() { createInputBus(); + circuit.setNotModified(); return circuit; } 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 348fda350..38cb1f71e 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Circuit.java +++ b/src/main/java/de/neemann/digital/draw/elements/Circuit.java @@ -383,6 +383,13 @@ public class Circuit { modified = true; } + /** + * Sets this circuits state to not modified + */ + public void setNotModified() { + modified = false; + } + /** * @return true if modified */ diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableFrame.java b/src/main/java/de/neemann/digital/gui/components/table/TableFrame.java index 40902c5de..613aa9dd0 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/TableFrame.java +++ b/src/main/java/de/neemann/digital/gui/components/table/TableFrame.java @@ -8,6 +8,7 @@ import de.neemann.digital.analyse.expression.format.FormatToExpression; import de.neemann.digital.analyse.expression.format.FormatterException; import de.neemann.digital.analyse.expression.modify.ExpressionModifier; import de.neemann.digital.analyse.expression.modify.NAnd; +import de.neemann.digital.analyse.expression.modify.NOr; import de.neemann.digital.draw.builder.Builder; import de.neemann.digital.draw.builder.BuilderException; import de.neemann.digital.draw.elements.Circuit; @@ -133,12 +134,12 @@ public class TableFrame extends JFrame { createCircuit(new NAnd()); } }.setToolTip(Lang.get("menu_table_createNAnd_tt")).createJMenuItem()); -// createMenu.add(new ToolTipAction(Lang.get("menu_table_createNOr")) { -// @Override -// public void actionPerformed(ActionEvent actionEvent) { -// createCircuit(new NOr()); -// } -// }.setToolTip(Lang.get("menu_table_createNOr_tt")).createJMenuItem()); + createMenu.add(new ToolTipAction(Lang.get("menu_table_createNOr")) { + @Override + public void actionPerformed(ActionEvent actionEvent) { + createCircuit(new NOr()); + } + }.setToolTip(Lang.get("menu_table_createNOr_tt")).createJMenuItem()); bar.add(createMenu); diff --git a/src/main/resources/lang/lang_de.properties b/src/main/resources/lang/lang_de.properties index 6ca28f6f4..79838ab82 100644 --- a/src/main/resources/lang/lang_de.properties +++ b/src/main/resources/lang/lang_de.properties @@ -270,6 +270,8 @@ menu_table_create=Model erzeugen menu_table_create_tt=Erzeugt ein Model, welches der Wahrheitstabelle entspricht. menu_table_createNAnd=Model erzeugen mit NAnd menu_table_createNAnd_tt=Erzeugt ein Model, welches der Wahrheitstabelle entspricht nur mit NAnd-Gattern. +menu_table_createNOr=Model erzeugen mit NOr +menu_table_createNOr_tt=Erzeugt ein Model, welches der Wahrheitstabelle entspricht nur mit NOr-Gattern. menu_about=\u00DCber Digital diff --git a/src/main/resources/lang/lang_en.properties b/src/main/resources/lang/lang_en.properties index 45e5e9f49..59382632a 100644 --- a/src/main/resources/lang/lang_en.properties +++ b/src/main/resources/lang/lang_en.properties @@ -250,6 +250,8 @@ menu_table_create=create circuit menu_table_create_tt=Creates a circuit which reproduces the truth table. menu_table_createNAnd=create with NAnd menu_table_createNAnd_tt=Creates a circuit which reproduces the truth table only with NAnd gates. +menu_table_createNOr=create with NOr +menu_table_createNOr_tt=Creates a circuit which reproduces the truth table only with NOr gates. win_saveChanges=Save Changes? win_confirmExit=Confirm Exit!