Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 170 additions & 1 deletion Qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -916,6 +916,54 @@ def createWidget(self, class_name, parent=None, name=""):

"""
_misplaced_members = {
"PySide6": {
"QtGui.QStringListModel": "QtCore.QStringListModel",
"QtCore.Property": "QtCore.Property",
"QtCore.Signal": "QtCore.Signal",
"QtCore.Slot": "QtCore.Slot",
"QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel",
"QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel",
"QtCore.QItemSelection": "QtCore.QItemSelection",
"QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel",
"QtCore.QItemSelectionRange": "QtCore.QItemSelectionRange",
"QtUiTools.QUiLoader": ["QtCompat.loadUi", _loadUi],
"shiboken6.wrapInstance": ["QtCompat.wrapInstance", _wrapinstance],
"shiboken6.getCppPointer": ["QtCompat.getCppPointer", _getcpppointer],
"QtWidgets.qApp": "QtWidgets.QApplication.instance()",
"QtCore.QCoreApplication.translate": [
"QtCompat.translate", _translate
],
"QtWidgets.QApplication.translate": [
"QtCompat.translate", _translate
],
"QtCore.qInstallMessageHandler": [
"QtCompat.qInstallMessageHandler", _qInstallMessageHandler
],
},
"PyQt6": {
"QtCore.pyqtProperty": "QtCore.Property",
"QtCore.pyqtSignal": "QtCore.Signal",
"QtCore.pyqtSlot": "QtCore.Slot",
"QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel",
"QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel",
"QtCore.QStringListModel": "QtCore.QStringListModel",
"QtCore.QItemSelection": "QtCore.QItemSelection",
"QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel",
"QtCore.QItemSelectionRange": "QtCore.QItemSelectionRange",
"uic.loadUi": ["QtCompat.loadUi", _loadUi],
"sip.wrapinstance": ["QtCompat.wrapInstance", _wrapinstance],
"sip.unwrapinstance": ["QtCompat.getCppPointer", _getcpppointer],
"QtWidgets.qApp": "QtWidgets.QApplication.instance()",
"QtCore.QCoreApplication.translate": [
"QtCompat.translate", _translate
],
"QtWidgets.QApplication.translate": [
"QtCompat.translate", _translate
],
"QtCore.qInstallMessageHandler": [
"QtCompat.qInstallMessageHandler", _qInstallMessageHandler
],
},
"PySide2": {
"QtGui.QStringListModel": "QtCore.QStringListModel",
"QtCore.Property": "QtCore.Property",
Expand Down Expand Up @@ -1046,6 +1094,46 @@ def createWidget(self, class_name, parent=None, name=""):
}
"""
_compatibility_members = {
"PySide6": {
"QWidget": {
"grab": "QtWidgets.QWidget.grab",
},
"QHeaderView": {
"sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable",
"setSectionsClickable":
"QtWidgets.QHeaderView.setSectionsClickable",
"sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode",
"setSectionResizeMode":
"QtWidgets.QHeaderView.setSectionResizeMode",
"sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable",
"setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable",
},
"QFileDialog": {
"getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName",
"getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames",
"getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName",
},
},
"PyQt6": {
"QWidget": {
"grab": "QtWidgets.QWidget.grab",
},
"QHeaderView": {
"sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable",
"setSectionsClickable":
"QtWidgets.QHeaderView.setSectionsClickable",
"sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode",
"setSectionResizeMode":
"QtWidgets.QHeaderView.setSectionResizeMode",
"sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable",
"setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable",
},
"QFileDialog": {
"getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName",
"getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames",
"getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName",
},
},
"PySide2": {
"QWidget": {
"grab": "QtWidgets.QWidget.grab",
Expand Down Expand Up @@ -1316,6 +1404,51 @@ def _build_compatibility_members(binding, decorators=None):
setattr(Qt.QtCompat, classname, compat_class)


def _pyside6():
"""Initialise PySide6

These functions serve to test the existence of a binding
along with set it up in such a way that it aligns with
the final step; adding members from the original binding
to Qt.py

"""

import PySide6 as module
extras = ["QtUiTools"]
try:
try:
# Before merge of PySide and shiboken
import shiboken6
except ImportError:
# After merge of PySide and shiboken, May 2017
from PySide6 import shiboken6
extras.append("shiboken2")
except ImportError:
pass

_setup(module, extras)
Qt.__binding_version__ = module.__version__

if hasattr(Qt, "_shiboken6"):
Qt.QtCompat.wrapInstance = _wrapinstance
Qt.QtCompat.getCppPointer = _getcpppointer
Qt.QtCompat.delete = shiboken6.delete

if hasattr(Qt, "_QtUiTools"):
Qt.QtCompat.loadUi = _loadUi

if hasattr(Qt, "_QtCore"):
Qt.__qt_version__ = Qt._QtCore.qVersion()

if hasattr(Qt, "_QtWidgets"):
Qt.QtCompat.setSectionResizeMode = \
Qt._QtWidgets.QHeaderView.setSectionResizeMode

_reassign_misplaced_members("PySide6")
_build_compatibility_members("PySide6")


def _pyside2():
"""Initialise PySide2

Expand Down Expand Up @@ -1404,6 +1537,38 @@ def _pyside():
_build_compatibility_members("PySide")


def _pyqt6():
"""Initialise PyQt5"""

import PyQt6 as module
extras = ["uic"]
try:
import sip
extras.append(sip.__name__)
except ImportError:
sip = None

_setup(module, extras)
if hasattr(Qt, "_sip"):
Qt.QtCompat.wrapInstance = _wrapinstance
Qt.QtCompat.getCppPointer = _getcpppointer
Qt.QtCompat.delete = sip.delete

if hasattr(Qt, "_uic"):
Qt.QtCompat.loadUi = _loadUi

if hasattr(Qt, "_QtCore"):
Qt.__binding_version__ = Qt._QtCore.PYQT_VERSION_STR
Qt.__qt_version__ = Qt._QtCore.QT_VERSION_STR

if hasattr(Qt, "_QtWidgets"):
Qt.QtCompat.setSectionResizeMode = \
Qt._QtWidgets.QHeaderView.setSectionResizeMode

_reassign_misplaced_members("PyQt6")
_build_compatibility_members('PyQt6')


def _pyqt5():
"""Initialise PyQt5"""

Expand Down Expand Up @@ -1640,14 +1805,16 @@ def _cli(args):

def _install():
# Default order (customise order and content via QT_PREFERRED_BINDING)
default_order = ("PySide2", "PyQt5", "PySide", "PyQt4")
default_order = ("PySide6", "PyQt6", "PySide2", "PyQt5", "PySide", "PyQt4")
preferred_order = list(
b for b in QT_PREFERRED_BINDING.split(os.pathsep) if b
)

order = preferred_order or default_order

available = {
"PySide6": _pyside6,
"PyQt6": _pyqt6,
"PySide2": _pyside2,
"PyQt5": _pyqt5,
"PySide": _pyside,
Expand Down Expand Up @@ -1716,6 +1883,8 @@ def _install():
_install()

# Setup Binding Enum states
Qt.IsPySide6 = Qt.__binding__ == 'PySide6'
Qt.IsPyQt6 = Qt.__binding__ == 'PyQt6'
Qt.IsPySide2 = Qt.__binding__ == 'PySide2'
Qt.IsPyQt5 = Qt.__binding__ == 'PyQt5'
Qt.IsPySide = Qt.__binding__ == 'PySide'
Expand Down
12 changes: 6 additions & 6 deletions commands/maxCommands.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ def getObjectName(thing):
def getFaces(thing):
topo = []
with polyManager(thing) as obj:
for i in xrange(mxs.getNumFaces(obj)):
for i in range(mxs.getNumFaces(obj)):
fv = mxs.polyop.getFaceVerts(obj, i+1)
topo.append([x-1 for x in fv])
return topo

def getVerts(thing):
isMesh = thingIsMesh(thing)
op = mxs if isMesh else mxs.polyop
maxVerts = [op.getVert(thing, i + 1) for i in xrange(op.getNumVerts(thing))]
maxVerts = [op.getVert(thing, i + 1) for i in range(op.getNumVerts(thing))]
ret = np.array([(p.x, p.y, p.z) for p in maxVerts])

offset = np.array([(thing.pos.x, thing.pos.y, thing.pos.z)])
Expand All @@ -70,11 +70,11 @@ def getUVs(obj):
return None, None
faceCount = mxs.polyop.getNumMapFaces(thing, 1)

uvPoints = [mxs.polyop.getMapVert(thing, 1, i+1) for i in xrange(uvCount)]
uvPoints = [mxs.polyop.getMapVert(thing, 1, i+1) for i in range(uvCount)]
uvs = np.array([(i.x, i.y) for i in uvPoints])

uvFaces = []
for i in xrange(faceCount):
for i in range(faceCount):
uvf = mxs.polyop.getMapFace(thing, 1, i+1)
uvFaces.append([i-1 for i in uvf])

Expand All @@ -85,7 +85,7 @@ def createRawObject(name, faces, verts, uvFaces, uvs):
oldUndo = mxs.execute("set undo off")
try:
mm.name = name
for i in xrange(len(verts)):
for i in range(len(verts)):
mxs.meshop.setvert(mm, i+1, mxs.Point3(float(verts[i][0]), float(verts[i][1]), float(verts[i][2])))

mxs.convertTo(mm, mxs.PolyMeshObject)
Expand All @@ -98,7 +98,7 @@ def createRawObject(name, faces, verts, uvFaces, uvs):
mxs.polyop.setNumMapVerts(mm, 1, len(uvs), keep=False)
mxs.polyop.setNumMapFaces(mm, 1, len(uvFaces), keep=False)

for i in xrange(len(uvs)):
for i in range(len(uvs)):
mxs.polyop.setMapVert(mm, 1, i+1, mxs.Point3(float(uvs[i][0]), float(uvs[i][1]), 0.0))

mxs.convertTo(mm, mxs.PolyMeshObject)
Expand Down
8 changes: 4 additions & 4 deletions commands/mayaCommands.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def getFaces(thing):
vIdx = om.MIntArray()
for i in range(fnMesh.numPolygons()):
fnMesh.getPolygonVertices(i, vIdx)
face = [vIdx[j] for j in xrange(vIdx.length())]
face = [vIdx[j] for j in range(vIdx.length())]
faces.append(face)
return faces

Expand Down Expand Up @@ -82,15 +82,15 @@ def getUVs(thing):
for i in range(meshFn.numPolygons()):
meshFn.getPolygonVertices(i, vIdx)
uvFace = []
for j in xrange(vIdx.length()):
for j in range(vIdx.length()):
meshFn.getPolygonUVid(i, j, uvIdxPtr)
uvIdx = util.getInt(uvIdxPtr)
if uvIdx >= uArray.length() or uvIdx < 0:
uvIdx = 0
uvFace.append(uvIdx)
uvFaces.append(uvFace)

uvs = np.array([(uArray[i], vArray[i]) for i in xrange(uArray.length())])
uvs = np.array([(uArray[i], vArray[i]) for i in range(uArray.length())])
return uvs, uvFaces

def createRawObject(name, faces, verts, uvFaces, uvs):
Expand Down Expand Up @@ -186,7 +186,7 @@ def setAllVerts(obj, newVerts):

def selectAdjacentEdges(obj, centers):
sel = []
for k, g in groupby(enumerate(centers), lambda v: v[0] - v[1]):
for (k, g) in groupby(enumerate(centers), lambda i,x:i-x):
adj = list(map(itemgetter(1), g))
first, last = adj[0], adj[-1]
if first == last:
Expand Down
8 changes: 4 additions & 4 deletions commands/xsiCommands.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def _getUVs(thing):
if not texProps:
return None
texProp = texProps[0]
return zip(*texProp.Elements.Array)
return list(zip(*texProp.Elements.Array))

def getUVs(thing):
bigUvs = _getUVs(thing)
Expand All @@ -63,7 +63,7 @@ def getUVs(thing):

# Build the collapsed uv list
uvs = [None] * len(uvd)
for uv, idx in uvd.iteritems():
for uv, idx in uvd.items():
uvs[idx] = uv
uvs = np.array(uvs)

Expand Down Expand Up @@ -107,7 +107,7 @@ def createRawObject(name, faces, verts, uvFaces, uvs):
if uvs is not None:
uvws = [(i[0], i[1], 0.0) for i in uvs]
uvws = [uvws[i] for i in chain.from_iterable(map(reversed, uvFaces))]
uvws = zip(*uvws)
uvws = list(zip(*uvws))

return _createRawObject(name, faceArray, vertArray, uvws)

Expand Down Expand Up @@ -137,7 +137,7 @@ def cloneObject(obj, name):
vertArray, faceArray = obj.ActivePrimitive.Geometry.Get2()
uvws = _getUVs(obj)
if uvws is not None:
uvws = zip(*uvws)
uvws = list(zip(*uvws))
return _createRawObject(name, faceArray, vertArray, uvws=uvws)

def freezeObject(obj):
Expand Down
Loading