| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | # gonna start putting the UI operators in here so# that the nodegroup operators file is more focusedimport bpyfrom bpy.types import Operatorfrom .utilities import (prRed, prGreen, prPurple, prWhite,                              prOrange,                              wrapRed, wrapGreen, wrapPurple, wrapWhite,                              wrapOrange,)def TellClasses():    return [        ColorPalleteAddSocket,        ColorPalleteRemoveSocket,    ]class ColorPalleteAddSocket(Operator):    """Add a Color Set socket to the node"""    bl_idname = "mantis.color_pallete_socket_add"    bl_label = "Add Color Set"    bl_options = {'REGISTER', 'UNDO'}    tree_invoked : bpy.props.StringProperty(options ={'HIDDEN'})    node_invoked : bpy.props.StringProperty(options ={'HIDDEN'})    @classmethod    def poll(cls, context):        return True        def execute(self, context):        n = bpy.data.node_groups[self.tree_invoked].nodes[self.node_invoked]        #name them uniquely        number=0        for o in n.outputs:            if int(o.name[-3:]) == number:                number = int(o.name[-3:]) + 1            else: # my intention is to use the first number that isn't used                break # so break here because we have reached the end or a 'gap'        n.outputs.new("ColorSetSocket", "Color Set."+str(number).zfill(3))        return {'FINISHED'}class ColorPalleteRemoveSocket(Operator):    """Remove a Color Set socket from the node"""    bl_idname = "mantis.color_pallete_socket_remove"    bl_label = "X"    bl_options = {'REGISTER', 'UNDO'}    tree_invoked : bpy.props.StringProperty(options   = {'HIDDEN'})    node_invoked : bpy.props.StringProperty(options   = {'HIDDEN'})    socket_invoked : bpy.props.StringProperty(options = {'HIDDEN'})    @classmethod    def poll(cls, context):        return True        def execute(self, context):        n = bpy.data.node_groups[self.tree_invoked].nodes[self.node_invoked]        # the name doesn't matter, will probably be Color Set.001 or something instead        for s in n.outputs:            if s.identifier == self.socket_invoked:                break        n.outputs.remove(s)        return {'FINISHED'}
 |