Hi,
This is my first post here,
I'm trying to make a generalized pickobjects tool and I want it to stop the
script evaluation until
the user exit the picking cession.
I've seen this asked here and there and there might just not be a solution
for it, but I'm giving it a shot.
I'm actually quite close and I'm just using a while loop with
processEvents() to still have access to the UI,
unfortunately I'm having an odd behavior on mouse release, it seems it's
re-running the whole code, queuing it
and finally execute the queued code.
import maya.OpenMayaUI as om
from PySide import QtGui, QtCore
from PySide.QtCore import *
from PySide.QtGui import *
from shiboken import wrapInstance
import shiboken
class MouseEventFilter(QtCore.QObject):
def __init__(self, label=None):
self.__label = label
QtCore.QObject.__init__(self)
self.x = 0
self.y = 0
def eventFilter(self, obj, event):
typ = event.type()
if event.type() == event.MouseMove:
print event.x(), event.y()
self.x = event.x()
self.y = event.y()
if event.type() == event.MouseButtonPress:
print "pressed"
if event.type() == event.MouseButtonRelease:
print "release"
return False
class KeyEventFilter(QtGui.QWidget):
def __init__(self, label=None):
self.__label = label
QtGui.QWidget.__init__(self)
self.exit = False
self.setFocusPolicy(QtCore.Qt.StrongFocus)
def eventFilter(self, obj, event):
if event.type() == QtCore.QEvent.KeyPress:
typ = event.type()
print typ
self.exit = True
return True
return False
mayaMainWindowPtr = om.MQtUtil.mainWindow()
mayaMainWindow = wrapInstance(long(mayaMainWindowPtr), QWidget)
kEventFilter = KeyEventFilter(mayaMainWindow)
mayaMainWindow.installEventFilter(kEventFilter)
view = om.M3dView.active3dView()
widget_ptr = view.widget()
widget = wrapInstance(long(widget_ptr), QWidget)
mEventFilter = MouseEventFilter(widget)
widget.installEventFilter(mEventFilter)
while True:
QtGui.qApp.processEvents()
#cmds.evalDeferred(flop, low=True)
#print eventFilter.x, eventFilter.y
if kEventFilter.exit == True:
widget.removeEventFilter(mEventFilter)
kEventFilter.deleteLater()
mayaMainWindow.removeEventFilter(kEventFilter)
kEventFilter.deleteLater()
break
print "should run after"
If someone have an idea about it!
Thanks
-A
--
You received this message because you are subscribed to the Google Groups
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/6d7b7659-1f67-4601-9b02-dcb52183678d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.