improved pin number wizard

This commit is contained in:
hneemann 2017-05-14 13:38:20 +02:00
parent 4a363c9436
commit a8c860b86d
5 changed files with 290 additions and 11 deletions

View File

@ -0,0 +1,268 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes>
<entry>
<string>isDIL</string>
<boolean>true</boolean>
</entry>
<entry>
<string>Description</string>
<string>triple 3-input OR gate</string>
</entry>
<entry>
<string>lockedMode</string>
<boolean>true</boolean>
</entry>
</attributes>
<visualElements>
<visualElement>
<elementName>Or</elementName>
<elementAttributes>
<entry>
<string>Inputs</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="360" y="200"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>1Y</string>
</entry>
<entry>
<string>pinNumber</string>
<int>9</int>
</entry>
</elementAttributes>
<pos x="440" y="220"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>1A</string>
</entry>
<entry>
<string>pinNumber</string>
<int>1</int>
</entry>
</elementAttributes>
<pos x="200" y="200"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>1C</string>
</entry>
<entry>
<string>pinNumber</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="200" y="240"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>1B</string>
</entry>
<entry>
<string>pinNumber</string>
<int>2</int>
</entry>
</elementAttributes>
<pos x="340" y="220"/>
</visualElement>
<visualElement>
<elementName>Or</elementName>
<elementAttributes>
<entry>
<string>Inputs</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="360" y="300"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>2Y</string>
</entry>
<entry>
<string>pinNumber</string>
<int>6</int>
</entry>
</elementAttributes>
<pos x="440" y="320"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>2A</string>
</entry>
<entry>
<string>pinNumber</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="200" y="300"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>2C</string>
</entry>
<entry>
<string>pinNumber</string>
<int>5</int>
</entry>
</elementAttributes>
<pos x="200" y="340"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>2B</string>
</entry>
<entry>
<string>pinNumber</string>
<int>4</int>
</entry>
</elementAttributes>
<pos x="340" y="320"/>
</visualElement>
<visualElement>
<elementName>Or</elementName>
<elementAttributes>
<entry>
<string>Inputs</string>
<int>3</int>
</entry>
</elementAttributes>
<pos x="360" y="400"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>3Y</string>
</entry>
<entry>
<string>pinNumber</string>
<int>10</int>
</entry>
</elementAttributes>
<pos x="440" y="420"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>3A</string>
</entry>
<entry>
<string>pinNumber</string>
<int>11</int>
</entry>
</elementAttributes>
<pos x="200" y="400"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>3C</string>
</entry>
<entry>
<string>pinNumber</string>
<int>13</int>
</entry>
</elementAttributes>
<pos x="200" y="440"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>3B</string>
</entry>
<entry>
<string>pinNumber</string>
<int>12</int>
</entry>
</elementAttributes>
<pos x="340" y="420"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="200" y="240"/>
<p2 x="360" y="240"/>
</wire>
<wire>
<p1 x="420" y="320"/>
<p2 x="440" y="320"/>
</wire>
<wire>
<p1 x="340" y="320"/>
<p2 x="360" y="320"/>
</wire>
<wire>
<p1 x="200" y="400"/>
<p2 x="360" y="400"/>
</wire>
<wire>
<p1 x="420" y="420"/>
<p2 x="440" y="420"/>
</wire>
<wire>
<p1 x="340" y="420"/>
<p2 x="360" y="420"/>
</wire>
<wire>
<p1 x="200" y="340"/>
<p2 x="360" y="340"/>
</wire>
<wire>
<p1 x="200" y="440"/>
<p2 x="360" y="440"/>
</wire>
<wire>
<p1 x="200" y="200"/>
<p2 x="360" y="200"/>
</wire>
<wire>
<p1 x="420" y="220"/>
<p2 x="440" y="220"/>
</wire>
<wire>
<p1 x="340" y="220"/>
<p2 x="360" y="220"/>
</wire>
<wire>
<p1 x="200" y="300"/>
<p2 x="360" y="300"/>
</wire>
</wires>
</circuit>

View File

