Workaround for OverflowError
OverflowError results from Python `long` not converting to `QVariant` correctly. Pass TAG_Long values through Qt models as `str` (eww).
This commit is contained in:
parent
6ccd462333
commit
ffcbc3d52c
@ -24,7 +24,9 @@ class LongLongValidator(QtGui.QValidator):
|
|||||||
def validate(self, input, pos):
|
def validate(self, input, pos):
|
||||||
matches = longlongPattern.match(input)
|
matches = longlongPattern.match(input)
|
||||||
if matches is not None:
|
if matches is not None:
|
||||||
return QtGui.QValidator.Acceptable
|
value = long(input)
|
||||||
|
if (-1<<63) < value < (1<<63) - 1:
|
||||||
|
return QtGui.QValidator.Acceptable
|
||||||
return QtGui.QValidator.Invalid
|
return QtGui.QValidator.Invalid
|
||||||
|
|
||||||
class LongLongLineEdit(QtGui.QLineEdit):
|
class LongLongLineEdit(QtGui.QLineEdit):
|
||||||
@ -33,10 +35,10 @@ class LongLongLineEdit(QtGui.QLineEdit):
|
|||||||
self.setValidator(LongLongValidator())
|
self.setValidator(LongLongValidator())
|
||||||
|
|
||||||
def getValue(self):
|
def getValue(self):
|
||||||
return long(self.text())
|
return self.text()
|
||||||
|
|
||||||
def setValue(self, val):
|
def setValue(self, val):
|
||||||
self.setText(str(val))
|
self.setText(val)
|
||||||
|
|
||||||
value = QtCore.Property(long, getValue, setValue, user=True)
|
value = QtCore.Property(long, getValue, setValue, user=True)
|
||||||
|
|
||||||
|
@ -259,12 +259,17 @@ class NBTTreeItem(object):
|
|||||||
if size > maxsize:
|
if size > maxsize:
|
||||||
hexdata += "..."
|
hexdata += "..."
|
||||||
return "(size=%d) %s" % (size, hexdata)
|
return "(size=%d) %s" % (size, hexdata)
|
||||||
|
if self.tag.tagID == nbt.ID_LONG:
|
||||||
|
# Workaround for OverflowError on Linux
|
||||||
|
return str(self.tag.value)
|
||||||
return self.tag.value
|
return self.tag.value
|
||||||
|
|
||||||
def parent(self):
|
def parent(self):
|
||||||
return self.parentItem
|
return self.parentItem
|
||||||
|
|
||||||
def setValue(self, value):
|
def setValue(self, value):
|
||||||
|
if self.tag.tagID == nbt.ID_LONG:
|
||||||
|
value = long(value)
|
||||||
self.tag.value = value
|
self.tag.value = value
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user