Skip to content

Commit e025862

Browse files
gregoire-dlcbentejac
authored andcommitted
[core] attribute: Remove userName and userColor setters and connect signals
1 parent 20f4f5f commit e025862

File tree

1 file changed

+13
-21
lines changed

1 file changed

+13
-21
lines changed

meshroom/core/attribute.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,10 @@ def __init__(self, node, attributeDesc: desc.Shape, isOutput: bool, root=None, p
11861186
# Connect geometry attribute valueChanged to emit geometryChanged signal.
11871187
def _initValue(self):
11881188
super()._initValue()
1189+
# Using Attribute.valueChanged for the userName, userColor, geometry properties results in a segmentation fault.
1190+
# As a workaround, we manually connect valueChanged to shapeChanged or geometryChanged.
1191+
self.value.get("userName").valueChanged.connect(self._onShapeChanged)
1192+
self.value.get("userColor").valueChanged.connect(self._onShapeChanged)
11891193
self.geometry.valueChanged.connect(self._onGeometryChanged)
11901194

11911195
# Override
@@ -1230,32 +1234,20 @@ def _getUserName(self) -> str:
12301234
"""
12311235
Return the shape attribute user name for display.
12321236
"""
1233-
if self.isLink:
1234-
return self.inputLink.value.get("userName").value
1235-
return self._value.get("userName").value
1236-
1237-
@raiseIfLink
1238-
def _setUserName(self, color: str):
1239-
"""
1240-
Set the shape attribute user name for display.
1241-
"""
1242-
self._value.get("userName").value = color
1243-
self.shapeChanged.emit()
1237+
return self.value.get("userName").value
12441238

12451239
def _getUserColor(self) -> str:
12461240
"""
12471241
Return the shape attribute user color for display.
12481242
"""
1249-
if self.isLink:
1250-
return self.inputLink.value.get("userColor").value
1251-
return self._value.get("userColor").value
1243+
return self.value.get("userColor").value
12521244

1253-
@raiseIfLink
1254-
def _setUserColor(self, color: str):
1255-
"""
1256-
Set the shape attribute user color for display.
1245+
@Slot()
1246+
def _onShapeChanged(self):
1247+
"""
1248+
Emit shapeChanged signal.
1249+
Used when shape userName or userColor value changed.
12571250
"""
1258-
self._value.get("userColor").value = color
12591251
self.shapeChanged.emit()
12601252

12611253
@Slot()
@@ -1274,9 +1266,9 @@ def _onGeometryChanged(self):
12741266
# Whether the shape is displayable.
12751267
isVisible = Property(bool, _getVisible, _setVisible, notify=shapeChanged)
12761268
# The shape user name for display.
1277-
userName = Property(str, _getUserName, _setUserName, notify=shapeChanged)
1269+
userName = Property(str, _getUserName, notify=shapeChanged)
12781270
# The shape user color for display.
1279-
userColor = Property(str, _getUserColor, _setUserColor, notify=shapeChanged)
1271+
userColor = Property(str, _getUserColor, notify=shapeChanged)
12801272
# The shape geometry group attribute.
12811273
geometry = Property(Variant, lambda self: self.value.get("geometry"), notify=geometryChanged)
12821274
# Override hasDisplayableShape property.

0 commit comments

Comments
 (0)