Skip to content

Commit bf8a7e5

Browse files
committed
jupyter multirender get rid of embedWindow
1 parent b65b189 commit bf8a7e5

File tree

2 files changed

+32
-107
lines changed

2 files changed

+32
-107
lines changed

vedo/backends.py

+20-18
Original file line numberDiff line numberDiff line change
@@ -17,52 +17,51 @@
1717
from vedo.mesh import Mesh
1818
from vedo.volume import Volume
1919

20-
__doc__ = """
21-
Submodule to delegate notebook rendering
22-
"""
20+
__doc__ = """Submodule to delegate notebook rendering"""
2321

2422
__all__ = []
2523

24+
2625
############################################################################################
2726
def get_notebook_backend(actors2show=()):
2827
"""Return the appropriate notebook viewer"""
2928

3029
plt = vedo.plotter_instance
3130

32-
if isinstance(plt.shape, str) or sum(plt.shape) > 2 and vedo.notebook_backend != '2d':
31+
if isinstance(plt.shape, str) or sum(plt.shape) > 2 and settings.default_backend != '2d':
3332
vedo.logger.error(
34-
f"Multirendering is not supported for jupyter backend: {vedo.notebook_backend}"
33+
f"Multirendering is not supported for jupyter backend: {settings.default_backend}"
3534
)
3635

3736
#########################################
38-
if "itk" in vedo.notebook_backend:
37+
if "itk" in settings.default_backend:
3938
return start_itkwidgets(actors2show)
4039

4140
#########################################
42-
elif vedo.notebook_backend == "k3d":
41+
elif settings.default_backend == "k3d":
4342
return start_k3d(actors2show)
4443

4544
#########################################
46-
elif vedo.notebook_backend == "panel":
45+
elif settings.default_backend == "panel":
4746
return start_panel()
4847

4948
#########################################
50-
elif vedo.notebook_backend.startswith("ipyvtk"):
49+
elif settings.default_backend.startswith("ipyvtk"):
5150
return start_ipyvtklink()
5251

5352
#########################################
54-
elif vedo.notebook_backend == "ipygany":
53+
elif settings.default_backend == "ipygany":
5554
return start_ipygany(actors2show)
5655

5756
#########################################
58-
elif vedo.notebook_backend == "2d":
57+
elif settings.default_backend == "2d":
5958
return start_2d()
6059

6160
#########################################
62-
# elif vedo.notebook_backend.startswith("pythree"): #todo
61+
# elif settings.default_backend.startswith("pythree"): #todo
6362
# return start_pythreejs(actors2show)
6463

65-
vedo.logger.error(f"Unknown jupyter backend: {vedo.notebook_backend}")
64+
vedo.logger.error(f"Unknown jupyter backend: {settings.default_backend}")
6665
return None
6766

6867

@@ -72,7 +71,7 @@ def start_itkwidgets(actors2show):
7271
# /blob/master/itkwidgets/widget_viewer.py
7372
try:
7473
from itkwidgets import view
75-
except ModuleNotFoundError("Cannot find itkwidgets"):
74+
except ModuleNotFoundError("Cannot find itkwidgets, try:\n> pip install itkwidgets"):
7675
return None
7776

7877
vedo.notebook_plotter = view(
@@ -90,7 +89,9 @@ def start_k3d(actors2show):
9089
# https://github.com/K3D-tools/K3D-jupyter
9190
try:
9291
import k3d
93-
except ModuleNotFoundError("Cannot find k3d, install with: pip install k3d"):
92+
if str(k3d.__version__) != "2.7.4":
93+
vedo.logger.warning("Only k3d version 2.7.4 is currently supported")
94+
except ModuleNotFoundError("Cannot find k3d, install with: pip install k3d==2.7.4"):
9495
return None
9596

9697
plt = vedo.plotter_instance
@@ -299,7 +300,8 @@ def start_panel():
299300

300301
try:
301302
import panel # https://panel.pyviz.org/reference/panes/VTK.html
302-
except ImportError("panel is not installed"):
303+
panel.extension("vtk")
304+
except ImportError("panel is not installed, try:\n> pip install panel"):
303305
return None
304306

305307
plt = vedo.plotter_instance
@@ -321,7 +323,7 @@ def start_ipyvtklink():
321323

322324
try:
323325
from ipyvtklink.viewer import ViewInteractiveWidget
324-
except ImportError("ipyvtklink is not installed"):
326+
except ImportError("ipyvtklink is not installed, try:\n> pip install ipyvtklink"):
325327
return None
326328

327329
plt = vedo.plotter_instance
@@ -344,7 +346,7 @@ def start_ipygany(actors2show):
344346
from ipygany import PolyMesh, Scene, IsoColor, RGB, Component
345347
from ipygany import Alpha, ColorBar, colormaps, PointCloud
346348
from ipywidgets import FloatRangeSlider, Dropdown, VBox, AppLayout, jslink
347-
except ImportError("ipygany is not installed"):
349+
except ImportError("ipygany is not installed, try:\n> pip install ipygany"):
348350
return None
349351

350352
plt = vedo.plotter_instance

vedo/plotter.py

+12-89
Original file line numberDiff line numberDiff line change
@@ -30,81 +30,6 @@
3030
]
3131

3232

33-
##################################################################################
34-
def _embed_window(backend="ipyvtk"):
35-
# check availability of backend by just returning its name
36-
37-
if backend is None:
38-
return vedo.settings.default_backend ####################
39-
40-
else:
41-
42-
if any(["SPYDER" in name for name in os.environ]):
43-
return "vtk"
44-
45-
try:
46-
get_ipython()
47-
except NameError:
48-
return "vtk"
49-
50-
backend = backend.lower()
51-
52-
if backend == "vtk":
53-
return backend
54-
55-
elif backend == "k3d":
56-
try:
57-
import k3d
58-
if str(k3d.__version__) != "2.7.4":
59-
vedo.logger.warning("Only k3d version 2.7.4 is currently supported")
60-
return backend
61-
62-
except ModuleNotFoundError:
63-
vedo.logger.error("Could not load k3d try:\n> pip install k3d==2.7.4")
64-
print(flush=True)
65-
66-
elif "ipygany" in backend: # ipygany
67-
try:
68-
import ipygany
69-
return backend
70-
except ModuleNotFoundError:
71-
vedo.logger.error("Could not load ipygany try:\n> pip install ipygany")
72-
print(flush=True)
73-
74-
elif "itk" in backend: # itkwidgets
75-
try:
76-
import itkwidgets
77-
return backend
78-
except ModuleNotFoundError:
79-
vedo.logger.error('Could not load itkwidgets try:\n> pip install itkwidgets')
80-
print(flush=True)
81-
82-
elif backend.lower() == "2d":
83-
return backend
84-
85-
elif backend == "panel":
86-
try:
87-
import panel
88-
panel.extension("vtk")
89-
return backend
90-
except ModuleNotFoundError:
91-
vedo.logger.error("Could not load panel try:\n> pip install panel")
92-
93-
elif "ipyvtk" in backend:
94-
try:
95-
from ipyvtklink.viewer import ViewInteractiveWidget
96-
return backend
97-
except ModuleNotFoundError:
98-
vedo.logger.error('Could not load ipyvtklink try:\n> pip install ipyvtklink')
99-
print(flush=True)
100-
101-
else:
102-
vedo.logger.error("Unknown backend" + str(backend))
103-
raise RuntimeError()
104-
105-
return None
106-
107-
10833
########################################################################################################
10934
def show(
11035
*actors,
@@ -131,7 +56,7 @@ def show(
13156
mode=0,
13257
q=False,
13358
new=False,
134-
backend=None,
59+
# backend=None,
13560
):
13661
"""
13762
Create on the fly an instance of class Plotter and show the object(s) provided.
@@ -295,7 +220,7 @@ def show(
295220
offscreen=offscreen,
296221
bg=bg,
297222
bg2=bg2,
298-
backend=backend,
223+
# backend=backend,
299224
)
300225

301226
# use _plt_to_return because plt.show() can return a k3d/panel plot
@@ -444,11 +369,9 @@ def __init__(
444369
offscreen=False,
445370
qt_widget=None,
446371
wx_widget=None,
447-
backend=None,
372+
# backend=None,
448373
):
449374

450-
vedo.notebook_backend = _embed_window(backend)
451-
452375
vedo.plotter_instance = self
453376

454377
if qt_widget is not None:
@@ -513,13 +436,13 @@ def __init__(
513436
self._repeatingtimer_id = None
514437

515438
#####################################################################
516-
if vedo.notebook_backend != 'vtk':
517-
if vedo.notebook_backend == "2d":
439+
if settings.default_backend != 'vtk':
440+
if settings.default_backend == "2d":
518441
self.offscreen = True
519442
if self.size == "auto":
520443
self.size = (800, 600)
521444

522-
elif vedo.notebook_backend == "k3d" or "ipygany" in vedo.notebook_backend:
445+
elif settings.default_backend == "k3d" or "ipygany" in settings.default_backend:
523446
self._interactive = False
524447
self.interactor = None
525448
self.window = None
@@ -804,7 +727,7 @@ def __init__(
804727
return #################
805728
########################
806729

807-
if vedo.notebook_backend == "panel":
730+
if settings.default_backend == "panel":
808731
########################
809732
return #################
810733
########################
@@ -2870,7 +2793,7 @@ def show(
28702793
else:
28712794
self.window.SetSize(int(self.size[0]), int(self.size[1]))
28722795

2873-
if vedo.notebook_backend == 'vtk':
2796+
if settings.default_backend == 'vtk':
28742797
if str(bg).endswith(".hdr"):
28752798
self._add_skybox(bg)
28762799
else:
@@ -2925,8 +2848,8 @@ def show(
29252848
pass
29262849

29272850
# Backend ###############################################################
2928-
if vedo.notebook_backend != 'vtk':
2929-
if vedo.notebook_backend in ["k3d", "ipygany", "itkwidgets"]:
2851+
if settings.default_backend != 'vtk':
2852+
if settings.default_backend in ["k3d", "ipygany", "itkwidgets"]:
29302853
return backends.get_notebook_backend(self.actors)
29312854
#########################################################################
29322855

@@ -2996,7 +2919,7 @@ def show(
29962919
addons.add_global_axes(self.axes)
29972920

29982921
# panel #################################################################
2999-
if vedo.notebook_backend in ["panel", "ipyvtk"]:
2922+
if settings.default_backend in ["panel", "ipyvtk"]:
30002923
return backends.get_notebook_backend()
30012924
#########################################################################
30022925

@@ -3069,7 +2992,7 @@ def show(
30692992
self.window.SetWindowName(self.title)
30702993

30712994
# 2d ####################################################################
3072-
if vedo.notebook_backend == "2d":
2995+
if settings.default_backend == "2d":
30732996
return backends.get_notebook_backend()
30742997
#########################################################################
30752998

0 commit comments

Comments
 (0)