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
-~----------~----~----~----~------~----~------~--~---

Reply via email to