And it works!

Thanks for all the help.

On Apr 13, 9:52 am, Justin Israel <[email protected]> wrote:
> Switch the event type to ChildPolished:
>
>     if event.type() == QtCore.QEvent.ChildPolished:
>
> This will fire after the ChildAdded, and after the paint event. Seems to be
> when the maya object is available.
>
> On Thu, Apr 12, 2012 at 5:14 PM, Jesse Capper <[email protected]>wrote:
>
>
>
>
>
>
>
> > It seems like at the time of the childAdded event filter, that the
> > hypershade hasn't been fully constructed (My knowledge of how the Maya
> > UI/layouts function/are constructed is pretty new, so this may be
> > common knowledge). sip.unwrapinstance() will give me a valid pointer,
> > but MQtUtil.fullName() returns None.
>
> > If I take that pointer and run MQtUtil.fullName() on my own after the
> > hypershade has been constructed it will return the name. I feel like
> > I'm missing a simple step or two.
>
> > Here is the code I'm using:
> > class Filter(QtCore.QObject):
> >    def eventFilter(self, obj, event):
> >         if event.type() == QtCore.QEvent.ChildAdded:
> >            child = event.child()
> >            maya_name =
> > mui.MQtUtil.fullName(long(sip.unwrapinstance(child)))
> >            print 'Child -- ', child    #the widget object
> >            print 'Full Name -- ', maya_name    #None
> >         return False
>
> > ptr = mui.MQtUtil.mainWindow()
> > mainWin = sip.wrapinstance(long(ptr), QtGui.QMainWindow)
>
> > f = Filter()
> > mainWin.installEventFilter(f)
>
> > Thanks,
> > Jesse
>
> > On Apr 12, 3:12 pm, Justin Israel <[email protected]> wrote:
> > > Sorry, I kinda neglected to address checking the child widget in that
> > > example.
>
> > > Unwrap the qobject with sip:
>
> > > child = event.child()
> > > mayaName = MQtUtil.fullName(long(sip.unwrapinstance(child)))
>
> > > On Thu, Apr 12, 2012 at 2:41 PM, Jesse Capper <[email protected]
> > >wrote:
>
> > > > Awesome, that helps.
>
> > > > I'm having trouble determining if the created child is a certain type
> > > > of panel. My original thought was to get the maya UI name and check
> > > > it's type with cmds.getPanel, however MQtUtil.fullName() is asking for
> > > > a pointer, not the QWidget that event.child() returns, and I don't
> > > > know how to pass it a pointer to the widget (or if there is a better
> > > > way to either get the Maya UI name, or figure out if the child is a
> > > > panel of type x).
>
> > > > Thanks,
> > > > Jesse
>
> > > > On Apr 12, 12:55 pm, Justin Israel <[email protected]> wrote:
> > > > > In your eventFilter for the mainWindow, you can check for the
> > ChildAdded
> > > > > event.
> > > > > Nice thing is that you dont have to go looking it up and converting
> > it
> > > > :-)
>
> > > > > class Filter(QtCore.QObject):
> > > > >     def eventFilter(self, obj, event):
>
> > > > >         typ = event.type()
>
> > > > >         if typ == event.ChildAdded:
> > > > >             hyperWidget = event.child()
> > > > >             # set up stuff on the hyperWidget QWidget
>
> > > > >         return False
>
> > > > > On Thu, Apr 12, 2012 at 10:53 AM, Jesse Capper <
> > [email protected]
> > > > >wrote:
>
> > > > > > Related question:
> > > > > > Can you attach a persistent filterEvent to a panel like the
> > > > > > hypershade? Or maybe attach a callback to the hyperShadePanel type
> > to
> > > > > > create a filterEvent every time the panel is created?
>
> > > > > > I can get the QWidget for the hypershade if it already exists:
>
> > > > > > hypershade_panel = cmds.getPanel(sty='hyperShadePanel')[0]
> > > > > > if hypershade_panel in cmds.getPanel(vis=True):
> > > > > >    ptr = mui.MQtUtil.findControl(hypershade_panel)
>
> > > > > > Problem is that since the QWidget for the panel gets destroyed
> > every
> > > > > > time it is closed, I'd have to reattach the filterEvent every time
> > it
> > > > > > is reopened (or make it persistent, but I'm guessing that since the
> > > > > > widget gets destroyed, that isn't possible), and I don't know how
> > to
> > > > > > do that. Is it possible, a bad idea, anything?
>
> > > > > > Thanks,
> > > > > > Jesse
>
> > > > > > On Apr 10, 6:08 pm, notanymike <[email protected]> wrote:
> > > > > > > Thanks. I somehow overlooked eventFilter from the QObject docs...
>
> > > > > > --
> > > > > > view archives:http://groups.google.com/group/python_inside_maya
> > > > > > change your subscription settings:
> > > > > >http://groups.google.com/group/python_inside_maya/subscribe
>
> > > > --
> > > > view archives:http://groups.google.com/group/python_inside_maya
> > > > change your subscription settings:
> > > >http://groups.google.com/group/python_inside_maya/subscribe
>
> > --
> > view archives:http://groups.google.com/group/python_inside_maya
> > change your subscription settings:
> >http://groups.google.com/group/python_inside_maya/subscribe

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to