CURA-4972 Moved validation to SettingOverrideDecorator.py

**The diagnosis:**
The issue arrises from the fact that while the original object is subscribed to be validated, that subscription is only created by setting it as a settings override object. A clone of that object, while still a settings-override object, never gets subscribed because it's not explicitly set with the tool.

**The solution (?):**
I moved all the validation stuff over to SettingOverrideDecorator.py, and use its onSettingChanged() function to trigger the validation. Unfortunately, I can't use the timer because of some limitation with QTTimer and threads. So it's _a bit laggy in some places, and I'd be open to tips about how to fix this. It does work reliably though.
This commit is contained in:
Ian Paschal 2018-03-02 17:05:58 +01:00
parent 1743954ef7
commit 1f403f815d
2 changed files with 26 additions and 6 deletions

View file

@ -44,7 +44,6 @@ class PerObjectSettingsTool(Tool):
self._error_check_timer.setSingleShot(True)
self._error_check_timer.timeout.connect(self._updateStacksHaveErrors)
def event(self, event):
super().event(event)
if event.type == Event.MousePressEvent and self._controller.getToolsEnabled():
@ -156,10 +155,12 @@ class PerObjectSettingsTool(Tool):
def _onPropertyChanged(self, key: str, property_name: str) -> None:
if property_name == "validationState":
self._error_check_timer.start()
# self._error_check_timer.start()
return
def _updateStacksHaveErrors(self) -> None:
self._checkStacksHaveErrors()
return
# self._checkStacksHaveErrors()
def _checkStacksHaveErrors(self):
@ -180,6 +181,7 @@ class PerObjectSettingsTool(Tool):
def _checkStackForErrors(self, stack):
print("checking for errors")
if stack is None:
return False