mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-06-02 02:42:05 +02:00
[core] Node: add alive property for QML
This commit is contained in:
parent
b79795a3c9
commit
fe91d07a6a
2 changed files with 19 additions and 1 deletions
|
@ -223,8 +223,11 @@ class Graph(BaseObject):
|
||||||
def clear(self):
|
def clear(self):
|
||||||
self.header.clear()
|
self.header.clear()
|
||||||
self._compatibilityNodes.clear()
|
self._compatibilityNodes.clear()
|
||||||
self._nodes.clear()
|
|
||||||
self._edges.clear()
|
self._edges.clear()
|
||||||
|
# Tell QML nodes are going to be deleted
|
||||||
|
for node in self._nodes:
|
||||||
|
node.alive = False
|
||||||
|
self._nodes.clear()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def fileFeatures(self):
|
def fileFeatures(self):
|
||||||
|
@ -437,6 +440,7 @@ class Graph(BaseObject):
|
||||||
self.removeEdge(edge.dst)
|
self.removeEdge(edge.dst)
|
||||||
inEdges[edge.dst.getFullName()] = edge.src.getFullName()
|
inEdges[edge.dst.getFullName()] = edge.src.getFullName()
|
||||||
|
|
||||||
|
node.alive = False
|
||||||
self._nodes.remove(node)
|
self._nodes.remove(node)
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
|
|
|
@ -442,6 +442,7 @@ class BaseNode(BaseObject):
|
||||||
self._position = position or Position()
|
self._position = position or Position()
|
||||||
self._attributes = DictModel(keyAttrName='name', parent=self)
|
self._attributes = DictModel(keyAttrName='name', parent=self)
|
||||||
self.attributesPerUid = defaultdict(set)
|
self.attributesPerUid = defaultdict(set)
|
||||||
|
self._alive = True # for QML side to know if the node can be used or is going to be deleted
|
||||||
|
|
||||||
def __getattr__(self, k):
|
def __getattr__(self, k):
|
||||||
try:
|
try:
|
||||||
|
@ -526,6 +527,17 @@ class BaseNode(BaseObject):
|
||||||
self._position = value
|
self._position = value
|
||||||
self.positionChanged.emit()
|
self.positionChanged.emit()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def alive(self):
|
||||||
|
return self._alive
|
||||||
|
|
||||||
|
@alive.setter
|
||||||
|
def alive(self, value):
|
||||||
|
if self._alive == value:
|
||||||
|
return
|
||||||
|
self._alive = value
|
||||||
|
self.aliveChanged.emit()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def depth(self):
|
def depth(self):
|
||||||
return self.graph.getDepth(self)
|
return self.graph.getDepth(self)
|
||||||
|
@ -792,6 +804,8 @@ class BaseNode(BaseObject):
|
||||||
globalStatusChanged = Signal()
|
globalStatusChanged = Signal()
|
||||||
globalStatus = Property(str, lambda self: self.getGlobalStatus().name, notify=globalStatusChanged)
|
globalStatus = Property(str, lambda self: self.getGlobalStatus().name, notify=globalStatusChanged)
|
||||||
isComputed = Property(bool, _isComputed, notify=globalStatusChanged)
|
isComputed = Property(bool, _isComputed, notify=globalStatusChanged)
|
||||||
|
aliveChanged = Signal()
|
||||||
|
alive = Property(bool, alive.fget, alive.fset, notify=aliveChanged)
|
||||||
|
|
||||||
|
|
||||||
class Node(BaseNode):
|
class Node(BaseNode):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue