Search in sources :

Example 6 with VisualElement

use of de.neemann.digital.draw.elements.VisualElement in project Digital by hneemann.

the class ModifyAttribute method modify.

@Override
public void modify(Circuit circuit, ElementLibrary library) {
    VisualElement ve = getVisualElement(circuit);
    ve.getElementAttributes().set(key, value);
}
Also used : VisualElement(de.neemann.digital.draw.elements.VisualElement)

Example 7 with VisualElement

use of de.neemann.digital.draw.elements.VisualElement in project Digital by hneemann.

the class ModifyAttributes method modify.

@Override
public void modify(Circuit circuit, ElementLibrary library) {
    VisualElement ve = getVisualElement(circuit);
    ve.getElementAttributes().getValuesFrom(attributes);
}
Also used : VisualElement(de.neemann.digital.draw.elements.VisualElement)

Example 8 with VisualElement

use of de.neemann.digital.draw.elements.VisualElement in project Digital by hneemann.

the class TestInGUI method testShortcutsPlusMinus.

public void testShortcutsPlusMinus() {
    new GuiTester().mouseMove(100 + SIZE * 2, 100 + SIZE * 2).add(new GuiTester.WindowCheck<>(Main.class, (gt, main) -> {
        final CircuitComponent cc = main.getCircuitComponent();
        final VisualElement ve = new VisualElement(And.DESCRIPTION.getName()).setShapeFactory(cc.getLibrary().getShapeFactory());
        cc.setPartToInsert(ve);
    })).mouseClick(InputEvent.BUTTON1_MASK).mouseMove(100, 100).press("PLUS").press("PLUS").add(new GuiTester.WindowCheck<>(Main.class, (gt, main) -> {
        final Circuit c = main.getCircuitComponent().getCircuit();
        assertEquals(1, c.getElements().size());
        assertEquals(4, (int) c.getElements().get(0).getElementAttributes().get(Keys.INPUT_COUNT));
    })).press("MINUS").press("MINUS").add(new GuiTester.WindowCheck<>(Main.class, (gt, main) -> {
        final Circuit c = main.getCircuitComponent().getCircuit();
        assertEquals(1, c.getElements().size());
        assertEquals(2, (int) c.getElements().get(0).getElementAttributes().get(Keys.INPUT_COUNT));
    })).execute();
}
Also used : InputEvent(java.awt.event.InputEvent) Wire(de.neemann.digital.draw.elements.Wire) Signal(de.neemann.digital.core.Signal) SIZE(de.neemann.digital.draw.shapes.GenericShape.SIZE) In(de.neemann.digital.core.io.In) de.neemann.digital.gui.components(de.neemann.digital.gui.components) TestCaseElement(de.neemann.digital.testing.TestCaseElement) GraphicMinMax(de.neemann.digital.draw.graphics.GraphicMinMax) TableDialog(de.neemann.digital.gui.components.table.TableDialog) ArrayList(java.util.ArrayList) Expression(de.neemann.digital.analyse.expression.Expression) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) KarnaughMapDialog(de.neemann.digital.gui.components.karnaugh.KarnaughMapDialog) ElementTypeDescription(de.neemann.digital.core.element.ElementTypeDescription) VisualElement(de.neemann.digital.draw.elements.VisualElement) AllSolutionsDialog(de.neemann.digital.gui.components.table.AllSolutionsDialog) ErrorMessage(de.neemann.gui.ErrorMessage) Main(de.neemann.digital.gui.Main) TestCase(junit.framework.TestCase) Style(de.neemann.digital.draw.graphics.Style) External(de.neemann.digital.core.extern.External) KarnaughMapComponent(de.neemann.digital.gui.components.karnaugh.KarnaughMapComponent) GraphDialog(de.neemann.digital.gui.components.data.GraphDialog) ExpressionListenerStore(de.neemann.digital.gui.components.table.ExpressionListenerStore) TableModel(javax.swing.table.TableModel) Keys(de.neemann.digital.core.element.Keys) SIZE2(de.neemann.digital.draw.shapes.GenericShape.SIZE2) ROM(de.neemann.digital.core.memory.ROM) IOException(java.io.IOException) Lang(de.neemann.digital.lang.Lang) MouseEvent(java.awt.event.MouseEvent) File(java.io.File) TESTDATA(de.neemann.digital.testing.TestCaseElement.TESTDATA) Circuit(de.neemann.digital.draw.elements.Circuit) NumberingWizard(de.neemann.digital.gui.NumberingWizard) Settings(de.neemann.digital.gui.Settings) java.awt(java.awt) ValueTableDialog(de.neemann.digital.gui.components.testing.ValueTableDialog) List(java.util.List) Out(de.neemann.digital.core.io.Out) And(de.neemann.digital.core.basic.And) Driver(de.neemann.digital.core.wiring.Driver) TestCaseDescription(de.neemann.digital.testing.TestCaseDescription) Vector(de.neemann.digital.draw.graphics.Vector) ElementLibrary(de.neemann.digital.draw.library.ElementLibrary) javax.swing(javax.swing) VisualElement(de.neemann.digital.draw.elements.VisualElement) Circuit(de.neemann.digital.draw.elements.Circuit) Main(de.neemann.digital.gui.Main)

