diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index a3aa0ce..25ef770 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -246,25 +246,56 @@ class Harness: # connections for connection_color in cable.connections: if isinstance(connection_color.via_port, int): # check if it's an actual wire and not a shield - dot.attr('edge', color=':'.join(['#000000'] + wv_colors.get_color_hex(cable.colors[connection_color.via_port - 1], pad=pad) + ['#000000'])) + colors = wv_colors.get_color_hex(cable.colors[connection_color.via_port - 1]) + isShield=False + #dot.attr('edge', color=':'.join(['#000000'] + wv_colors.get_color_hex(cable.colors[connection_color.via_port - 1], pad=pad) + ['#000000'])) else: # it's a shield connection # shield is shown as a thin tinned wire - dot.attr('edge', color=':'.join(['#000000', wv_colors.get_color_hex('SN', pad=False)[0], '#000000'])) - if connection_color.from_port is not None: # connect to left + colors = wv_colors.get_color_hex('SN', pad=False) + isShield=True + #dot.attr('edge', color=':'.join(['#000000', wv_colors.get_color_hex('SN', pad=False)[0], '#000000'])) + + + leftConn = connection_color.from_port is not None + rightConn = connection_color.to_port is not None + + + if leftConn: # connect to left from_port = f':p{connection_color.from_port}r' if self.connectors[connection_color.from_name].style != 'simple' else '' code_left_1 = f'{connection_color.from_name}{from_port}:e' code_left_2 = f'{cable.name}:w{connection_color.via_port}:w' - dot.edge(code_left_1, code_left_2) from_string = f'{connection_color.from_name}:{connection_color.from_port}' if self.connectors[connection_color.from_name].show_name else '' html = html.replace(f'', from_string) - if connection_color.to_port is not None: # connect to right + + if rightConn: # connect to right code_right_1 = f'{cable.name}:w{connection_color.via_port}:e' to_port = f':p{connection_color.to_port}l' if self.connectors[connection_color.to_name].style != 'simple' else '' code_right_2 = f'{connection_color.to_name}{to_port}:w' - dot.edge(code_right_1, code_right_2) to_string = f'{connection_color.to_name}:{connection_color.to_port}' if self.connectors[connection_color.to_name].show_name else '' html = html.replace(f'', to_string) + #black cable borders + if not isShield: + dot.attr('edge', style="solid", penwidth="6.0", color='#000000') + if leftConn: + dot.edge(code_left_1, code_left_2) + if rightConn: + dot.edge(code_right_1, code_right_2) + + #invis cable to break graphviz edge ordering + dot.attr('edge', style='invis') + if leftConn: + dot.edge (connection_color.from_name, cable.name) + if rightConn: + dot.edge (cable.name, connection_color.to_name) + + #cable color + dot.attr('edge', style="solid", penwidth="2.0", color=colors[0]) + if leftConn: + dot.edge(code_left_1, code_left_2) + if rightConn: + dot.edge(code_right_1, code_right_2) + dot.node(cable.name, label=f'<{html}>', shape='box', style='filled,dashed' if cable.category == 'bundle' else '', margin='0', fillcolor='white') diff --git a/src/wireviz/wv_colors.py b/src/wireviz/wv_colors.py index 4157543..f5c47c0 100644 --- a/src/wireviz/wv_colors.py +++ b/src/wireviz/wv_colors.py @@ -104,11 +104,11 @@ color_default = '#ffffff' def get_color_hex(input, pad=False): if input is None or input == '': return [color_default] - if len(input) == 4: # give wires with EXACTLY 2 colors that striped/banded look - input = input + input[:2] + #if len(input) == 4: # give wires with EXACTLY 2 colors that striped/banded look + # input = input + input[:2] # hacky style fix: give single color wires a triple-up so that wires are the same size - if pad and len(input) == 2: - input = input + input + input + #if pad and len(input) == 2: + # input = input + input + input try: output = [_color_hex[input[i:i + 2]] for i in range(0, len(input), 2)] except KeyError: