def __keyRelease(self, qObject, qEvent): widget = Widget._owner(qObject) if widget._keyReleaseSignal is not None: event = GafferUI.KeyEvent( Widget._key(qEvent.key()), Widget._modifiers(qEvent.modifiers()), ) return widget._keyReleaseSignal(widget, event) return False
def __keyPress(self, qObject, qEvent): if self.__updateDragModifiers(qObject, qEvent): return True widget = Widget._owner(qObject) if widget._keyPressSignal is not None: event = GafferUI.KeyEvent( Widget._key(qEvent.key()), Widget._modifiers(qEvent.modifiers()), ) return widget._keyPressSignal(widget, event) return False
def testAnimationHotkeyWithEditScopes(self): script = Gaffer.ScriptNode() script["cube"] = GafferScene.Cube() script["editScope"] = Gaffer.EditScope() script["editScope"].setup(script["cube"]["out"]) script["editScope"]["in"].setInput(script["cube"]["out"]) view = GafferSceneUI.SceneView() view["in"].setInput(script["editScope"]["out"]) view["editScope"].setInput(script["editScope"]["out"]) GafferSceneUI.ContextAlgo.setSelectedPaths( view.getContext(), IECore.PathMatcher(["/cube"])) tool = GafferSceneUI.TranslateTool(view) tool["active"].setValue(True) for plug in Gaffer.FloatPlug.RecursiveRange( script["cube"]["transform"]): self.assertFalse(Gaffer.Animation.isAnimated(plug)) self.assertFalse( GafferScene.EditScopeAlgo.hasTransformEdit(script["editScope"], "/cube")) view.viewportGadget().keyPressSignal()(view.viewportGadget(), GafferUI.KeyEvent("S")) for plug in Gaffer.FloatPlug.RecursiveRange( script["cube"]["transform"]): self.assertFalse(Gaffer.Animation.isAnimated(plug)) self.assertTrue( GafferScene.EditScopeAlgo.hasTransformEdit(script["editScope"], "/cube")) edit = GafferScene.EditScopeAlgo.acquireTransformEdit( script["editScope"], "/cube") for vectorPlug in (edit.translate, edit.rotate, edit.scale, edit.pivot): for plug in vectorPlug: self.assertTrue(Gaffer.Animation.isAnimated(plug)) tool.translate(imath.V3f(1, 0, 0)) self.assertEqual(script["editScope"]["out"].transform("/cube"), imath.M44f().translate(imath.V3f(1, 0, 0)))
def testAnimationHotkey( self ) : script = Gaffer.ScriptNode() script["cube"] = GafferScene.Cube() view = GafferSceneUI.SceneView() view["in"].setInput( script["cube"]["out"] ) GafferSceneUI.ContextAlgo.setSelectedPaths( view.getContext(), IECore.PathMatcher( [ "/cube" ] ) ) tool = GafferSceneUI.TranslateTool( view ) tool["active"].setValue( True ) for plug in Gaffer.FloatPlug.RecursiveRange( script["cube"]["transform"] ) : self.assertFalse( Gaffer.Animation.isAnimated( plug ) ) view.viewportGadget().keyPressSignal()( view.viewportGadget(), GafferUI.KeyEvent( "S" ) ) for plug in Gaffer.FloatPlug.RecursiveRange( script["cube"]["transform"] ) : self.assertTrue( Gaffer.Animation.isAnimated( plug ) )
def __keyRelease( self, qObject, qEvent ) : # When a key is held, the following events are observed: # MacOS: p p p p r # Linux: p r p r p r p r # We conform linux to match Mac as it feels more intuitive. if qEvent.isAutoRepeat() : return True if self.__updateDragModifiers( qObject, qEvent ) : return True widget = Widget._owner( qObject ) if widget._keyReleaseSignal is not None : event = GafferUI.KeyEvent( Widget._key( qEvent.key() ), Widget._modifiers( qEvent.modifiers() ), ) return widget._keyReleaseSignal( widget, event ) return False
else: GafferUI.NodeEditor.acquire(node, floating=True) def __ancestorWithReadOnlyChildNodes(node): result = None while isinstance(node, Gaffer.Node): if Gaffer.MetadataAlgo.getChildNodesAreReadOnly(node): result = node node = node.parent() return result __editSourceKeyPress = GafferUI.KeyEvent("E", GafferUI.KeyEvent.Modifiers.Alt) __editTweaksKeyPress = GafferUI.KeyEvent( "E", GafferUI.KeyEvent.Modifiers(GafferUI.KeyEvent.Modifiers.Alt | GafferUI.KeyEvent.Modifiers.Shift)) def __viewerKeyPress(viewer, event): view = viewer.view() if not isinstance(view, GafferSceneUI.SceneView): return False if event == __editSourceKeyPress: selectedPath = __sceneViewSelectedPath(view) if selectedPath is not None: