have you checked MGlobal.isUndoing and MGlobal.isRedoing? these only work from api calls. check pymel.core.factories.ApiUndo for an example ( from Dean's code posted on this site )
-chad On Mar 21, 2009, at 5:35 PM, Paul Molodowitch wrote: > > Oops... forgot to add that code to play with: > > http://pastebin.com/m177e22bc > > Execute it, then change the value of .translateX, and undo / redo > to see when various callbacks are triggered > > - Paul > > > On Sat, Mar 21, 2009 at 5:32 PM, barnabas79 <[email protected]> > wrote: >> >> Hi all - so, I'm wondering if there's a way to detect when changes to >> an attribute are caused by an undo / redo. >> >> Ie, I have a script that that, whenever a certain attribute is >> changed, automatically makes some other changes to the scene as well. >> In other words, the flow looks like: >> >> state1 --(attrChange)--> state2 -->(scriptTriggered) ---> >> (scriptChanges) ---> state3 >> >> (Note - I've tried having the script triggered by >> MNodeMessage.addAttributeChangedCallback and a scriptJob >> (attributeChange=[...]), and have the same problem with both...) >> >> Everything is working fine and dandy... until I tried to get things >> working with undo. The problem here is that, if I change my target >> attribute (which triggers my script), then later undo the change to >> the target attribute, this registers as another attribute change, >> which triggers my script again. >> >> The obvious solution would be to add an undo callback which would >> temporarily disable my script, then re-enable when the undo was >> finished (for instance, when maya is idle) - the problem is that the >> undo callback is triggered AFTER the attribute changed callback. >> >> Is there any way to have my script know that it's actually been >> triggered by an undo? >> >> - Paul >> >> PS - Here's some code that will give feedback on when attribute >> change / undo / redo callbacks are triggered, that will allow you to >> see for yourself that A) an undo triggers and attribute change >> callback, and B) the undo callback is triggered AFTER this attribute >> change callback >>> >> > > > --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/python_inside_maya -~----------~----~----~----~------~----~------~--~---
