File: __init__.py

package info (click to toggle)
python-pyvista 0.46.5-8
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 178,808 kB
  • sloc: python: 94,599; sh: 218; makefile: 70
file content (120 lines) | stat: -rw-r--r-- 3,449 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
"""PyVista Trame User Interface.

This module builds a base UI for manipulating a PyVista Plotter.
The UI generated here is the default for rendering in Jupyter
environments and provides a starting point for custom user-built
applications.
"""

from __future__ import annotations

from typing import TYPE_CHECKING
import warnings

from trame.app import get_server

from .vuetify2 import Viewer as Vue2Viewer
from .vuetify3 import Viewer as Vue3Viewer

if TYPE_CHECKING:
    from .base_viewer import BaseViewer

_VIEWERS: dict[str, BaseViewer] = {}
UI_TITLE = 'PyVista'


def get_viewer(plotter, server=None, suppress_rendering=False):
    """Get a Viewer instance for a given Plotter.

    There should be only one Viewer instance per plotter. A Viewer
    can have multiple UI views though.

    Parameters
    ----------
    plotter : pyvista.Plotter
        Plotter to return or create the viewer instance for.

    server : trame.Server, optional
        Current server for Trame application.

    suppress_rendering : bool, default: False
        Suppress rendering on the plotter.

    Returns
    -------
    pyvista.trame.ui.Viewer
        Trame viewer.

    """
    if plotter._id_name in _VIEWERS:
        viewer = _VIEWERS[plotter._id_name]
        if suppress_rendering != plotter.suppress_rendering:
            plotter.suppress_rendering = suppress_rendering
            warnings.warn(
                'Suppress rendering on the plotter is changed to ' + str(suppress_rendering),
                UserWarning,
            )
        return viewer

    if not server:
        server = get_server()
    if server.client_type == 'vue2':
        viewer = Vue2Viewer(plotter, suppress_rendering=suppress_rendering, server=server)
    else:
        viewer = Vue3Viewer(plotter, suppress_rendering=suppress_rendering, server=server)

    _VIEWERS[plotter._id_name] = viewer
    return viewer


def plotter_ui(
    plotter,
    mode=None,
    default_server_rendering=True,
    collapse_menu=False,
    add_menu=True,
    **kwargs,
):
    """Create a UI view for the given Plotter.

    Parameters
    ----------
    plotter : pyvista.Plotter
        Plotter to create the UI for.

    mode : str, default: 'trame'
        The UI view mode. Options are:

        * ``'trame'``: Uses a view that can switch between client and server
          rendering modes.
        * ``'server'``: Uses a view that is purely server rendering.
        * ``'client'``: Uses a view that is purely client rendering (generally
          safe without a virtual frame buffer)

    default_server_rendering : bool, default: True
        Whether to use server-side or client-side rendering on-start when
        using the ``'trame'`` mode.

    collapse_menu : bool, default: False
        Collapse the UI menu (camera controls, etc.) on start.

    add_menu : bool, default: True
        Add a UI controls VCard to the VContainer.

    **kwargs : dict, optional
        Additional keyword arguments are passed to the viewer being created.

    Returns
    -------
    PyVistaRemoteLocalView | PyVistaRemoteView | PyVistaLocalView
        Trame view interface for pyvista.

    """
    viewer = get_viewer(plotter, server=kwargs.get('server'), suppress_rendering=mode == 'client')
    return viewer.ui(
        mode=mode,
        default_server_rendering=default_server_rendering,
        collapse_menu=collapse_menu,
        add_menu=add_menu,
        **kwargs,
    )