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
