diff --git a/src/wireviz/DataClasses.py b/src/wireviz/DataClasses.py index f3bb3430..31cbce00 100644 --- a/src/wireviz/DataClasses.py +++ b/src/wireviz/DataClasses.py @@ -95,8 +95,8 @@ class Connector: pincount: Optional[int] = None image: Optional[Image] = None notes: Optional[MultilineHypertext] = None - pinlabels: List[Pin] = field(default_factory=list) pins: List[Pin] = field(default_factory=list) + pinlabels: List[Pin] = field(default_factory=list) pincolors: List[Color] = field(default_factory=list) color: Optional[Color] = None show_name: Optional[bool] = None diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 5a8c1728..14a48ad8 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -78,7 +78,10 @@ def connect(self, from_name: str, from_pin: (int, str), via_name: str, via_wire: raise Exception(f'{via_name}:{via_wire} is used for more than one wire.') via_wire = cable.wirelabels.index(via_wire) + 1 # list index starts at 0, wire IDs start at 1 - self.cables[via_name].connect(from_name, from_pin, via_wire, to_name, to_pin) + from_pin_id = self.connectors[from_name].pins.index(from_pin) if from_pin is not None else None + to_pin_id = self.connectors[to_name].pins.index(to_pin) if to_pin is not None else None + + self.cables[via_name].connect(from_name, from_pin_id, via_wire, to_name, to_pin_id) if from_name in self.connectors: self.connectors[from_name].activate_pin(from_pin) if to_name in self.connectors: @@ -135,12 +138,12 @@ def create_graph(self) -> Graph: pinhtml = [] pinhtml.append('') - for pin, pinlabel, pincolor in zip_longest(connector.pins, connector.pinlabels, connector.pincolors): - if connector.hide_disconnected_pins and not connector.visible_pins.get(pin, False): + for pinid, (pinname, pinlabel, pincolor) in enumerate(zip_longest(connector.pins, connector.pinlabels, connector.pincolors)): + if connector.hide_disconnected_pins and not connector.visible_pins.get(pinname, False): continue pinhtml.append(' ') if connector.ports_left: - pinhtml.append(f' ') + pinhtml.append(f' ') if pinlabel: pinhtml.append(f' ') if connector.pincolors: @@ -155,7 +158,7 @@ def create_graph(self) -> Graph: pinhtml.append( ' ') if connector.ports_right: - pinhtml.append(f' ') + pinhtml.append(f' ') pinhtml.append(' ') pinhtml.append('
{pin}{pinname}{pinlabel}{pin}{pinname}
') @@ -303,9 +306,9 @@ def create_graph(self) -> Graph: code_left_2 = f'{cable.name}:w{connection.via_port}:w' dot.edge(code_left_1, code_left_2) if from_connector.show_name: - from_info = [str(connection.from_name), str(connection.from_port)] + from_info = [str(connection.from_name), str(self.connectors[connection.from_name].pins[connection.from_port])] if from_connector.pinlabels: - pinlabel = from_connector.pinlabels[from_connector.pins.index(connection.from_port)] + pinlabel = from_connector.pinlabels[connection.from_port] if pinlabel != '': from_info.append(pinlabel) from_string = ':'.join(from_info) @@ -319,9 +322,9 @@ def create_graph(self) -> Graph: code_right_2 = f'{connection.to_name}{to_port}:w' dot.edge(code_right_1, code_right_2) if to_connector.show_name: - to_info = [str(connection.to_name), str(connection.to_port)] + to_info = [str(connection.to_name), str(self.connectors[connection.to_name].pins[connection.to_port])] if to_connector.pinlabels: - pinlabel = to_connector.pinlabels[to_connector.pins.index(connection.to_port)] + pinlabel = to_connector.pinlabels[connection.to_port] if pinlabel != '': to_info.append(pinlabel) to_string = ':'.join(to_info)