|
1 | | -from paraview.web import venv |
2 | | -from paraview import simple |
| 1 | +from trame.app import TrameApp |
| 2 | +from trame.ui.vuetify3 import SinglePageLayout |
| 3 | +from trame.widgets import vuetify3 as v3 |
| 4 | +from trame.widgets import paraview, client |
| 5 | +from trame.decorators import change |
3 | 6 |
|
4 | 7 | from pathlib import Path |
5 | | -from trame.app import get_server |
6 | | -from trame.widgets import vuetify3, paraview, client |
7 | | -from trame.ui.vuetify3 import SinglePageLayout |
| 8 | + |
| 9 | +from paraview import simple |
8 | 10 |
|
9 | 11 | # ----------------------------------------------------------------------------- |
10 | 12 | # Trame setup |
11 | 13 | # ----------------------------------------------------------------------------- |
12 | 14 |
|
13 | | -server = get_server() |
14 | | -state, ctrl = server.state, server.controller |
| 15 | +class StateLoaderApp(TrameApp): |
| 16 | + |
| 17 | + def __init__(self, server=None): |
| 18 | + super().__init__(server) |
| 19 | + |
| 20 | + # Preload paraview modules onto server |
| 21 | + paraview.initialize(self.server) |
15 | 22 |
|
16 | | -# Preload paraview modules onto server |
17 | | -paraview.initialize(server) |
18 | 23 |
|
19 | 24 | # ----------------------------------------------------------------------------- |
20 | 25 | # ParaView code |
21 | 26 | # ----------------------------------------------------------------------------- |
22 | 27 |
|
23 | 28 |
|
24 | | -def load_data(**kwargs): |
25 | | - # CLI |
26 | | - args, _ = server.cli.parse_known_args() |
| 29 | + def load_data(self, **kwargs): |
| 30 | + # CLI |
| 31 | + args, _ = self.server.cli.parse_known_args() |
27 | 32 |
|
28 | | - full_path = str(Path(args.data).resolve().absolute()) |
29 | | - working_directory = str(Path(args.data).parent.resolve().absolute()) |
| 33 | + full_path = str(Path(args.data).resolve().absolute()) |
| 34 | + working_directory = str(Path(args.data).parent.resolve().absolute()) |
30 | 35 |
|
31 | | - # ParaView |
32 | | - simple.LoadState( |
33 | | - full_path, |
34 | | - data_directory=working_directory, |
35 | | - restrict_to_data_directory=True, |
36 | | - ) |
37 | | - view = simple.GetActiveView() |
38 | | - view.MakeRenderWindowInteractor(True) |
39 | | - simple.Render(view) |
| 36 | + # ParaView |
| 37 | + simple.LoadState( |
| 38 | + full_path, |
| 39 | + data_directory=working_directory, |
| 40 | + restrict_to_data_directory=True, |
| 41 | + ) |
| 42 | + self.view = simple.GetActiveView() |
| 43 | + self.view.MakeRenderWindowInteractor(True) |
| 44 | + simple.Render(self.view) |
40 | 45 |
|
41 | | - # HTML |
42 | | - with SinglePageLayout(server) as layout: |
43 | | - layout.icon.click = ctrl.view_reset_camera |
44 | | - layout.title.set_text("ParaView State Viewer") |
| 46 | + # HTML |
| 47 | + with SinglePageLayout(self.server) as layout: |
| 48 | + layout.icon.click = self.ctrl.view_reset_camera |
| 49 | + layout.title.set_text("ParaView State Viewer") |
45 | 50 |
|
46 | | - with layout.content: |
47 | | - with vuetify3.VContainer(fluid=True, classes="pa-0 fill-height"): |
48 | | - html_view = paraview.VtkRemoteView(view) |
49 | | - ctrl.view_reset_camera = html_view.reset_camera |
50 | | - ctrl.view_update = html_view.update |
| 51 | + with layout.content: |
| 52 | + with v3.VContainer(fluid=True, classes="pa-0 fill-height"): |
| 53 | + html_view = paraview.VtkRemoteView(self.view) |
| 54 | + self.ctrl.view_reset_camera = html_view.reset_camera |
| 55 | + self.ctrl.view_update = html_view.update |
51 | 56 |
|
52 | 57 |
|
53 | | -ctrl.on_server_ready.add(load_data) |
| 58 | + self.ctrl.on_server_ready.add(self.load_data) |
54 | 59 |
|
55 | 60 | # ----------------------------------------------------------------------------- |
56 | 61 | # GUI |
57 | 62 | # ----------------------------------------------------------------------------- |
58 | 63 |
|
59 | | -state.trame__title = "State Viewer" |
| 64 | + def _build_ui(self): |
| 65 | + self.state.trame__title = "State Viewer" |
60 | 66 |
|
61 | | -with SinglePageLayout(server) as layout: |
62 | | - layout.icon.click = ctrl.view_reset_camera |
63 | | - layout.title.set_text("ParaView State Viewer") |
| 67 | + with SinglePageLayout(self.server) as self.ui: |
| 68 | + self.ui.icon.click = self.ctrl.view_reset_camera |
| 69 | + self.ui.title.set_text("ParaView State Viewer") |
64 | 70 |
|
65 | | - with layout.content: |
66 | | - with vuetify3.VContainer(fluid=True, classes="pa-0 fill-height"): |
67 | | - client.Loading("Loading state") |
| 71 | + with self.ui.content: |
| 72 | + with self.vuetify3.VContainer(fluid=True, classes="pa-0 fill-height"): |
| 73 | + client.Loading("Loading state") |
68 | 74 |
|
69 | 75 |
|
70 | 76 | # ----------------------------------------------------------------------------- |
71 | 77 | # Main |
72 | 78 | # ----------------------------------------------------------------------------- |
73 | 79 |
|
| 80 | +def main(): |
| 81 | + app = StateLoaderApp() |
| 82 | + app.server.start() |
| 83 | + |
74 | 84 | if __name__ == "__main__": |
75 | | - server.cli.add_argument("--data", help="Path to state file", dest="data") |
76 | | - server.start() |
| 85 | + main() |
0 commit comments