コード例 #1
0
    def draw(self, context, layout, node, text):

        # just handle custom draw..be it input or output.
        # hasattr may be excessive here
        if hasattr(self, 'custom_draw') and self.custom_draw:
            # does the node have the draw function referred to by
            # the string stored in socket's custom_draw attribute
            if hasattr(node, self.custom_draw):
                getattr(node, self.custom_draw)(self, context, layout)
                return

        if self.bl_idname == 'SvStringsSocket':
            if node.bl_idname in {'SvScriptNodeLite', 'SvScriptNode'}:
                if not self.is_output and not self.is_linked and self.prop_type:
                    layout.prop(node,
                                self.prop_type,
                                index=self.prop_index,
                                text=self.name)
                    return
            elif node.bl_idname in {'SvSNFunctor'} and not self.is_output:
                if not self.is_linked:
                    layout.prop(node, self.get_prop_name(), text=self.name)
                    return

        if self.is_linked:  # linked INPUT or OUTPUT
            t = text
            if not self.is_output:
                if self.get_prop_name():
                    prop = node.rna_type.properties.get(
                        self.get_prop_name(), None)
                    t = prop.name if prop else text
            info_text = t + '. ' + SvGetSocketInfo(self)
            info_text += self.extra_info
            layout.label(text=info_text)

        elif self.is_output:  # unlinked OUTPUT
            layout.label(text=text)

        else:  # unlinked INPUT
            if self.get_prop_name():  # has property
                self.draw_expander_template(context,
                                            layout,
                                            prop_origin=node,
                                            prop_name=self.get_prop_name())

            elif self.use_prop:  # no property but use default prop
                self.draw_expander_template(context, layout, prop_origin=self)

            elif self.quicklink_func_name:
                try:
                    getattr(node, self.quicklink_func_name)(self, context,
                                                            layout, node)
                except Exception as e:
                    self.draw_quick_link(context, layout, node)
                layout.label(text=text)

            else:  # no property and not use default prop
                self.draw_quick_link(context, layout, node)
                layout.label(text=text)
コード例 #2
0
    def draw_texture_socket(self, socket, context, layout):
        if not socket.is_linked:
            c = layout.split(factor=0.3, align=False)

            c.label(text=socket.name+ ':')
            c.prop_search(self, "name_texture", bpy.data, 'textures', text="")
        else:
            layout.label(text=socket.name+ '. ' + SvGetSocketInfo(socket))
コード例 #3
0
ファイル: node_tree.py プロジェクト: bryant1410/sverchok
 def draw(self, context, layout, node, text):
     if self.is_linked:
         draw_string = text + '. ' + SvGetSocketInfo(self)
         if is_vector_to_matrix(self):
             draw_string += (" (" + str(self.num_matrices) + ")")
         layout.label(draw_string)
     else:
         layout.label(text)
コード例 #4
0
 def draw(self, context, layout, node, text):
     if self.custom_draw:
         super().draw(context, layout, node, text)
     elif not self.is_output and not self.is_linked:
         layout.prop_search(self, 'object_ref', bpy.data, 'objects', text=self.name)
     elif self.is_linked:
         layout.label(text=text + '. ' + SvGetSocketInfo(self))
     else:
         layout.label(text=text)
コード例 #5
0
 def draw(self, context, layout, node, text):
     if not self.is_output and not self.is_linked:
         if self.prop_name:
             layout.template_component_menu(node, self.prop_name, name=self.name)
         elif self.use_prop:
             layout.template_component_menu(self, "prop", name=self.name)
         else:
             layout.label(text)
     elif self.is_linked:
         layout.label(text + '. ' + SvGetSocketInfo(self))
     else:
         layout.label(text)
コード例 #6
0
ファイル: sockets.py プロジェクト: ppaawweeuu/sverchok
 def update_objects_number(self):
     """
     Should be called each time after process method of the socket owner
     It will update number of objects to show in socket labels
     """
     try:
         if self.is_output:
             objects_info = SvGetSocketInfo(self)
             self.objects_number = int(objects_info) if objects_info else 0
         else:
             data = self.sv_get(deepcopy=False, default=[])
             self.objects_number = len(data) if data else 0
     except Exception as e:
         warning(
             f"Socket='{self.name}' of node='{self.node.name}' can't update number of objects on the label. "
             f"Cause is '{e}'")
         self.objects_number = 0
コード例 #7
0
ファイル: node_tree.py プロジェクト: hsab/sverchok
    def draw(self, context, layout, node, text):
        if self.prop_name:
            prop = node.rna_type.properties.get(self.prop_name, None)
            t = prop.name if prop else text
        else:
            t = text

        if not self.is_output and not self.is_linked:
            if self.prop_name and not self.prop_type:

                layout.prop(node, self.prop_name)

            elif self.prop_type:
                layout.prop(node, self.prop_type, index=self.prop_index, text=self.name)
            else:
                layout.label(t)
        elif self.is_linked:
            layout.label(t + '. ' + SvGetSocketInfo(self))
        else:
            layout.label(t)
コード例 #8
0
ファイル: viewer_2d.py プロジェクト: hydrogen2oxygen/sverchok
    def draw_color_socket(self, socket, context, layout):
        socket_info = socket_dict[socket.prop_name]
        layout.prop(self, socket_info[0], text="", icon=socket_info[1])
        layout.prop(self, socket_info[2], text="", icon='COLOR')
        display_color = not socket.is_linked
        draw_name = True
        if len(socket_info) < 5:
            layout.prop(self, socket_info[3], text="", icon='VPAINT_HLT')

        else:
            layout.prop(self, socket_info[3], text="", icon='MOD_NOISE')
            if socket_info[3] in self and self[socket_info[3]]:
                layout.prop(self, socket_info[4], text="Seed")
                draw_name = False

        if socket_info[3] in self:
            display_color = display_color and not self[socket_info[3]]

        if display_color:
            layout.prop(self, socket.prop_name, text="")
        else:
            if draw_name:
                layout.label(text=socket.name + '. ' + SvGetSocketInfo(socket))
コード例 #9
0
 def get_socket_info(self):
     """ Return Number of encapsulated data lists, or empty str  """
     try:
         return SvGetSocketInfo(self)
     except:
         return ''
コード例 #10
0
 def SvDGLTrainClassifier_draw_socket(self, socket, context, layout):
     row = layout.row()
     split = row.split(factor=0.6)
     split.row().label(text=socket.name + '. ' + SvGetSocketInfo(socket))
     split.row().prop(self, socket.prop_name, text="")