Fix Vector.__init__ for Qt5 + cleanup

This commit is contained in:
Luke Campagnola 2020-07-13 13:10:58 -07:00
parent 78702eea8b
commit 0df7cbcd06
1 changed files with 22 additions and 11 deletions

View File

@ -14,22 +14,33 @@ class Vector(QtGui.QVector3D):
def __init__(self, *args):
if len(args) == 1:
if isinstance(args[0], QtCore.QSizeF):
QtGui.QVector3D.__init__(self, float(args[0].width()), float(args[0].height()), 0)
return
x = float(args[0].width())
y = float(args[0].height())
z = 0
elif isinstance(args[0], QtCore.QPoint) or isinstance(args[0], QtCore.QPointF):
QtGui.QVector3D.__init__(self, float(args[0].x()), float(args[0].y()), 0)
x = float(args[0].x())
y = float(args[0].y())
z = 0
elif isinstance(args[0], QtGui.QVector3D):
x = args[0].x()
y = args[0].y()
z = args[0].z()
elif hasattr(args[0], '__getitem__'):
vals = list(args[0])
if len(vals) == 2:
vals.append(0)
if len(vals) != 3:
raise Exception('Cannot init Vector with sequence of length %d' % len(args[0]))
QtGui.QVector3D.__init__(self, *vals)
return
x, y = vals
z = 0
elif len(vals) == 3:
x, y, z = vals
else:
raise ValueError('Cannot init Vector with sequence of length %d' % len(args[0]))
elif len(args) == 2:
QtGui.QVector3D.__init__(self, args[0], args[1], 0)
return
QtGui.QVector3D.__init__(self, *args)
x, y = args
z = 0
else:
x, y, z = args # Could raise ValueError
QtGui.QVector3D.__init__(self, x, y, z)
def __len__(self):
return 3