The MNodeMessage class allows you to install callbacks
<http://download.autodesk.com/us/maya/2011help/API/class_m_node_message.html#aadfd554fb036b7a23f3dbf19ce74117>via
the API much like scriptJob. You can do this via the Python API so you don't
need a plugin here at all.
Any specific reason not to use scriptJob?

- Ofer
www.mrbroken.com


On Wed, Dec 22, 2010 at 8:20 PM, mtherrell <[email protected]> wrote:

> thanks chad.
>
> good to know.. at least i know i'll be barking up the right tree by
> going this route.
>
> btw, i know this is straying into another topic, but:
>
> i wrote a node plugin a while back that used kAttributeChanged
> callbacks 'attached' to all attrs on the plugin node, as a way of
> monitoring (its own) attrs for change, and then i filter those signals
> using a string attr that names the attribute to listen for and a
> script to run when it changes. (as kind of an alternative to
> scriptJob). but to do this, it meant that i had to create the node
> itself as a plugin to expose all the various callback signals to the
> attrs to capture when they change.
>
> do you know of a way to do this without having to create the node
> itself as a plugin?
> ie. an alternative to scriptjob 'attrchange' that would use already
> existing (non-plugin) maya nodes?
>
> ie. ie.. attach an 'attrchanged' callback to, say, all (or some) of
> the attrs of a nurbsSphere without having to write the sphere node
> itself as a plugin, and without having to write a scriptjob to monitor
> each attr individualy? (another scheme might create a plugin deformer
> node that would associate an attr being dirtied with a script to run..
> then just connect that attr to an already existing maya node.attr that
> you want to monitor.. but im trying to avoid that scheme as well)
>
> i think you may have alluded to alternatives to these node plugin
> schemes in your previous post:
>
> "I do it with a callback from MNodeMessage to update the UI when the
> attribute changes."
>
> (i could really use somthing like this right about now!)
> but up till now i could only figure out how to monitor for attrchange,
> if i create the whole node, with the attrs to monitor, as a plugin
> itself..
>
> would love to be able to just have a command or something that would
> replace scriptjob and work on already existing out of the box
> node.attrs
>
> -thanks
>
> -mark therrell
>
> On Dec 17, 12:02 pm, Chad Vernon <[email protected]> wrote:
> > I do it with a callback from MNodeMessage to update the UI when the
> > attribute changes.  You'll need to do some signal blocking to not get an
> > infinite loop.  For time change you could use
> > MDGMessage.addTimeChangeCallback.
> >
> > Everyone that I've talked to using Qt and Maya say you pretty much just
> have
> > to manage all the callbacks yourself.
> >
> > On Fri, Dec 17, 2010 at 11:30 AM, mtherrell <[email protected]>
> wrote:
> > > thanks chad.
> >
> > > this does work .. but in one direction. (qtcontrol -> attr)
> >
> > > the undo will return the node.attr to where it should be, but it won't
> > > undo my qt interface to correspond.
> > > similarly, scrubbing the attr does not automatically change the qt
> > > interface either..like with "connectControl"
> > > ..with this scheme i will need to find a way to trigger the QT event
> > > with undo, or just somehow update the qt control when its the attr
> > > changes with a callback (scriptJob or somthing)...and this could get
> > > kind of messy.
> >
> > > i can see there may be a need for the creation of a command plugin (or
> > > just a py function) that will create a two way connection between attr
> > > and a QT control,
> > > and either tie the qt control in with maya's undo scheme or just rely
> > > on that two way connection to reset the control..
> >
> > > Does anyone know exactly how connectControl works under the hood in
> > > maya?
> > > it would be nice to emulate the way it works, while extending it to
> > > work with QT slots and signals.
> >
> > > cheers.
> >
> > > -mt
> >
> > > On Dec 16, 9:18 am, Chad Vernon <[email protected]> wrote:
> > > > I've been doing a setAttr with
> >
> > > >  cmds.undoInfo(openChunk=True)
> > > >  cmds.undoInfo(closeChunk=True)
> >
> > > > on the mouse events.  I haven't found a way to do any direct
> connection.
> >
> > > > On Tue, Dec 14, 2010 at 11:04 AM, mtherrell <[email protected]
> >
> > > wrote:
> > > > > Hi,
> >
> > > > > with mel there is a command 'connectControl' that would link the
> > > > > output of, say, a mel float slider, to say, the translateX
> attribute
> > > > > of a node in maya.
> >
> > > > > in my project, i am dual subClassing a QObject  and QGraphicsItem.
> > > > > adding my own signal to the resulting item that is triggered when
> the
> > > > > item is moved around in a QGraphicsScene, and now i want to connect
> > > > > that signal to the translateX of a node in maya.
> >
> > > > > I could just re-implement the QGraphicsItem.itemChange function and
> > > > > inside that, call setAttr on the translateX, but this seems ugly
> and
> > > > > possibly slow since setAttr is less direct than connectControl
> would
> > > > > be.
> >
> > > > > I could maybe use the maya API equivalent of setAttr in the same
> > > > > scheme.. but would that be any faster?
> >
> > > > > I would like to avoid a literal callback mechanism inside my
> object's
> > > > > event handlers.
> >
> > > > > what i would like to be able to do is exactly what connectControl
> mel
> > > > > command does, connecting the output of a widget to an attr in
> maya..
> > > > > but instead, using the signal and slot mechanism of QT.
> >
> > > > > is there a way to define a node.attr in maya as a QT slot? ---that
> > > > > would be awesome---.
> >
> > > > > is there something like a pymel "QConnectControl" command that i am
> > > > > missing?
> >
> > > > > thanks for any help on this.
> >
> > > > > -
> >
> > > > > --
> > > > >http://groups.google.com/group/python_inside_maya
> >
> > > --
> > >http://groups.google.com/group/python_inside_maya
> >
> >
>
> --
> http://groups.google.com/group/python_inside_maya
>

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to