From ce9f1e387a7140baa3d72a90b04d97b8017fd8ca Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 18 Jul 2019 07:26:53 +0200 Subject: [PATCH 1/7] disables "Start Tests" action if model is running. See #284 --- .../java/de/neemann/digital/gui/Main.java | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 733a74c4d..b9660339e 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -134,6 +134,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS private ToolTipAction runToBreakAction; private ToolTipAction showMeasurementDialog; private ToolTipAction showMeasurementGraph; + private ToolTipAction runTests; private File baseFilename; private File filename; @@ -978,7 +979,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS .setToolTip(Lang.get("menu_element_tt")) .setEnabledChain(false); - ToolTipAction runTests = new ToolTipAction(Lang.get("menu_runTests"), ICON_TEST) { + runTests = new ToolTipAction(Lang.get("menu_runTests"), ICON_TEST) { @Override public void actionPerformed(ActionEvent e) { startTests(); @@ -1230,6 +1231,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS showMeasurementDialog.setEnabled(false); showMeasurementGraph.setEnabled(false); runToBreakAction.setEnabled(false); + runTests.setEnabled(true); // keep errors if (circuitComponent.getHighLightStyle() != Style.ERROR) circuitComponent.removeHighLighted(); @@ -1244,6 +1246,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS showMeasurementDialog.setEnabled(true); showMeasurementGraph.setEnabled(true); stoppedState.getAction().setEnabled(true); + runTests.setEnabled(false); if (createAndStartModel(false, ModelEvent.MICROSTEP, null)) circuitComponent.setManualChangeObserver(new MicroStepObserver(model)); } @@ -1251,6 +1254,23 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS stateManager.setActualState(stoppedState); } + private class RunModelState extends State { + @Override + public void enter() { + enter(true, null); + } + + void enter(boolean runRealTime, ModelModifier modelModifier) { + super.enter(); + stoppedState.getAction().setEnabled(true); + showMeasurementDialog.setEnabled(true); + showMeasurementGraph.setEnabled(true); + runTests.setEnabled(false); + if (createAndStartModel(runRealTime, ModelEvent.STEP, modelModifier)) + circuitComponent.setManualChangeObserver(new FullStepObserver(model)); + } + } + private void clearModelDescription() { if (model != null) model.access(() -> model.close()); @@ -1671,23 +1691,6 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS } } - - private class RunModelState extends State { - @Override - public void enter() { - enter(true, null); - } - - void enter(boolean runRealTime, ModelModifier modelModifier) { - super.enter(); - stoppedState.getAction().setEnabled(true); - showMeasurementDialog.setEnabled(true); - showMeasurementGraph.setEnabled(true); - if (createAndStartModel(runRealTime, ModelEvent.STEP, modelModifier)) - circuitComponent.setManualChangeObserver(new FullStepObserver(model)); - } - } - //*********************** // remote interface start //*********************** From fb071de8c4b0acc21abfcf44114ceb6c8dd63a3e Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 19 Jul 2019 08:37:23 +0200 Subject: [PATCH 2/7] Fixed in incorrect style attribute in the svg export. --- .../java/de/neemann/digital/draw/graphics/GraphicSVG.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java b/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java index 3b43c3c84..7159c119a 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java +++ b/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java @@ -180,9 +180,9 @@ public class GraphicSVG implements Graphic { } if (rotateText) - w.write("" + text + "\n"); + w.write("" + text + "\n"); else - w.write("" + text + "\n"); + w.write("" + text + "\n"); } catch (IOException e) { throw new RuntimeException(e); } From 944ca14a0abede2b1326bdb78d06b5f4ae8204eb Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 19 Jul 2019 10:23:08 +0200 Subject: [PATCH 3/7] Uses the correct overline text decoration in svg files, closes #286 --- .../draw/graphics/text/formatter/SVGFormatter.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/graphics/text/formatter/SVGFormatter.java b/src/main/java/de/neemann/digital/draw/graphics/text/formatter/SVGFormatter.java index 4c8b05dbf..d0a506301 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/text/formatter/SVGFormatter.java +++ b/src/main/java/de/neemann/digital/draw/graphics/text/formatter/SVGFormatter.java @@ -40,9 +40,9 @@ public final class SVGFormatter { if (mathMode) return format(d.getContent(), true); else - return "" + format(d.getContent(), true) + ""; + return "" + format(d.getContent(), true) + ""; case OVERLINE: - return '\u00AC' + format(d.getContent(), mathMode); + return "" + format(d.getContent(), mathMode) + ""; default: return format(d.getContent(), mathMode); } @@ -50,9 +50,9 @@ public final class SVGFormatter { Index i = (Index) text; String str = format(i.getVar(), true); if (i.getSubScript() != null) - str += "" + format(i.getSubScript(), mathMode) + ""; + str += "" + format(i.getSubScript(), mathMode) + ""; if (i.getSuperScript() != null) - str += "" + format(i.getSuperScript(), mathMode) + ""; + str += "" + format(i.getSuperScript(), mathMode) + ""; return str; } else if (text instanceof Sentence) { Sentence s = (Sentence) text; From 0bbf5ecda5097f853ec3633c65f400421ccec0ea Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 19 Jul 2019 10:36:58 +0200 Subject: [PATCH 4/7] fixed an overlooked test case --- .../de/neemann/digital/draw/graphics/GraphicSVGIndexTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/de/neemann/digital/draw/graphics/GraphicSVGIndexTest.java b/src/test/java/de/neemann/digital/draw/graphics/GraphicSVGIndexTest.java index 08d20ff4e..0d5285aaa 100644 --- a/src/test/java/de/neemann/digital/draw/graphics/GraphicSVGIndexTest.java +++ b/src/test/java/de/neemann/digital/draw/graphics/GraphicSVGIndexTest.java @@ -14,9 +14,9 @@ public class GraphicSVGIndexTest extends TestCase { GraphicSVGIndex gs = new GraphicSVGIndex(System.out, null, 30); gs.setBoundingBox(new Vector(0, 0), new Vector(30, 30)); - assertEquals("Z0", gs.formatText("Z_0", Style.NORMAL)); + assertEquals("Z0", gs.formatText("Z_0", Style.NORMAL)); assertEquals("<a>", gs.formatText("", Style.NORMAL)); - assertEquals("\u00ACZ", gs.formatText("~Z", Style.NORMAL)); + assertEquals("Z", gs.formatText("~Z", Style.NORMAL)); } } From d30364a42735524c6a422f1dc4ceed5525726704 Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 19 Jul 2019 15:35:44 +0200 Subject: [PATCH 5/7] fixed formatting bug in table result --- .../de/neemann/digital/gui/components/table/TableDialog.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java index de010eccd..a0f3aced5 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java @@ -62,6 +62,8 @@ import java.util.List; import java.util.StringTokenizer; import java.util.prefs.Preferences; +import static de.neemann.digital.draw.graphics.GraphicSVG.escapeXML; + /** * */ @@ -811,6 +813,7 @@ public class TableDialog extends JDialog { @Override public String identifier(String ident) { + ident = escapeXML(ident); int p = ident.indexOf("_"); if (p < 0) return ident; From 00cae2ff767ad1b31f5c1294b24b9dd639a979cc Mon Sep 17 00:00:00 2001 From: hneemann Date: Sat, 20 Jul 2019 08:51:36 +0200 Subject: [PATCH 6/7] fixes #287 --- .../de/neemann/digital/gui/components/CircuitComponent.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java index 555c74f0e..8c736f7ca 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -1168,11 +1168,12 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib } private VisualElement getActualVisualElement() { + if (activeMouseController instanceof MouseControllerMoveElement) + mouseNormal.activate(); + VisualElement ve = null; if (activeMouseController instanceof MouseControllerNormal) ve = getCircuit().getElementAt(getPosVector(lastMousePos.x, lastMousePos.y)); -// if (activeMouseController instanceof MouseControllerMoveElement) -// ve = ((MouseControllerMoveElement) activeMouseController).getVisualElement(); return ve; } From 56e045bfa1f6e6b1a56285caec3460f76d2c99b4 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sat, 20 Jul 2019 09:07:34 +0200 Subject: [PATCH 7/7] fixes #288 --- src/main/java/de/neemann/digital/data/DataPlotter.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/neemann/digital/data/DataPlotter.java b/src/main/java/de/neemann/digital/data/DataPlotter.java index 68f5342d4..0bc49efd6 100644 --- a/src/main/java/de/neemann/digital/data/DataPlotter.java +++ b/src/main/java/de/neemann/digital/data/DataPlotter.java @@ -164,11 +164,11 @@ public class DataPlotter implements Drawable { if (width == 0) width = 1; long value = s.getValue(i).getValue(); int ry; - if (Math.abs(width >>> 1) < Integer.MAX_VALUE) { + long sWidth = (width >>> 32); + if (sWidth == 0) { ry = (int) (SIZE - (SIZE * value) / width); } else { - width = (width >>> 32); - ry = (int) (SIZE - (SIZE * (value >>> 32)) / width); + ry = (int) (SIZE - (SIZE * (value >>> 32)) / sWidth); } if (value != last[i].value)