Example 9 with VisualElement

use of de.neemann.digital.draw.elements.VisualElement in project Digital by hneemann.

the class TestInGUI method test74xxFunctions.

public void test74xxFunctions() {
    new GuiTester("dig/manualError/10_74xx.dig").press("F10").press("RIGHT", 2).press("DOWN", 4).press("RIGHT").press("DOWN", 2).press("ENTER").add(new ClickInputsAndOutputs()).press("ESCAPE").add(new GuiTester.WindowCheck<>(Main.class, (guiTester, main) -> {
        final CircuitComponent cc = main.getCircuitComponent();
        ArrayList<VisualElement> el = cc.getCircuit().getElements();
        int n = 0;
        for (VisualElement ve : el) if (ve.equalsDescription(In.DESCRIPTION) || ve.equalsDescription(Out.DESCRIPTION)) {
            n++;
            assertEquals("" + n, ve.getElementAttributes().get(Keys.PINNUMBER));
        }
    })).add(new SelectAll()).press("F10").press("RIGHT", 2).press("DOWN", 5).press("RIGHT").press("ENTER").type("U").press("ENTER").add(new PinNameChecker("UC")).press("F10").press("RIGHT", 2).press("DOWN", 5).press("RIGHT").press("DOWN").press("ENTER").add(new PinNameChecker("C")).press("F10").press("RIGHT", 2).press("DOWN", 5).press("RIGHT").press("DOWN", 3).press("ENTER").add(new GuiTester.WindowCheck<>(Main.class, (guiTester, main) -> {
        final CircuitComponent cc = main.getCircuitComponent();
        ArrayList<VisualElement> el = cc.getCircuit().getElements();
        for (VisualElement ve : el) if (ve.equalsDescription(In.DESCRIPTION) || ve.equalsDescription(Out.DESCRIPTION))
            assertEquals("", ve.getElementAttributes().get(Keys.PINNUMBER));
    })).press("F10").press("RIGHT", 2).press("DOWN", 5).press("RIGHT").press("DOWN", 4).press("ENTER").mouseClick(InputEvent.BUTTON1_MASK).add(new GuiTester.WindowCheck<>(Main.class, (gt, main) -> assertEquals(7, main.getCircuitComponent().getCircuit().getElements().size()))).execute();
}
Also used : InputEvent(java.awt.event.InputEvent) Wire(de.neemann.digital.draw.elements.Wire) Signal(de.neemann.digital.core.Signal) SIZE(de.neemann.digital.draw.shapes.GenericShape.SIZE) In(de.neemann.digital.core.io.In) de.neemann.digital.gui.components(de.neemann.digital.gui.components) TestCaseElement(de.neemann.digital.testing.TestCaseElement) GraphicMinMax(de.neemann.digital.draw.graphics.GraphicMinMax) TableDialog(de.neemann.digital.gui.components.table.TableDialog) ArrayList(java.util.ArrayList) Expression(de.neemann.digital.analyse.expression.Expression) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) KarnaughMapDialog(de.neemann.digital.gui.components.karnaugh.KarnaughMapDialog) ElementTypeDescription(de.neemann.digital.core.element.ElementTypeDescription) VisualElement(de.neemann.digital.draw.elements.VisualElement) AllSolutionsDialog(de.neemann.digital.gui.components.table.AllSolutionsDialog) ErrorMessage(de.neemann.gui.ErrorMessage) Main(de.neemann.digital.gui.Main) TestCase(junit.framework.TestCase) Style(de.neemann.digital.draw.graphics.Style) External(de.neemann.digital.core.extern.External) KarnaughMapComponent(de.neemann.digital.gui.components.karnaugh.KarnaughMapComponent) GraphDialog(de.neemann.digital.gui.components.data.GraphDialog) ExpressionListenerStore(de.neemann.digital.gui.components.table.ExpressionListenerStore) TableModel(javax.swing.table.TableModel) Keys(de.neemann.digital.core.element.Keys) SIZE2(de.neemann.digital.draw.shapes.GenericShape.SIZE2) ROM(de.neemann.digital.core.memory.ROM) IOException(java.io.IOException) Lang(de.neemann.digital.lang.Lang) MouseEvent(java.awt.event.MouseEvent) File(java.io.File) TESTDATA(de.neemann.digital.testing.TestCaseElement.TESTDATA) Circuit(de.neemann.digital.draw.elements.Circuit) NumberingWizard(de.neemann.digital.gui.NumberingWizard) Settings(de.neemann.digital.gui.Settings) java.awt(java.awt) ValueTableDialog(de.neemann.digital.gui.components.testing.ValueTableDialog) List(java.util.List) Out(de.neemann.digital.core.io.Out) And(de.neemann.digital.core.basic.And) Driver(de.neemann.digital.core.wiring.Driver) TestCaseDescription(de.neemann.digital.testing.TestCaseDescription) Vector(de.neemann.digital.draw.graphics.Vector) ElementLibrary(de.neemann.digital.draw.library.ElementLibrary) javax.swing(javax.swing) ArrayList(java.util.ArrayList) VisualElement(de.neemann.digital.draw.elements.VisualElement) Main(de.neemann.digital.gui.Main)

