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