Ejemplo n.º 1
0
    def add_property(self,
                     name,
                     value,
                     items=None,
                     range=None,
                     widget_type=NODE_PROP,
                     tab='Properties'):
        """
        add custom property.

        Args:
            name (str): name of the property.
            value (object): data.
            items (list[str]): items used by widget type NODE_PROP_QCOMBO.
            range (tuple)): min, max values used by NODE_PROP_SLIDER.
            widget_type (int): widget type flag.
            tab (str): widget tab name.
        """
        tab = tab or 'Properties'

        if name in self.properties.keys():
            raise NodePropertyError(
                '"{}" reserved for default property.'.format(name))
        if name in self._custom_prop.keys():
            raise NodePropertyError(
                '"{}" property already exists.'.format(name))

        self._custom_prop[name] = value

        if self._graph_model is None:
            self._TEMP_property_widget_types[name] = widget_type
            self._TEMP_property_attrs[name] = {'tab': tab}
            if items:
                self._TEMP_property_attrs[name]['items'] = items
            if range:
                self._TEMP_property_attrs[name]['range'] = range
        else:
            attrs = {
                self.type_: {
                    name: {
                        'widget_type': widget_type,
                        'tab': tab
                    }
                }
            }
            if items:
                attrs[self.type_][name]['items'] = items
            if range:
                attrs[self.type_][name]['range'] = range
            self._graph_model.set_node_common_properties(attrs)
Ejemplo n.º 2
0
 def set_property(self, name, value):
     if name in self.properties.keys():
         setattr(self, name, value)
     elif name in self._custom_prop.keys():
         self._custom_prop[name] = value
     else:
         raise NodePropertyError('No property "{}"'.format(name))