Thank Justin.
I need to pass data along with the prompt so the confirmDialog() is out,
but you gave me the information I needed to find the answer I was looking
for. I searched for modal dialog and found the modal layoutDialog() within
maya's own commands. This function does exactly what I need.
Cheers
On Tuesday, 30 October 2012 13:53:36 UTC-7, Chad Fox wrote:
>
> Hello
>
> I would like to create a ubiquitous gui class called "UserQueryUI". The
> idea is that this will be a go-to user prompt for any script with a
> question or announcement to the user and their choice of an affirmative,
> negative or "cancel op" reply . What I am currently trying to work out is
> how I can call this class in any script and ‘wait’ for an answer.
>
> My snag is that when I call the class and it's .create method, the script
> doesn't stop and wait for the user to reply before moving on resulting in
> the script/tool completing before the user even replies..
>
> This approach was a shot in the dark so let me know if what I ask is not
> possible or if there is a better approach, but if there is a solution, I
> would love to learn about it.
>
> Cheers
>
> #example script and user query class
> import maya.cmds as cmds
>
> #External Script
> def testFunction():
> q=UserQueryUI('Replace with query text'
> ,'affirmativeButtonTxt','negativeButtonTxt')
> q.create()
>
> #Script needs to wait for a reply before calling the reply from the
> class.
> print 'Users reply', q.reply
>
>
> #UserQueryUI Class
>
> class UserQueryUI:
>
> reply = None
>
> def __init__(self, query ,affirmativeReply,negativeReply):
>
> self.name = 'userQueryUI'
> self.title = 'userQueryUI'
> self.query = query
> self.affirmativeReply = affirmativeReply
> self.negativeReply = negativeReply
>
> def create(self):
>
> def affirmative(x):
> print 'Positive reply'
> reply=True
> cmds.deleteUI('userQueryUI',window=True )
>
> def negative(x):
> print 'Negative reply'
> reply=False
> cmds.deleteUI('userQueryUI',window=True )
>
>
> def cancelTool(x):
> print 'Cancel reply'
> reply=None
> cmds.deleteUI('userQueryUI',window=True )
>
>
> print '--Creating userQueryUI with query',self.query
>
> if cmds.window(self.name, exists=True):
> cmds.deleteUI(self.name)
>
> self.window = cmds.window(self.name, title=self.title)
> self.form = cmds.formLayout()
>
> self.queryText = cmds.text(self.query, w=400, align='left' )
> height = 1
>
> cmds.formLayout(self.form, edit=True, attachForm=[(self.queryText,
> 'top', 5),(self.queryText,'left',5)])
>
> self.affirmativeButton = cmds.button(l=self.affirmativeReply,
> al='center', w=100,h=25, c = affirmative)
> self.negativeButton = cmds.button(l=self.negativeReply,
> al='center', w=100,h=25, c = negative)
> self.cancelButton = cmds.button(l='Cancel Tool', al='center',
> w=100,h=25, c = cancelTool)
>
> cmds.formLayout(self.form, edit=True, attachForm=[
>
> (self.affirmativeButton, 'top', height+50),
>
> (self.affirmativeButton,'left',50),
>
> (self.negativeButton, 'top', height+50),
>
> (self.negativeButton,'left',150),
>
> (self.cancelButton, 'top', height+50),
>
> (self.cancelButton,'left',250)
> ])
>
> cmds.showWindow(self.window)
> cmds.window(self.window, edit=True, s=True, wh=(400,height+80))
>
> testFunction()
>
--
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings:
http://groups.google.com/group/python_inside_maya/subscribe