Trying to get character UI to work in Maya 2011 or later

Hi,
I’ve been trying to get an animation character UI that was built prior to Maya 2011 to work inside of Maya 2011 or later. I’ve run into a few blockers though.

Main blocker:
I have a background image of a character with buttons on top where the user can select a button to select a control or click the background to deselect all controllers. The problem is in Maya 2011 and later the background image’s code is no longer placed after the buttons’ code. While this is more intuitive Maya now moves the background image over the button images every time I click on the background to deselect things.
The deselect feature is achieved by having a popUpMenu -postMenuCommand for the image command.

Minor blocker:
It appears that Maya puts a bunch of negative space to the right of certain
UI controllers. While this does not break anything it’s not very clean looking.
I use formLayouts and often set the size of controls so I don’t know why this is happening.

I’m new to this forum, and more of an animator than a tech guy so any help would be appreciated.

Oh also I’m not using Maya’s new QT for this.

My progress on this so far:

Main blocker:
I figured out a partial solution. I put a transparent button (iconTextButton with no image) over the actual image and it gives the illusion of clicking the background image. The problem with this method is the button highlights every time it’s clicked so the image appears to flicker. If I actually give the button an image it highlights when the mouse moves over it, which I don’t want.

Any thoughts on how to make the background image call a deselect procedure without any visual changes?

Minor blocker:
No progress on this, still stumped.

All thoughts appreciated.

As the author of charPik which was first written all the way back in 2000, I have a special place in my heart for these type of character UI’s. When Maya moved their UI to Qt many UI tricks that worked before were obsolete. You mention you are not really a tech guy and not using Qt. However, I don’t think you can get away with not getting into Qt at least a little bit.

When I ported over Graph Editor Redux to use PyQt I ran into the same problem of ordering UI widgets. There is no way in vanilla Maya to order widgets. You have to get access to the underlying QObject and use its methods to do this.

[pseudocode]

  • import maya.OpenMayaUI as OMUI
  • import sip
  • mayaControl = [whatever you called it]
  • fc = OMUI.findControl(mayaControl)
  • obj = sip.wrapinstance(long(fc), QtCore.QObject)
  • obj.lower() or obj.raise()