Example 10 with VisualElement

use of de.neemann.digital.draw.elements.VisualElement in project Digital by hneemann.

the class TestLib method check.

private void check(File dig) throws PinException, NodeException, ElementNotFoundException, IOException {
    Circuit circuit = new ToBreakRunner(dig).getCircuit();
    boolean is74xx = dig.getPath().contains("74xx") && !dig.getName().endsWith("-inc.dig");
    if (is74xx) {
        assertTrue("is not DIL", circuit.getAttributes().get(Keys.IS_DIL));
        count74xx++;
    }
    assertTrue("is not locked", circuit.getAttributes().get(Keys.LOCKED_MODE));
    final String descr = circuit.getAttributes().get(Keys.DESCRIPTION);
    assertTrue("missing description", descr.length() > 0);
    File f = descrMap.get(descr);
    if (f != null)
        fail("duplicate description '" + descr + "' in " + f + " and " + dig);
    descrMap.put(descr, dig);
    PinChecker pc = new PinChecker(is74xx);
    for (VisualElement e : circuit.getElements()) {
        if (e.equalsDescription(In.DESCRIPTION))
            pc.checkPin(e);
        if (e.equalsDescription(Out.DESCRIPTION))
            pc.checkPin(e);
        if (e.equalsDescription(Clock.DESCRIPTION))
            pc.checkPin(e);
        if (e.equalsDescription(ROM.DESCRIPTION) || e.equalsDescription(EEPROM.DESCRIPTION))
            assertEquals("*", e.getElementAttributes().getLabel());
    }
    if (is74xx) {
        assertTrue("GND is missing", pc.isGND);
        assertTrue("VCC is missing", pc.isVCC);
    }
}
Also used : Circuit(de.neemann.digital.draw.elements.Circuit) VisualElement(de.neemann.digital.draw.elements.VisualElement) File(java.io.File)

Aggregations

VisualElement (de.neemann.digital.draw.elements.VisualElement)25 Vector (de.neemann.digital.draw.graphics.Vector)11 Wire (de.neemann.digital.draw.elements.Wire)8 Circuit (de.neemann.digital.draw.elements.Circuit)7 ElementLibrary (de.neemann.digital.draw.library.ElementLibrary)5 ElementTypeDescription (de.neemann.digital.core.element.ElementTypeDescription)4 TestCaseDescription (de.neemann.digital.testing.TestCaseDescription)4 File (java.io.File)4 ElementAttributes (de.neemann.digital.core.element.ElementAttributes)3 Main (de.neemann.digital.gui.Main)3 ExpressionListenerStore (de.neemann.digital.gui.components.table.ExpressionListenerStore)3 ToBreakRunner (de.neemann.digital.integration.ToBreakRunner)3 ErrorMessage (de.neemann.gui.ErrorMessage)3 IOException (java.io.IOException)3 Expression (de.neemann.digital.analyse.expression.Expression)2 Signal (de.neemann.digital.core.Signal)2 And (de.neemann.digital.core.basic.And)2 Keys (de.neemann.digital.core.element.Keys)2 External (de.neemann.digital.core.extern.External)2 In (de.neemann.digital.core.io.In)2