diff --git a/00_setup/app.py b/00_setup/app.py index e670ab0..5f21638 100644 --- a/00_setup/app.py +++ b/00_setup/app.py @@ -1,22 +1,29 @@ -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout # ----------------------------------------------------------------------------- # Get a server to work with # ----------------------------------------------------------------------------- -server = get_server() +class App(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() # ----------------------------------------------------------------------------- # GUI # ----------------------------------------------------------------------------- - -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app = App() + app.server.start() + if __name__ == "__main__": - server.start() + main() \ No newline at end of file diff --git a/01_vtk/app_cone.py b/01_vtk/app_cone.py index e670ab0..5c7a232 100644 --- a/01_vtk/app_cone.py +++ b/01_vtk/app_cone.py @@ -1,22 +1,29 @@ -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout # ----------------------------------------------------------------------------- # Get a server to work with # ----------------------------------------------------------------------------- -server = get_server() +class AppCone(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() # ----------------------------------------------------------------------------- # GUI # ----------------------------------------------------------------------------- - -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app = AppCone() + app.server.start() + if __name__ == "__main__": - server.start() + main() \ No newline at end of file diff --git a/01_vtk/app_flow.py b/01_vtk/app_flow.py index 87f92ad..f07d7db 100644 --- a/01_vtk/app_flow.py +++ b/01_vtk/app_flow.py @@ -1,6 +1,6 @@ -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout -from trame.widgets import vtk, vuetify3 +from trame.widgets import vtk, vuetify3 as v3 from vtkmodules.vtkFiltersSources import vtkConeSource from vtkmodules.vtkRenderingCore import ( @@ -44,23 +44,29 @@ # Trame # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class AppFlow(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") - - with layout.content: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - view = vtk.VtkLocalView(renderWindow) + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") + with self.ui.content: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + view = vtk.VtkLocalView(renderWindow) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app_flow = AppFlow() + app_flow.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/01_vtk/solution_cone.py b/01_vtk/solution_cone.py index 8c2ae2f..b5035e8 100644 --- a/01_vtk/solution_cone.py +++ b/01_vtk/solution_cone.py @@ -1,6 +1,6 @@ -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout -from trame.widgets import vtk, vuetify3 +from trame.widgets import vtk, vuetify3 as v3 from vtkmodules.vtkFiltersSources import vtkConeSource from vtkmodules.vtkRenderingCore import ( @@ -44,24 +44,31 @@ # Trame # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class AppCone(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") - with layout.content: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - html_view = vtk.VtkLocalView(renderWindow) - ctrl.on_server_ready.add(html_view.update) + with self.ui.content: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + html_view = vtk.VtkLocalView(renderWindow) + self.ctrl.on_server_ready.add(html_view.update) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app = AppCone() + app.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/01_vtk/solution_flow.py b/01_vtk/solution_flow.py index 8dcf2f8..fc54a51 100644 --- a/01_vtk/solution_flow.py +++ b/01_vtk/solution_flow.py @@ -1,7 +1,7 @@ import os -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout -from trame.widgets import vtk, vuetify3 +from trame.widgets import vtk, vuetify3 as v3 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonCore import vtkLookupTable @@ -127,23 +127,30 @@ # GUI # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class AppFlow(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") - with layout.content: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - view = vtk.VtkLocalView(renderWindow) + with self.ui.content: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + view = vtk.VtkLocalView(renderWindow) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app_flow = AppFlow() + app_flow.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/01_vtk/solution_ray_cast.py b/01_vtk/solution_ray_cast.py index e3b1cab..19f6efd 100644 --- a/01_vtk/solution_ray_cast.py +++ b/01_vtk/solution_ray_cast.py @@ -2,9 +2,9 @@ # Web imports import os -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout -from trame.widgets import vtk, vuetify3 +from trame.widgets import vtk, vuetify3 as v3 # ----------------------------------------------------------------------------- # Example: SimpleRayCast @@ -97,24 +97,30 @@ # Web Application setup # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class RayCastApp(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") - - with layout.content: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - view = vtk.VtkRemoteView(renWin) - # view = vtk.VtkLocalView(renWin) + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") + with self.ui.content: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + view = vtk.VtkRemoteView(renWin) + # view = vtk.VtkLocalView(renWin) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app_ray_cast = RayCastApp() + app_ray_cast.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/02_layouts/app_cone.py b/02_layouts/app_cone.py index 87f92ad..b5035e8 100644 --- a/02_layouts/app_cone.py +++ b/02_layouts/app_cone.py @@ -1,6 +1,6 @@ -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout -from trame.widgets import vtk, vuetify3 +from trame.widgets import vtk, vuetify3 as v3 from vtkmodules.vtkFiltersSources import vtkConeSource from vtkmodules.vtkRenderingCore import ( @@ -44,23 +44,31 @@ # Trame # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class AppCone(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") - with layout.content: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - view = vtk.VtkLocalView(renderWindow) + with self.ui.content: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + html_view = vtk.VtkLocalView(renderWindow) + self.ctrl.on_server_ready.add(html_view.update) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app = AppCone() + app.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/02_layouts/solution_FullScreenPage.py b/02_layouts/solution_FullScreenPage.py index 355be2c..aa12ca5 100644 --- a/02_layouts/solution_FullScreenPage.py +++ b/02_layouts/solution_FullScreenPage.py @@ -1,6 +1,6 @@ -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import VAppLayout -from trame.widgets import vtk, vuetify3 +from trame.widgets import vtk, vuetify3 as v3 from vtkmodules.vtkFiltersSources import vtkConeSource from vtkmodules.vtkRenderingCore import ( @@ -44,20 +44,29 @@ # Trame # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class AppCone(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() + + def _build_ui(self): + with VAppLayout(self.server) as self.ui: + with self.ui.root: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + view = vtk.VtkLocalView(renderWindow) + self.ctrl.on_server_ready.add(view.update) -with VAppLayout(server) as layout: - with layout.root: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - view = vtk.VtkLocalView(renderWindow) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app = AppCone() + app.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/02_layouts/solution_SinglePage.py b/02_layouts/solution_SinglePage.py index d297a33..cd8c9f3 100644 --- a/02_layouts/solution_SinglePage.py +++ b/02_layouts/solution_SinglePage.py @@ -1,6 +1,6 @@ -from trame.app import get_server +from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout -from trame.widgets import vtk, vuetify3 +from trame.widgets import vtk, vuetify3 as v3 from vtkmodules.vtkFiltersSources import vtkConeSource from vtkmodules.vtkRenderingCore import ( @@ -44,22 +44,31 @@ # Trame # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class AppCone(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() -with SinglePageLayout(server) as layout: - layout.title.set_text("Hello trame") + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") + + with self.ui.content: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + view = vtk.VtkLocalView(renderWindow) + self.ctrl.on_server_ready.add(view.update) - with layout.content: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - view = vtk.VtkLocalView(renderWindow) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app = AppCone() + app.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/02_layouts/solution_SinglePageWithDrawer.py b/02_layouts/solution_SinglePageWithDrawer.py index d06b753..cd8c9f3 100644 --- a/02_layouts/solution_SinglePageWithDrawer.py +++ b/02_layouts/solution_SinglePageWithDrawer.py @@ -1,6 +1,6 @@ -from trame.app import get_server -from trame.ui.vuetify3 import SinglePageWithDrawerLayout -from trame.widgets import vtk, vuetify3 +from trame.app import TrameApp +from trame.ui.vuetify3 import SinglePageLayout +from trame.widgets import vtk, vuetify3 as v3 from vtkmodules.vtkFiltersSources import vtkConeSource from vtkmodules.vtkRenderingCore import ( @@ -44,23 +44,31 @@ # Trame # ----------------------------------------------------------------------------- -server = get_server() -ctrl = server.controller +class AppCone(TrameApp): + def __init__(self, server=None): + super().__init__(server) + self._build_ui() -with SinglePageWithDrawerLayout(server) as layout: - layout.title.set_text("Hello trame") + def _build_ui(self): + with SinglePageLayout(self.server) as self.ui: + self.ui.title.set_text("Hello trame") - with layout.content: - with vuetify3.VContainer( - fluid=True, - classes="pa-0 fill-height", - ): - view = vtk.VtkLocalView(renderWindow) + with self.ui.content: + with v3.VContainer( + fluid=True, + classes="pa-0 fill-height", + ): + view = vtk.VtkLocalView(renderWindow) + self.ctrl.on_server_ready.add(view.update) # ----------------------------------------------------------------------------- # Main # ----------------------------------------------------------------------------- +def main(): + app = AppCone() + app.server.start() + if __name__ == "__main__": - server.start() + main() diff --git a/04_application/app.py b/04_application/app.py index fc59b01..78454d5 100644 --- a/04_application/app.py +++ b/04_application/app.py @@ -3,8 +3,7 @@ from trame.app import TrameApp from trame.ui.vuetify3 import SinglePageLayout from trame.widgets import vuetify3 as v3 -from trame.widgets import vtk, trame -from trame.decorators import change +from trame.widgets import vtk from vtkmodules.vtkRenderingCore import ( vtkActor, diff --git a/04_application/solution.py b/04_application/solution.py index 71e79cc..f27c1c0 100644 --- a/04_application/solution.py +++ b/04_application/solution.py @@ -279,59 +279,59 @@ def visibility_change(self, event): @change("mesh_representation") - def update_mesh_representation(self, mesh_representation, **kwargs): + def update_mesh_representation(self, mesh_representation, **_kwargs): update_representation(mesh_actor, mesh_representation) self.ctrl.view_update() @change("contour_representation") - def update_contour_representation(self, contour_representation, **kwargs): + def update_contour_representation(self, contour_representation, **_kwargs): update_representation(contour_actor, contour_representation) self.ctrl.view_update() @change("mesh_color_array_idx") - def update_mesh_color_by_name(self, mesh_color_array_idx, **kwargs): + def update_mesh_color_by_name(self, mesh_color_array_idx, **_kwargs): array = dataset_arrays[mesh_color_array_idx] color_by_array(mesh_actor, array) self.ctrl.view_update() @change("contour_color_array_idx") - def update_contour_color_by_name(self, contour_color_array_idx, **kwargs): + def update_contour_color_by_name(self, contour_color_array_idx, **_kwargs): array = dataset_arrays[contour_color_array_idx] color_by_array(contour_actor, array) self.ctrl.view_update() @change("mesh_color_preset") - def update_mesh_color_preset(self, mesh_color_preset, **kwargs): + def update_mesh_color_preset(self, mesh_color_preset, **_kwargs): use_preset(mesh_actor, mesh_color_preset) self.ctrl.view_update() @change("contour_color_preset") - def update_contour_color_preset(self, contour_color_preset, **kwargs): + def update_contour_color_preset(self, contour_color_preset, **_kwargs): use_preset(contour_actor, contour_color_preset) self.ctrl.view_update() # Opacity Callbacks @change("mesh_opacity") - def update_mesh_opacity(self, mesh_opacity, **kwargs): + def update_mesh_opacity(self, mesh_opacity, **_kwargs): mesh_actor.GetProperty().SetOpacity(mesh_opacity) self.ctrl.view_update() @change("contour_opacity") - def update_contour_opacity(self, contour_opacity, **kwargs): + def update_contour_opacity(self, contour_opacity, **_kwargs): contour_actor.GetProperty().SetOpacity(contour_opacity) self.ctrl.view_update() # Contour Callbacks @change("contour_by_array_idx") - def update_contour_by(self, contour_by_array_idx, **kwargs): + def update_contour_by(self, contour_by_array_idx, **_kwargs): array = dataset_arrays[contour_by_array_idx] contour_min, contour_max = array.get("range") contour_step = 0.01 * (contour_max - contour_min) @@ -350,7 +350,7 @@ def update_contour_by(self, contour_by_array_idx, **kwargs): @change("contour_value") - def update_contour_value(self, contour_value, **kwargs): + def update_contour_value(self, contour_value, **_kwargs): contour.SetValue(0, float(contour_value)) self.ctrl.view_update() diff --git a/05_paraview/SimpleCone.py b/05_paraview/SimpleCone.py index be2b086..9a2d470 100644 --- a/05_paraview/SimpleCone.py +++ b/05_paraview/SimpleCone.py @@ -6,6 +6,8 @@ from paraview import simple +DEFAULT_RESOLUTION = 6 + # ----------------------------------------------------------------------------- # trame setup # ----------------------------------------------------------------------------- @@ -14,8 +16,6 @@ class ConeApp(TrameApp): def __init__(self, server=None): super().__init__(server) - self.DEFAULT_RESOLUTION = 6 - self._init_paraview() self._build_ui() @@ -36,7 +36,7 @@ def update_cone(self, resolution, **_kwargs): def update_reset_resolution(self): - self.state.resolution = self.DEFAULT_RESOLUTION + self.state.resolution = DEFAULT_RESOLUTION # ----------------------------------------------------------------------------- @@ -53,7 +53,7 @@ def _build_ui(self): with self.ui.toolbar: v3.VSpacer() v3.VSlider( - v_model=("resolution", self.DEFAULT_RESOLUTION), + v_model=("resolution", DEFAULT_RESOLUTION), min=3, max=60, step=1,