def mock_error_owwidget(node, message): """ Create a mock OWWidget instance for `node`. Parameters ---------- node : SchemeNode message : str """ from Orange.widgets import widget, settings class DummyOWWidget(widget.OWWidget): """ Dummy OWWidget used to report import/init errors in the canvas. """ name = "Placeholder" # Fake settings handler that preserves the settings class DummySettingsHandler(settings.SettingsHandler): def pack_data(self, widget): return getattr(widget, "_settings", {}) def initialize(self, widget, data=None): widget._settings = data settings.SettingsHandler.initialize(self, widget, None) settingsHandler = DummySettingsHandler() want_main_area = False def __init__(self, parent=None): super().__init__(parent) self.errorLabel = QLabel( textInteractionFlags=Qt.TextSelectableByMouse, wordWrap=True, ) self.errorLabel.setSizePolicy( QSizePolicy.Expanding, QSizePolicy.Expanding ) self.controlArea.layout().addWidget(self.errorLabel) def setErrorMessage(self, message): self.errorLabel.setText(message) self.error(0, message) widget = DummyOWWidget() widget._settings = node.properties widget.widgetInfo = node.description for link in node.description.inputs: handler = link.handler if handler.startswith("self."): _, handler = handler.split(".", 1) setattr(widget, handler, lambda *args: None) widget.setErrorMessage(message) return widget
def mock_error_owwidget(node, message): """ Create a mock OWWidget instance for `node`. Parameters ---------- node : SchemeNode message : str """ from Orange.widgets import widget, settings class DummyOWWidget(widget.OWWidget): """ Dummy OWWidget used to report import/init errors in the canvas. """ name = "Placeholder" # Fake settings handler that preserves the settings class DummySettingsHandler(settings.SettingsHandler): def pack_data(self, widget): return getattr(widget, "_settings", {}) def initialize(self, widget, data=None): widget._settings = data settings.SettingsHandler.initialize(self, widget, None) settingsHandler = DummySettingsHandler() want_main_area = False def __init__(self, parent=None): super().__init__(parent) self.errorLabel = QLabel( textInteractionFlags=Qt.TextSelectableByMouse, wordWrap=True, ) self.errorLabel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.controlArea.layout().addWidget(self.errorLabel) def setErrorMessage(self, message): self.errorLabel.setText(message) self.error(0, message) widget = DummyOWWidget() widget._settings = node.properties widget.widgetInfo = node.description for link in node.description.inputs: handler = link.handler if handler.startswith("self."): _, handler = handler.split(".", 1) setattr(widget, handler, lambda *args: None) widget.setErrorMessage(message) return widget