added option to create only NOr-Gates

This commit is contained in:
hneemann 2016-05-10 12:04:19 +02:00
parent 3ac04cf501
commit d3bd8afe89
7 changed files with 27 additions and 7 deletions

View File

@ -1,6 +1,7 @@
package de.neemann.digital.analyse.expression.modify; package de.neemann.digital.analyse.expression.modify;
import de.neemann.digital.analyse.expression.Expression; import de.neemann.digital.analyse.expression.Expression;
import de.neemann.digital.analyse.expression.Not;
import de.neemann.digital.analyse.expression.Operation; import de.neemann.digital.analyse.expression.Operation;
import java.util.ArrayList; import java.util.ArrayList;
@ -14,7 +15,9 @@ public class NAnd implements ExpressionModifier {
@Override @Override
public Expression modify(Expression expression) { 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<Expression> exp = new ArrayList<>(); ArrayList<Expression> exp = new ArrayList<>();
for (Expression e : ((Operation.Or) expression).getExpressions()) for (Expression e : ((Operation.Or) expression).getExpressions())
exp.add(not(e)); exp.add(not(e));

View File

@ -1,6 +1,7 @@
package de.neemann.digital.analyse.expression.modify; package de.neemann.digital.analyse.expression.modify;
import de.neemann.digital.analyse.expression.Expression; import de.neemann.digital.analyse.expression.Expression;
import de.neemann.digital.analyse.expression.Not;
import de.neemann.digital.analyse.expression.Operation; import de.neemann.digital.analyse.expression.Operation;
import java.util.ArrayList; import java.util.ArrayList;
@ -14,6 +15,9 @@ public class NOr implements ExpressionModifier {
@Override @Override
public Expression modify(Expression expression) { public Expression modify(Expression expression) {
if (expression instanceof Operation.Or) {
return new Not(not(expression));
} else
if (expression instanceof Operation.And) { if (expression instanceof Operation.And) {
ArrayList<Expression> exp = new ArrayList<>(); ArrayList<Expression> exp = new ArrayList<>();
for (Expression e : ((Operation.And) expression).getExpressions()) for (Expression e : ((Operation.And) expression).getExpressions())

View File

@ -172,6 +172,7 @@ public class Builder {
*/ */
public Circuit createCircuit() { public Circuit createCircuit() {
createInputBus(); createInputBus();
circuit.setNotModified();
return circuit; return circuit;
} }

View File

@ -383,6 +383,13 @@ public class Circuit {
modified = true; modified = true;
} }
/**
* Sets this circuits state to not modified
*/
public void setNotModified() {
modified = false;
}
/** /**
* @return true if modified * @return true if modified
*/ */

View File

@ -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.format.FormatterException;
import de.neemann.digital.analyse.expression.modify.ExpressionModifier; import de.neemann.digital.analyse.expression.modify.ExpressionModifier;
import de.neemann.digital.analyse.expression.modify.NAnd; 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.Builder;
import de.neemann.digital.draw.builder.BuilderException; import de.neemann.digital.draw.builder.BuilderException;
import de.neemann.digital.draw.elements.Circuit; import de.neemann.digital.draw.elements.Circuit;
@ -133,12 +134,12 @@ public class TableFrame extends JFrame {
createCircuit(new NAnd()); createCircuit(new NAnd());
} }
}.setToolTip(Lang.get("menu_table_createNAnd_tt")).createJMenuItem()); }.setToolTip(Lang.get("menu_table_createNAnd_tt")).createJMenuItem());
// createMenu.add(new ToolTipAction(Lang.get("menu_table_createNOr")) { createMenu.add(new ToolTipAction(Lang.get("menu_table_createNOr")) {
// @Override @Override
// public void actionPerformed(ActionEvent actionEvent) { public void actionPerformed(ActionEvent actionEvent) {
// createCircuit(new NOr()); createCircuit(new NOr());
// } }
// }.setToolTip(Lang.get("menu_table_createNOr_tt")).createJMenuItem()); }.setToolTip(Lang.get("menu_table_createNOr_tt")).createJMenuItem());
bar.add(createMenu); bar.add(createMenu);

View File

@ -270,6 +270,8 @@ menu_table_create=Model erzeugen
menu_table_create_tt=Erzeugt ein Model, welches der Wahrheitstabelle entspricht. menu_table_create_tt=Erzeugt ein Model, welches der Wahrheitstabelle entspricht.
menu_table_createNAnd=Model erzeugen mit NAnd menu_table_createNAnd=Model erzeugen mit NAnd
menu_table_createNAnd_tt=Erzeugt ein Model, welches der Wahrheitstabelle entspricht nur mit NAnd-Gattern. 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 menu_about=\u00DCber Digital

View File

@ -250,6 +250,8 @@ menu_table_create=create circuit
menu_table_create_tt=Creates a circuit which reproduces the truth table. menu_table_create_tt=Creates a circuit which reproduces the truth table.
menu_table_createNAnd=create with NAnd menu_table_createNAnd=create with NAnd
menu_table_createNAnd_tt=Creates a circuit which reproduces the truth table only with NAnd gates. 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_saveChanges=Save Changes?
win_confirmExit=Confirm Exit! win_confirmExit=Confirm Exit!