Fix ObjectInspector's reload not working when a missing object reappears
This commit is contained in:
parent
f57196537b
commit
883907ace5
@ -40,16 +40,17 @@ class ObjectInspector(QtGui.QFrame):
|
|||||||
self.editorButton,
|
self.editorButton,
|
||||||
self.backButton,
|
self.backButton,
|
||||||
self.reloadButton), 0),
|
self.reloadButton), 0),
|
||||||
(Row(QtGui.QLabel("Object: "),
|
(Row(QtGui.QLabel("Object: "),
|
||||||
(self.inputBox, 1)), 0),
|
(self.inputBox, 1)), 0),
|
||||||
(self.treeWidget, 5)))
|
(self.treeWidget, 5)))
|
||||||
|
|
||||||
self.inputBox.textChanged.connect(self.textDidChange)
|
self.inputBox.textChanged.connect(self.textDidChange)
|
||||||
self.forwardHistory = []
|
self.forwardHistory = []
|
||||||
objectName = settings.Settings().value("objectinspector/objectname", self.objectName)
|
objectName = settings.Settings().value("objectinspector/objectname", self.objectName)
|
||||||
self.history = settings.Settings().jsonValue("objectinspector/history", [objectName])
|
self.history = settings.Settings().jsonValue("objectinspector/history", [objectName])
|
||||||
self.goToObject(objectName)
|
|
||||||
self.historyLimit = 20
|
self.historyLimit = 20
|
||||||
|
|
||||||
|
self.goToObject(objectName)
|
||||||
def close(self, *args, **kwargs):
|
def close(self, *args, **kwargs):
|
||||||
super(ObjectInspector, self).close(*args, **kwargs)
|
super(ObjectInspector, self).close(*args, **kwargs)
|
||||||
settings.Settings().setValue("objectinspector/treewidget/geometry", self.treeWidget.saveGeometry())
|
settings.Settings().setValue("objectinspector/treewidget/geometry", self.treeWidget.saveGeometry())
|
||||||
@ -88,27 +89,29 @@ class ObjectInspector(QtGui.QFrame):
|
|||||||
QtCore.QTimer.singleShot(1000, lambda: (self._goToObject(text, history))) #try again later
|
QtCore.QTimer.singleShot(1000, lambda: (self._goToObject(text, history))) #try again later
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
self.objectName = text
|
||||||
obj = eval(text)
|
self.updateTree()
|
||||||
|
if history:
|
||||||
|
if self.history[-1] != self.objectName:
|
||||||
|
log.info("Adding %s to history", self.objectName)
|
||||||
|
self.history.append(self.objectName)
|
||||||
|
self.history = self.history[:self.historyLimit]
|
||||||
|
self.forwardHistory = []
|
||||||
|
settings.Settings().setJsonValue("objectinspector/history", self.history)
|
||||||
|
|
||||||
|
settings.Settings().setValue("objectinspector/objectname", text)
|
||||||
|
|
||||||
|
def getObject(self):
|
||||||
|
from mcedit2 import editorapp
|
||||||
|
try:
|
||||||
|
obj = eval(self.objectName, {'editorapp': editorapp}, {})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
obj = e
|
obj = e
|
||||||
history = False
|
|
||||||
|
|
||||||
if obj is not None:
|
if obj is None:
|
||||||
if history:
|
log.info("%s did not resolve to an object.", self.objectName)
|
||||||
if self.history[-1] != self.objectName:
|
|
||||||
log.info("Adding %s to history", self.objectName)
|
|
||||||
self.history.append(self.objectName)
|
|
||||||
self.history = self.history[:self.historyLimit]
|
|
||||||
self.forwardHistory = []
|
|
||||||
settings.Settings().setJsonValue("objectinspector/history", self.history)
|
|
||||||
|
|
||||||
self.objectName = text
|
return obj
|
||||||
self.object = obj
|
|
||||||
settings.Settings().setValue("objectinspector/objectname", text)
|
|
||||||
else:
|
|
||||||
log.info("%s did not resolve to an object.", text)
|
|
||||||
|
|
||||||
def updateTree(self):
|
def updateTree(self):
|
||||||
def addObjectDict(obj, node, levels):
|
def addObjectDict(obj, node, levels):
|
||||||
@ -136,7 +139,7 @@ class ObjectInspector(QtGui.QFrame):
|
|||||||
collectionLimit = 20
|
collectionLimit = 20
|
||||||
tw = self.treeWidget
|
tw = self.treeWidget
|
||||||
tw.clear()
|
tw.clear()
|
||||||
obj = self.object
|
obj = self.getObject()
|
||||||
if obj is None:
|
if obj is None:
|
||||||
rootNode = QtGui.QTreeWidgetItem([self.objectName, "[dead]", "Dead object"])
|
rootNode = QtGui.QTreeWidgetItem([self.objectName, "[dead]", "Dead object"])
|
||||||
tw.addTopLevelItem(rootNode)
|
tw.addTopLevelItem(rootNode)
|
||||||
@ -156,22 +159,6 @@ class ObjectInspector(QtGui.QFrame):
|
|||||||
|
|
||||||
rootObjectName = "editorapp.MCEditApp.app"
|
rootObjectName = "editorapp.MCEditApp.app"
|
||||||
objectName = rootObjectName
|
objectName = rootObjectName
|
||||||
_object = None
|
|
||||||
|
|
||||||
@property
|
|
||||||
def object(self):
|
|
||||||
if self._object is None:
|
|
||||||
from mcedit2 import editorapp
|
|
||||||
self._object = weakref.ref(editorapp.MCEditApp.app)
|
|
||||||
return self._object()
|
|
||||||
|
|
||||||
@object.setter
|
|
||||||
def object(self, value):
|
|
||||||
try:
|
|
||||||
self._object = weakref.ref(value)
|
|
||||||
except TypeError:
|
|
||||||
self._object = lambda: value
|
|
||||||
self.updateTree()
|
|
||||||
|
|
||||||
def itemDoubleClicked(self, item):
|
def itemDoubleClicked(self, item):
|
||||||
self.goToObject(item.objectName)
|
self.goToObject(item.objectName)
|
||||||
|
Reference in New Issue
Block a user