Thanks David!

On Mon, Oct 26, 2009 at 9:13 AM, Sylvain Berger
<sylvain.ber...@gmail.com> wrote:
> Thanks a lot David!
>
> On Mon, Oct 26, 2009 at 5:23 AM, David Moulder <da...@thirstydevil.co.uk>
> wrote:
>>
>> Here it is...., This version has fixed our threading errors that occurred
>> where maya wouldn't close correctly and leave 1 mayapy thread open.
>>
>> -Dave
>>
>> ###########################
>>
>> from PyQt4 import QtCore, QtGui
>> import maya.utils as utils
>> import sys
>> import time
>> import threading
>> import maya.cmds as cmds
>>
>> pumpedThread = None
>> app = None
>> gPump = True
>>
>> def get_app():
>>     global app
>>     return app
>>
>> def set_app(i_app):
>>     global app
>>     testAppInstance = QtCore.QCoreApplication.instance()
>>     if testAppInstance:
>>         app = testAppInstance
>>     else:
>>         app = i_app
>>
>> def get_pt():
>>     global pumpedThread
>>     return pumpedThread
>>
>> def set_pt(i_pt):
>>     global pumpedThread
>>     pumpedThread = i_pt
>>
>> def pumpQt():
>>     global app
>>     global gPump
>>     processorEv = threading.Event()
>>     def processor():
>>         app.processEvents()
>>         processorEv.set()
>>     while gPump:
>>         utils.executeDeferred( processor )
>>         processorEv.wait()
>>         processorEv.clear()
>>         time.sleep(0.01)
>>
>> def killProcess():
>>     global gPump
>>     gPump = False
>>
>> def killPumpThread():
>>     if get_app():
>>         get_app().closeAllWindows()
>>     if get_pt():
>>         while get_pt().isAlive():
>>             killProcess()
>>         set_pt(None)
>>         set_app(None)
>>
>>
>> def initializePumpThread():
>>     global gPump
>>     gPump = True
>>         if get_pt() == None:
>>                 set_app(QtGui.QApplication(sys.argv))
>>                 set_pt(threading.Thread( target = pumpQt, args = () ))
>>                 get_pt().start()
>>
>> On Fri, Oct 23, 2009 at 8:41 PM, Sylvain Berger <sylvain.ber...@gmail.com>
>> wrote:
>>>
>>> Where can I find your version of pumpThread?
>>>
>>> Thanks
>>>
>>> On Tue, Sep 29, 2009 at 5:24 AM, David Moulder <da...@thirstydevil.co.uk>
>>> wrote:
>>>>
>>>> Ok,  Here's and basic example with PyQT and a QListWidget...
>>>> Please note.  This use's a modified pumpThread module.  The default one
>>>> from the maya dev kit has given us lots of problems.
>>>> Thanks to some very clever people on this list we now have a working
>>>> pumpThread module that is heavily tested here at work.
>>>>
>>>> from PyQt4 import QtCore, QtGui
>>>> import pymel as pm
>>>> import pumpThread
>>>>
>>>> class ExampleUI(QtGui.QDialog):
>>>>     def __init__(self, parent=None):
>>>>         super(ExampleUI, self).__init__(parent)
>>>>         # Set some basic properties on the UI
>>>>         self.setWindowTitle('ExampleUI')
>>>>         self.setObjectName("ExampleUI")
>>>>         self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
>>>>
>>>>     # Add a Layout and set it to the UI
>>>>         self.mainLayout = QtGui.QVBoxLayout(self)
>>>>         self.setLayout(self.mainLayout)
>>>>
>>>>         # Add a Button and set some properties.  Also add it to a
>>>> layout.
>>>>         self.RefreshButton = QtGui.QPushButton()
>>>>         self.RefreshButton.setText("Refresh")
>>>>         self.mainLayout.addWidget(self.RefreshButton)
>>>>
>>>>         # Add a list and set it to the layout
>>>>         self.SelectionList = QtGui.QListWidget()
>>>>         self.SelectionList.setMinimumSize(250,250)
>>>>         self.mainLayout.addWidget(self.SelectionList)
>>>>
>>>>         # Connect the Refresh Button to a function to populate the list
>>>> using SIGNAL's
>>>>         self.connect(self.RefreshButton, QtCore.SIGNAL("clicked()"),
>>>> self._RefreshButtonFunc)
>>>>
>>>>     def _RefreshButtonFunc(self):
>>>>         '''
>>>>         Fill the list based on a maya selection
>>>>         '''
>>>>         oSel = pm.selected()
>>>>         if oSel:
>>>>             self.SelectionList.clear()
>>>>             [self.SelectionList.addItem(s.name()) for s in oSel]
>>>>         else:
>>>>             self.SelectionList.clear()
>>>>
>>>>     @staticmethod
>>>>     def Display():
>>>>         '''
>>>>         calls the window.  Typical PumpThread call
>>>>         Use's a modified pumpThread that properly set's up the thread.
>>>>         '''
>>>>         # We need a global to stop python gc the UI
>>>>         global mainWindow
>>>>
>>>>         # We need pumpThread to make the UI responsive
>>>>         pumpThread.initializePumpThread()
>>>>         app = pumpThread.get_app()
>>>>         if app:
>>>>             # We can set the app to use a nice style
>>>>             app.setStyle('Plastique')
>>>>             mainWindow = ExampleUI()
>>>>             mainWindow.show()
>>>>
>>>> ExampleUI.Display()
>>>>
>>>> I'll post our final pumpThread later today.
>>>>
>>>> -Dave
>>>>
>>>>
>>>> On Tue, Sep 29, 2009 at 6:42 AM, floyd1510 <vshingr...@gmail.com> wrote:
>>>>>
>>>>> Hello all,
>>>>>
>>>>> I have got PyQt up and running in Maya 2009. I was wondering if
>>>>> someone could guide me to a few examples, like adding a list of
>>>>> objects from maya into the QT listview or adding items dynamically to
>>>>> a combo box etc.
>>>>>
>>>>> I appreciate the help.
>>>>>
>>>>> Cheers,
>>>>> Vikram.
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> "A pit would not be complete without a Freeman coming out of it."
>>> The Vortigaunt
>>>
>>>
>>
>>
>>
>
>
>
> --
> "A pit would not be complete without a Freeman coming out of it."
> The Vortigaunt
>
> >
>

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

Reply via email to