def add_custom_widget(self, widget, widget_type=NODE_PROP_QLABEL, tab=None): """ Add a custom node widget into the node. see example :ref:`Embedding Custom Widgets`. Note: The ``value_changed`` signal from the added node widget is wired up to the :meth:`NodeObject.set_property` function. Args: widget (NodeBaseWidget): node widget class object. widget_type: widget flag to display in the :class:`NodeGraphQt.PropertiesBinWidget` (default: QLabel). tab (str): name of the widget tab to display in. """ if not isinstance(widget, NodeBaseWidget): raise NodeWidgetError( '\'widget\' must be an instance of a NodeBaseWidget') self.create_property(widget.get_name(), widget.get_value(), widget_type=widget_type, tab=tab) widget.value_changed.connect(lambda k, v: self.set_property(k, v)) widget._node = self self.view.add_widget(widget)
def set_custom_widget(self, widget): """ Set the custom QWidget used in the node. Args: widget (QtWidgets.QWidget): custom. """ if self.widget(): raise NodeWidgetError('Custom node widget already set.') group = _NodeGroupBox(self._label) group.add_node_widget(widget) self.setWidget(group)
def set_name(self, name): """ Set the property name for the parent node. Important: The property name must be set before the widget is added to the node. Args: name (str): property name. """ if not name: return if self.node: raise NodeWidgetError( 'Can\'t set property name widget already added to a Node') self._name = name
def get_widget(self, name): widget = self._widgets.get(name) if widget: return widget raise NodeWidgetError('node has no widget "{}"'.format(name))
def add_widget(self, widget): if isinstance(widget, NodeBaseWidget): self._widgets[widget.name] = widget else: raise NodeWidgetError('{} is not an instance of a node widget.')