X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodeladapter%2FViewLogicModelAdapter.java;h=193e2407ea6f3c7d05a3fc0900a690c1e07a74e1;hb=7702db6385636023a6936fee049aa78164cf62ee;hp=8c478ae08e961ddb6e6f5b70486d924d38d83c19;hpb=27e409f74763ec63f931d7afdea78420973d6a37;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java index 8c478ae0..193e2407 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java @@ -72,9 +72,9 @@ public class ViewLogicModelAdapter if (guiComp instanceof SubmodelComponent) { SubmodelComponent guiCompCasted = (SubmodelComponent) guiComp; - Map supermodelPinsPerSubmodelPin = guiCompCasted.getSupermodelPinsPerSubmodelPin(); - Map externalWiresForSubmodel = supermodelPinsPerSubmodelPin.entrySet().stream() - .collect(Collectors.toMap(Entry::getKey, e -> logicWiresPerPin.get(e.getValue()))); + Map supermodelPins = guiCompCasted.getSupermodelPins(); + Map externalWiresForSubmodel = supermodelPins.entrySet().stream() + .collect(Collectors.toMap(e -> guiCompCasted.getSubmodelPin(e.getKey()), e -> logicWiresPerPin.get(e.getValue()))); convert(guiCompCasted.submodel, params, timeline, externalWiresForSubmodel); } else if (guiComp instanceof WireCrossPoint) { @@ -114,8 +114,11 @@ public class ViewLogicModelAdapter if (externalWireCandidate != null) if (externalWire == null) externalWire = externalWireCandidate; + else if (externalWire.length == externalWireCandidate.length) + Wire.fuse(externalWire, externalWireCandidate); else - throw new IllegalArgumentException("Two pins to external wires can't be connected directly"); + throw new IllegalArgumentException( + "Two pins to external wires with different logicWidths can't be connected directly"); } return externalWire == null ? new Wire(timeline, e.getKey().logicWidth, params.wireTravelTime) : externalWire; }));