From c1e9675feed1f76e4c68fdd8e1af32d5915ce45b Mon Sep 17 00:00:00 2001 From: Yann Lanthony Date: Mon, 5 Feb 2018 15:10:24 +0100 Subject: [PATCH] [graph] expose Attribute.isDefault as a property --- meshroom/core/graph.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/meshroom/core/graph.py b/meshroom/core/graph.py index f94a83db..7516374b 100644 --- a/meshroom/core/graph.py +++ b/meshroom/core/graph.py @@ -258,7 +258,7 @@ class Attribute(BaseObject): return '"{}"'.format(self.value) return str(self.value) - def isDefault(self): + def _isDefault(self): return self._value == self.desc.value def getPrimitiveValue(self, exportDefault=True): @@ -273,6 +273,7 @@ class Attribute(BaseObject): isOutput = Property(bool, isOutput.fget, constant=True) isLinkChanged = Signal() isLink = Property(bool, isLink.fget, notify=isLinkChanged) + isDefault = Property(bool, _isDefault, notify=valueChanged) class ListAttribute(Attribute): @@ -289,8 +290,7 @@ class ListAttribute(Attribute): def _set_value(self, value): self._value.clear() - if value: - self.extend(value) + self.extend(value) self.requestGraphUpdate() def append(self, value): @@ -300,6 +300,7 @@ class ListAttribute(Attribute): values = value if isinstance(value, list) else [value] attrs = [attribute_factory(self.attributeDesc.elementDesc, v, self.isOutput, self.node, self) for v in values] self._value.insert(index, attrs) + self.valueChanged.emit() self._applyExpr() self.requestGraphUpdate() @@ -317,6 +318,7 @@ class ListAttribute(Attribute): self.node.graph.removeEdge(attr) # delete edge if the attribute is linked self._value.removeAt(index, count) self.requestGraphUpdate() + self.valueChanged.emit() def uid(self, uidIndex): uids = [] @@ -334,20 +336,21 @@ class ListAttribute(Attribute): def getExportValue(self): return [attr.getExportValue() for attr in self._value] - def isDefault(self): - return bool(self._value) + def _isDefault(self): + return len(self._value) == 0 def getPrimitiveValue(self, exportDefault=True): if exportDefault: return [attr.getPrimitiveValue(exportDefault=exportDefault) for attr in self._value] else: - return [attr.getPrimitiveValue(exportDefault=exportDefault) for attr in self._value if not attr.isDefault()] + return [attr.getPrimitiveValue(exportDefault=exportDefault) for attr in self._value if not attr.isDefault] def getValueStr(self): return self.attributeDesc.joinChar.join([v.getValueStr() for v in self._value]) # Override value property setter value = Property(Variant, Attribute._get_value, _set_value, notify=Attribute.valueChanged) + isDefault = Property(bool, _isDefault, notify=Attribute.valueChanged) class GroupAttribute(Attribute): @@ -391,21 +394,21 @@ class GroupAttribute(Attribute): def getExportValue(self): return {key: attr.getExportValue() for key, attr in self._value.objects.items()} - def isDefault(self): - return len(self._value) == 0 + def _isDefault(self): + return all(v.isDefault for v in self._value) def getPrimitiveValue(self, exportDefault=True): if exportDefault: return {name: attr.getPrimitiveValue(exportDefault=exportDefault) for name, attr in self._value.items()} else: - return {name: attr.getPrimitiveValue(exportDefault=exportDefault) for name, attr in self._value.items() if not attr.isDefault()} + return {name: attr.getPrimitiveValue(exportDefault=exportDefault) for name, attr in self._value.items() if not attr.isDefault} def getValueStr(self): return self.attributeDesc.joinChar.join([v.getValueStr() for v in self._value.objects.values()]) # Override value property value = Property(Variant, Attribute._get_value, _set_value, notify=Attribute.valueChanged) - + isDefault = Property(bool, _isDefault, notify=Attribute.valueChanged) class Edge(BaseObject):