def add_new_color_widget(self):
        """Create and add new color widget from current color.

        That is, the color of the current widget is used as
        a basis to generate a new one.
        """
        ### retrieve color of the current widget
        current_color = self.current_widget.color

        ### retrieve the name of a color property from
        ### the option menu

        property_ = self.colors_editor.color_add_option_menu.value

        ### obtain a new color from the current one by
        ### randomizing the property whose name we just
        ### retrieved
        new_color = random_color_from_existing(current_color, property_)

        ### instantiate and insert the new widget

        ## instantiate
        new_widget = Color2D(*COLOR_WIDGET_SIZE, new_color)

        ## insert the new widget after the current color
        ## widget

        self.widgets.insert(self.colors_editor.current_color_index + 1, new_widget)

        ### finally, perform setups needed when changing
        ### the number of existing widgets
        self.perform_widget_quantity_setups()
Create and add new color widget from current color.

        That is, the color of the current widget is used as
        a basis to generate a new one.
        
nodezator/colorsman/editor/panel/colorsop.py