Coverage for src/plotly_gtk/webview.py: 0%
23 statements
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-08 21:22 +0000
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-08 21:22 +0000
1from tempfile import NamedTemporaryFile
3import gi
4from plotly import graph_objects as go
6gi.require_version("WebKit", "6.0")
7from gi.repository import WebKit # noqa: E402
10class FigureWebView(WebKit.WebView):
11 def __init__(self, fig, conf=None):
12 super().__init__()
13 self.fig = fig if isinstance(fig, go.Figure) else go.Figure(fig)
14 self.conf = conf
15 self.connect("realize", lambda _: self.refresh())
17 def refresh(self, fig=None):
18 if fig is not None:
19 self.fig = fig
20 file = NamedTemporaryFile(mode="a")
21 config = {"scrollZoom": True, "displaylogo": False}
22 if self.conf is not None:
23 for key in self.conf:
24 config[key] = self.conf[key]
25 with open(file.name, "w") as f:
26 self.fig.write_html(f, config=config)
27 with open(file.name, "r") as f:
28 self.load_html(f.read())