@ -6,8 +6,10 @@ import de.neemann.digital.core.io.Out;
import de.neemann.digital.draw.elements.VisualElement;
import de.neemann.digital.gui.components.CircuitComponent;
import de.neemann.digital.lang.Lang;
import de.neemann.gui.Screen;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@ -22,15 +24,19 @@ public class NumberingWizard extends JDialog implements CircuitComponent.WizardN
/**
* Creates a new instance
* @param parent the parent frame
*
* @param parent the parent frame
* @param circuitComponent the component used to select the inputs and outputs
*/
public NumberingWizard(JFrame parent, CircuitComponent circuitComponent) {
super(parent, Lang.get("msg_numberingWizard"), false);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.circuitComponent = circuitComponent;
pinNumber = 0;
label = new JLabel("________________");
label = new JLabel();
label.setFont(Screen.getInstance().getFont(1.5f));
int b = Screen.getInstance().getFontSize();
label.setBorder(BorderFactory.createEmptyBorder(b, b, b, b));
setPinNumber(999);
getContentPane().add(label);
addWindowListener(new WindowAdapter() {
@ -40,14 +46,15 @@ public class NumberingWizard extends JDialog implements CircuitComponent.WizardN
}
});
pack();
incPinNumber();
pinNumber = 1;
setPinNumber(pinNumber);
setAlwaysOnTop(true);
setLocation(parent.getLocation());
}
private void incPinNumber() {
pinNumber++;
label.setText(Lang.get("msg_pin_N", pinNumber));
private void setPinNumber(int num) {
label.setText(Lang.get("msg_pin_numbering_N", num));
}
/**
@ -62,8 +69,10 @@ public class NumberingWizard extends JDialog implements CircuitComponent.WizardN
public void notify(VisualElement clicked) {
if (clicked.equalsDescription(In.DESCRIPTION) || clicked.equalsDescription(Out.DESCRIPTION)) {
clicked.getElementAttributes().set(Keys.PINNUMBER, pinNumber);
incPinNumber();
pinNumber++;
setPinNumber(pinNumber);
circuitComponent.hasChanged();
circuitComponent.getCircuit().modified();
}
}

View File

@ -785,7 +785,7 @@ Sind evtl. die Namen der Variablen nicht eindeutig?</string>
Dies vereinfacht die Erzeugung von 74xx Schaltungen.</string>
<string name="menu_numbering">Pinnummerierung</string>
<string name="menu_numbering_tt">Wizard zur einfachen Nummerierung der Pins.</string>
<string name="menu_removePinNumbers">Pin Nummern entfernen.</string>
<string name="menu_removePinNumbers">Pin Nummern entfernen</string>
<string name="menu_removePinNumbers_tt">Alle Pinnummern in der Schaltung werden entfernt.</string>
<string name="message">Digital
@ -842,6 +842,7 @@ Die Icons stammen aus dem Tango Desktop Project.</string>
<string name="msg_speedTestError">Fehler bei der Ausführung des Geschwindigkeitstests!</string>
<string name="msg_pin_N">Pin {0}</string>
<string name="msg_numberingWizard">Nummerierungshilfe</string>
<string name="msg_pin_numbering_N">Wählen Sie Pin {0}:</string>
<string name="ok">Ok</string>
<string name="rot_0"></string>

View File

@ -772,10 +772,11 @@ The names of the variables may not be unique.</string>
<string name="menu_removePrefix">Remove IO-Prefix</string>
<string name="menu_removePrefix_tt">The first character from the inputs and outputs labels are removed.
Is used to simplify the doubling of circuits within a 74xx circuit.</string>
<string name="menu_numbering">Pin Numbering</string>
<string name="menu_numbering">Pin Wizard</string>
<string name="menu_numbering_tt">Wizard to apply pin numbers to the inputs and outputs.</string>
<string name="menu_removePinNumbers">Remove Pin Numbers</string>
<string name="menu_removePinNumbers_tt">Remove all pin numbers in the circuit</string>
<string name="msg_pin_numbering_N">Select pin {0}:</string>
<string name="message">Digital

View File

@ -28,7 +28,7 @@ public class TestExamples extends TestCase {
*/
public void testDistExamples() throws Exception {
File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig");
assertEquals(152, new FileScanner(this::check).scan(examples));
assertEquals(153, new FileScanner(this::check).scan(examples));
assertEquals(74, testCasesInFiles);
}