diff --git a/src/wireviz/wv_dataclasses.py b/src/wireviz/wv_dataclasses.py index d1711c3..b9f2efc 100644 --- a/src/wireviz/wv_dataclasses.py +++ b/src/wireviz/wv_dataclasses.py @@ -311,6 +311,7 @@ class TopLevelGraphicalComponent(GraphicalComponent): # abstract class designator: Designator = None color: Optional[MultiColor] = None image: Optional[Image] = None + additional_parameters: Optional[Dict] = None additional_components: List[AdditionalComponent] = field(default_factory=list) notes: Optional[MultilineHypertext] = None # BOM options diff --git a/src/wireviz/wv_graphviz.py b/src/wireviz/wv_graphviz.py index 74af1ab..ef0de87 100644 --- a/src/wireviz/wv_graphviz.py +++ b/src/wireviz/wv_graphviz.py @@ -62,6 +62,11 @@ def gv_node_component(component: Component) -> Table: str(component.color) if component.color else None, ] + if component.additional_parameters: + line_additional_parameters = nested_table_dict(component.additional_parameters) + else: + line_additional_parameters = [] + if component.color: line_info.extend(colorbar_cells(component.color)) @@ -81,6 +86,7 @@ def gv_node_component(component: Component) -> Table: line_name, line_pn, line_info, + line_additional_parameters, line_ports, line_image, line_image_caption, @@ -215,6 +221,13 @@ def nested_table(lines: List[Td]) -> Table: return tbl +def nested_table_dict(d: dict) -> Table: + rows = [] + for k, v in d.items(): + rows.append(Tr([Td(k, align="left", balign="left", valign="top"), Td(html_line_breaks(v), align="left", balign="left")])) + return Table(rows, border=0, cellborder=1, cellpadding=3, cellspacing=0) + + def gv_pin_table(component) -> Table: pin_rows = [] for pin in component.pin_objects.values():