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

1from tempfile import NamedTemporaryFile 

2 

3import gi 

4from plotly import graph_objects as go 

5 

6gi.require_version("WebKit", "6.0") 

7from gi.repository import WebKit # noqa: E402 

8 

9 

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()) 

16 

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())