diff --git a/README.md b/README.md index c70827b..0d495ec 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Convert graphviz (dot) files into draw.io (mxGraph) format. - [ ] Migrate from Make to GHA for release - [ ] Fix "cb" bug - [x] Add support for clusters +- [x] Add support for edge labels - [ ] Address or triage all open issues - [ ] Merge or close all outstanding PRs - [x] Upgrade to latest pygraphviz diff --git a/graphviz2drawio/mx/MxGraph.py b/graphviz2drawio/mx/MxGraph.py index a114a25..cd688d2 100644 --- a/graphviz2drawio/mx/MxGraph.py +++ b/graphviz2drawio/mx/MxGraph.py @@ -76,11 +76,7 @@ def get_edge_style(self, edge, source_node, target_node): end_arrow = MxConst.DIAMOND start_curve, end_curve = edge.curve_start_end() - - if edge.curve.cb is not None: - curved = 1 - else: - curved = 0 + curved = 1 if edge.curve.cb is not None else 0 style = Styles.EDGE.format( entry_x=target_node.rect.x_ratio(end_curve.real), diff --git a/graphviz2drawio/mx/NodeFactory.py b/graphviz2drawio/mx/NodeFactory.py index 39f7129..2e8321e 100644 --- a/graphviz2drawio/mx/NodeFactory.py +++ b/graphviz2drawio/mx/NodeFactory.py @@ -68,11 +68,13 @@ def from_svg(self, g) -> Node: if "stroke" in polygon.attrib: stroke = polygon.attrib["stroke"] - fill = None - if SVG.has(g, "ellipse"): + fill = g.attrib.get("fill", None) + try: ellipse = SVG.get_first(g, "ellipse") - if "fill" in ellipse.attrib: - fill = ellipse.attrib["fill"] + if ellipse_fill := ellipse.attrib.get("fill"): + fill = ellipse_fill + except IndexError: + pass return Node( sid=g.attrib["id"], diff --git a/test/test_graphs.py b/test/test_graphs.py index ee09984..7f45738 100644 --- a/test/test_graphs.py +++ b/test/test_graphs.py @@ -120,6 +120,7 @@ def test_convnet(): assert elements[-1].attrib["value"] == "$$l_t$$" + def test_multilabel(): file = "test/directed/multilabel.gv.txt" xml = graphviz2drawio.convert(file) @@ -131,6 +132,17 @@ def test_multilabel(): assert elements[-1].attrib["value"] == "c