Help on simple vtkLocalView camera update

Hi,

I found a thread from August Update camera in trame vtkLocalView where a user asked about updating the camera, and @Sebastien_Jourdain seemed to have an answer that worked for them - to use widget.push_camera()or widget.update(push_camera=True). I am using their same code and trying to add this function in, but I’m having no luck. Can someone help show me where/how to add this function?

Thanks in advance.

from trame.app import get_server
from trame.ui.vuetify3 import SinglePageLayout
from trame.widgets import vtk as vtk_widgets
from trame.widgets import vuetify3 as vuetify

# VTK imports
from vtkmodules.vtkFiltersSources import vtkConeSource
from vtkmodules.vtkRenderingCore import (
    vtkActor,
    vtkPolyDataMapper,
    vtkRenderer,
    vtkRenderWindow,
    vtkRenderWindowInteractor,
)

# -----------------------------------------------------------------------------
# VTK setup
# -----------------------------------------------------------------------------

renderer = vtkRenderer()
renderWindow = vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindow.OffScreenRenderingOn()

renderWindowInteractor = vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)

cone_source = vtkConeSource()
mapper = vtkPolyDataMapper()
actor = vtkActor()
mapper.SetInputConnection(cone_source.GetOutputPort())
actor.SetMapper(mapper)
renderer.AddActor(actor)
renderer.ResetCamera()
renderWindow.Render()

# -----------------------------------------------------------------------------
# Trame setup
# -----------------------------------------------------------------------------

server = get_server(client_type="vue3")
state, ctrl = server.state, server.controller

# -----------------------------------------------------------------------------
# Callbacks
# -----------------------------------------------------------------------------


@ctrl.set("view_x")
def set_camera_view_x():
    camera = renderer.GetActiveCamera()
    camera.SetPosition(1, 0, 0)
    camera.SetFocalPoint(0, 0, 0)
    camera.SetViewUp(0, 0, 1)
    renderer.ResetCamera()
    renderer.ResetCameraClippingRange()
    renderer.UpdateLightsGeometryToFollowCamera()
    renderWindow.Render()
    ctrl.view_update()


@ctrl.set("view_y")
def set_camera_view_y():
    camera = renderer.GetActiveCamera()
    camera.SetPosition(0, 1, 0)
    camera.SetFocalPoint(0, 0, 0)
    camera.SetViewUp(0, 0, 1)
    renderer.ResetCamera()
    renderer.ResetCameraClippingRange()
    renderer.UpdateLightsGeometryToFollowCamera()
    renderWindow.Render()
    ctrl.view_update()


@ctrl.set("view_z")
def set_camera_view_z():
    camera = renderer.GetActiveCamera()
    camera.SetPosition(0, 0, 1)
    camera.SetFocalPoint(0, 0, 0)
    camera.SetViewUp(0, 1, 0)
    renderer.ResetCamera()
    renderer.ResetCameraClippingRange()
    renderer.UpdateLightsGeometryToFollowCamera()
    renderWindow.Render()
    ctrl.view_update()


# -----------------------------------------------------------------------------
# GUI
# -----------------------------------------------------------------------------

with SinglePageLayout(server) as layout:
    layout.title.set_text("VTK Cone Geometry - Camera Views")

    with layout.toolbar:
        vuetify.VSpacer()
        vuetify.VBtn("X View", click=ctrl.view_x)
        vuetify.VBtn("Y View", click=ctrl.view_y)
        vuetify.VBtn("Z View", click=ctrl.view_z)

    with layout.content:
        with vuetify.VContainer(
            fluid=True,
            classes="pa-0 fill-height",
        ):
            view = vtk_widgets.VtkLocalView(renderWindow)
            ctrl.view_update = view.update
            ctrl.view_reset_camera = view.reset_camera

#
# -----------------------------------------------------------------------------
# Main
# -----------------------------------------------------------------------------

if __name__ == "__main__":
    server.start()