From 6c76b4757eed2191b8dc59701fe4c7d54f446007 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 1 Dec 2023 17:04:16 +0100 Subject: [PATCH 1/3] Set action check state in a way supported by more Qt bindings + fix check state for some cases --- usd_qtpy/viewer.py | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/usd_qtpy/viewer.py b/usd_qtpy/viewer.py index 599b1fd..5c786a4 100644 --- a/usd_qtpy/viewer.py +++ b/usd_qtpy/viewer.py @@ -301,12 +301,9 @@ def set_rendermode(action): group = QtWidgets.QActionGroup(menu) group.setExclusive(True) for mode in common.RenderModes: - action = QtWidgets.QAction( - mode, - checkable=True, - checked=self.model.viewSettings.renderMode == mode - ) - shading_menu.addAction(action) + action = shading_menu.addAction(mode) + action.setCheckable(True) + action.setChecked(self.model.viewSettings.renderMode == mode) group.addAction(action) group.triggered.connect(set_rendermode) # TODO: Set view settings @@ -314,14 +311,11 @@ def set_rendermode(action): purpose_menu = menu.addMenu("Display Purpose") for purpose in ["Guide", "Proxy", "Render"]: key = f"display{purpose}" - state = getattr(self.model.viewSettings, key) == purpose - action = QtWidgets.QAction( - purpose, - checkable=True, - checked=state) - purpose_menu.addAction(action) - action.triggered.connect( - partial(setattr, self.model.viewSettings, key, not state) + action = purpose_menu.addAction(purpose) + action.setCheckable(True) + action.setChecked(getattr(self.model.viewSettings, key) == purpose) + action.toggled.connect( + partial(setattr, self.model.viewSettings, key) ) # help(self.model.viewSettings) @@ -359,14 +353,17 @@ def set_rendermode(action): camera_menu = menu.addMenu("Camera") fit = camera_menu.addAction("Fit to view") fit.triggered.connect(partial(self.view.resetCam, 2.0)) + current_camera_prim = self.model.viewSettings.cameraPrim free_cam = camera_menu.addAction("") + free_cam.setCheckable(True) + free_cam.setChecked(not current_camera_prim) free_cam.triggered.connect(self.view.switchToFreeCamera) for cam in cameras: cam_path = str(cam.GetPath()) action = QtGui.QAction(cam_path, camera_menu) action.setCheckable(True) - action.setChecked(self.model.viewSettings.cameraPrim == cam) + action.setChecked(current_camera_prim == cam) action.triggered.connect(partial(self.set_camera, cam)) camera_menu.addAction(action) @@ -399,16 +396,12 @@ def set_rendermode(action): # TODO: Expose renderer specific settings like USD view does? aov_menu = menu.addMenu("Renderer AOV") - current_aov = None + current_aov = self.view.rendererAovName for aov in self.view.GetRendererAovs(): - action = aov_menu.addAction( - aov, - checkable=True, - checked=aov == current_aov - ) - action.triggered.connect( - partial(self.view.SetRendererAov, aov) - ) + action = aov_menu.addAction(aov) + action.setCheckable(True) + action.setChecked(aov == current_aov) + action.triggered.connect(partial(self.view.SetRendererAov, aov)) if not aov_menu.actions(): aov_menu.setEnabled(False) From 2ac7afdbc81c35d9432cc00dd4841ba64875e6f2 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 1 Dec 2023 17:08:39 +0100 Subject: [PATCH 2/3] Fix check state for displayGuide, displayProxy, displayRender - but it still doesn't seem to influence the view --- usd_qtpy/viewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usd_qtpy/viewer.py b/usd_qtpy/viewer.py index 5c786a4..a195dad 100644 --- a/usd_qtpy/viewer.py +++ b/usd_qtpy/viewer.py @@ -313,7 +313,7 @@ def set_rendermode(action): key = f"display{purpose}" action = purpose_menu.addAction(purpose) action.setCheckable(True) - action.setChecked(getattr(self.model.viewSettings, key) == purpose) + action.setChecked(getattr(self.model.viewSettings, key)) action.toggled.connect( partial(setattr, self.model.viewSettings, key) ) From f42fee2963aaf042223f25688631b9a4a0b3b764 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 1 Dec 2023 18:09:28 +0100 Subject: [PATCH 3/3] Add Complexity options to context menu --- usd_qtpy/viewer.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/usd_qtpy/viewer.py b/usd_qtpy/viewer.py index a195dad..cf74457 100644 --- a/usd_qtpy/viewer.py +++ b/usd_qtpy/viewer.py @@ -6,6 +6,7 @@ from pxr import Usd, UsdGeom, Tf from pxr.Usdviewq.stageView import StageView from pxr.Usdviewq import common +from pxr.UsdAppUtils.complexityArgs import RefinementComplexities try: # Use C++ implementation of USD View @@ -306,6 +307,18 @@ def set_rendermode(action): action.setChecked(self.model.viewSettings.renderMode == mode) group.addAction(action) group.triggered.connect(set_rendermode) + + # Complexity + complexity_menu = menu.addMenu("Complexity") + current_complexity_name = self.model.viewSettings.complexity.name + for complexity in RefinementComplexities.ordered(): + action = complexity_menu.addAction(complexity.name) + action.setCheckable(True) + action.setChecked(complexity.name == current_complexity_name) + def set_complexity(complexity): + self.model.viewSettings.complexity = complexity + + action.triggered.connect(partial(set_complexity, complexity)) # TODO: Set view settings purpose_menu = menu.addMenu("Display Purpose")